import os from PIL import Image import cv2 import anthropic import requests from dotenv import load_dotenv import pytesseract import tempfile import ssl import instaloader import pandas as pd from sklearn.feature_extraction.text import TfidfVectorizer import numpy as np from requests.auth import HTTPBasicAuth import mimetypes import os from PIL import Image import cv2 import anthropic from wordpress_xmlrpc import Client, WordPressPost from wordpress_xmlrpc.methods.posts import NewPost from wordpress_xmlrpc.compat import xmlrpc_client from dotenv import load_dotenv import pytesseract import tempfile import base64 from instascrape import Profile, Post import requests from io import BytesIO import time import json import requests import traceback from urllib.parse import urlparse import os import openpyxl from openai import OpenAI import ast import kw_search import os from PIL import Image import os from datetime import datetime, timedelta from urllib.parse import urlparse import json import delete_files from post_news import get_news_articles, generate_and_publish_news_article import unicodedata from eventregistry import * from tqdm import tqdm from get_article_obj import get_article_obj import sys from get_article_obj import delete_first_element # sys.argv[0] is the script name # Define a function to create schema for each post def create_schema(title, media_url_arr, blog_url): # Extract image URLs image_urls = list(media_url_arr) ## make sure it is a list # Organizatio details organization = ( { "@type": "Organization", "name": "Farmonaut", "url": "https://farmonaut.com", "sameAs": [ "https://www.facebook.com/farmonaut", "https://twitter.com/farmonaut", "https://www.linkedin.com/company/farmonaut", "https://www.instagram.com/farmonaut", # Add other social media links as necessary ], }, ) breadcrumbs = create_breadcrumbs_fromURL(urlparse(blog_url)) return { "@context": "https://schema.org", "@type": "Article", "headline": title, "image": image_urls, "author": organization, "breadcrumb": breadcrumbs, } def create_breadcrumbs_fromURL(parsed_url): # Split the path into segments path_segments = parsed_url.path.strip("/").split("/") # Split by '/' # Construct breadcrumb items breadcrumbs = {"@type": "BreadcrumbList", "itemListElement": []} # Add the home item breadcrumbs["itemListElement"].append( { "@type": "ListItem", "position": 1, "name": "Home", "item": f"{parsed_url.scheme}://{parsed_url.netloc}/", # Base URL } ) # Add items for each segment in the path for position, segment in enumerate(path_segments, start=2): # Start at position 2 breadcrumb_item = { "@type": "ListItem", "position": position, "name": segment.replace( "-", " " ).title(), # Convert hyphens to spaces and capitalize "item": f"{parsed_url.scheme}://{parsed_url.netloc}/{'/'.join(path_segments[:position-1])}", # Construct the URL up to this segment } breadcrumbs["itemListElement"].append(breadcrumb_item) return breadcrumbs def get_last_part(file_path): return os.path.basename(file_path) def convert_png_to_jpg(file_path): # Check if the file exists and is a PNG if not os.path.isfile(file_path) or not (file_path.lower().endswith('.png') or file_path.lower().endswith('.jpg')): raise ValueError("The provided file is not a valid PNG file.") # Open the PNG image with Image.open(file_path) as img: # Get the file name without extension file_name = os.path.splitext(file_path)[0] # print(file_name) # Convert to RGB if the image has an alpha channel if img.mode in ('RGBA', 'LA') or (img.mode == 'P' and 'transparency' in img.info): img = img.convert('RGB') # Save as JPG jpg_path = f"{file_name}.jpg" img.save(jpg_path, 'JPEG') if not file_path.lower().endswith('.jpg'): # Remove the original PNG file os.remove(file_path) #print(f"Converted {file_path} to {jpg_path} and removed the original PNG.") # Example usage # convert_png_to_jpg('path/to/your/image.png') api_key = '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' api_key = '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' client = OpenAI( api_key = api_key ) import os import shutil import ast import openpyxl from difflib import SequenceMatcher import pandas as pd from fuzzywuzzy import fuzz import requests from requests.auth import HTTPBasicAuth import json import requests from requests.auth import HTTPBasicAuth import json import html import re from requests.auth import HTTPBasicAuth from PIL import Image from PIL import Image def add_watermark(main_image_path, watermark_path): # Open the main image main_image = Image.open(main_image_path).convert('RGBA') # Open the watermark image watermark = Image.open(watermark_path).convert('RGBA') # Calculate the new size for the watermark new_height = int(main_image.height * 0.1) aspect_ratio = watermark.width / watermark.height new_width = int(new_height * aspect_ratio) # Resize the watermark watermark = watermark.resize((new_width, new_height), Image.LANCZOS) # Calculate the position for the watermark (bottom right) #position = (main_image.width - watermark.width, main_image.height - watermark.height) position = (main_image.width - watermark.width, 0) # Create a new transparent image the same size as the main image transparent = Image.new('RGBA', main_image.size, (0,0,0,0)) # Paste the watermark onto the transparent image transparent.paste(watermark, position, watermark) # Combine the main image with the watermark output = Image.alpha_composite(main_image, transparent) # Convert back to the original mode if it wasn't RGBA original_image = Image.open(main_image_path) if original_image.mode != 'RGBA': output = output.convert(original_image.mode) # Save the result, overwriting the original image output.save(main_image_path) # print(f"Watermark added to {main_image_path}") # Example usage: # add_watermark('path/to/main/image.jpg', 'path/to/watermark/image.png') # Example usage: # add_watermark('path/to/main/image.jpg', 'path/to/watermark/image.png') def normalize_title(title): # Decode HTML entities decoded = html.unescape(title) # Remove any remaining HTML tags no_html = re.sub('<[^<]+?>', '', decoded) # Convert to lowercase and remove non-alphanumeric characters return re.sub(r'[^a-z0-9]', '', no_html.lower()) def publish_or_update_wordpress_post(site_url, username, password, post_data): # WordPress REST API endpoints posts_url = f"{site_url}/wp-json/wp/v2/posts" # Set up authentication auth = HTTPBasicAuth(username, password) # Check if the API is accessible try: response = requests.get(f"{site_url}/wp-json", auth=auth) response.raise_for_status() except requests.exceptions.RequestException as e: raise Exception(f"Failed to access WordPress API: {str(e)}") # Check if a post with the same title exists # existing_post = check_existing_post_by_title(site_url, auth, post_data['title']) # if existing_post: # # Update existing post # update_url = f"{posts_url}/{existing_post['id']}" # post_data['id'] = existing_post['id'] # response = requests.post(update_url, json=post_data, auth=auth) # else: # Create new post response = requests.post(posts_url, json=post_data, auth=auth) if response.status_code in [200, 201]: return response.json() else: raise Exception(f"Failed to publish/update post: {response.text}") def check_existing_post_by_title(site_url, auth, title): # URL encode the title encoded_title = requests.utils.quote(title) # print(encoded_title) search_url = f"{site_url}/wp-json/wp/v2/posts?search={encoded_title}" # print(search_url) response = requests.get(search_url, auth=auth) title = normalize_title(title) if response.status_code == 200: # print('existing post found') posts = response.json() for post in posts: rendered_title = normalize_title(post['title']['rendered'].lower()) # print(post['title']['rendered'].lower()) # print(title.lower()) # print(rendered_title, title) if rendered_title == title: print('post found', rendered_title) return post return None #try: # result = publish_or_update_wordpress_post(site_url, username, password, post_data) # print("Post published/updated successfully:", result['link']) #except Exception as e: # print("Error:", str(e)) def replace_keywords(excel_file, sheet_name, keyword_array): # Read the Excel sheet df = pd.read_excel(excel_file, sheet_name=sheet_name) # Ensure the column with keywords is named 'Keywords' if 'Keywords' not in df.columns: raise ValueError("Excel sheet must have a 'Keywords' column") # Get the list of keywords from the Excel sheet excel_keywords = df['Keywords'].tolist() # Function to find the best match for a keyword def find_best_match(keyword): best_match = max(excel_keywords, key=lambda x: fuzz.ratio(keyword.lower(), str(x).lower())) return best_match if fuzz.ratio(keyword.lower(), str(best_match).lower()) > 70 else keyword # Replace keywords in the array with best matches replaced_keywords = [find_best_match(keyword) for keyword in keyword_array] return replaced_keywords def match_keywords(excel_path, sheet_name, text, column_letter='A'): # Open the Excel workbook and select the specified sheet workbook = openpyxl.load_workbook(excel_path) sheet = workbook[sheet_name] # Read keywords/phrases from the Excel sheet keywords = [cell.value for cell in sheet[column_letter] if cell.value] # Function to calculate similarity ratio def similarity(a, b): return SequenceMatcher(None, a.lower(), b.lower()).ratio() # Calculate similarity scores for each keyword/phrase scores = [(keyword, max(similarity(keyword, word) for word in text.split())) for keyword in keywords] # Sort by similarity score in descending order and get top 5 top_matches = sorted(scores, key=lambda x: x[1], reverse=True)[:5] # Return only the keywords/phrases, not the scores return [match[0] for match in top_matches] def remove_common_elements(array1, array2): return [x for x in array1 if x not in set(array2)] def remove_keyphrases_from_excel(file_path, keyphrases, output_path=None): # Load the workbook wb = openpyxl.load_workbook(file_path) # Iterate through all sheets for sheet in wb.worksheets: # Iterate through all cells in the sheet for row in sheet.iter_rows(): for cell in row: if cell.value: # Convert cell value to string cell_value = str(cell.value) # Check if any keyphrase is in the cell value for phrase in keyphrases: if phrase in cell_value: # Remove the keyphrase cell_value = cell_value.replace(phrase, '') # Update the cell value cell.value = cell_value if cell_value.strip() else None # Save the modified workbook if output_path: wb.save(output_path) else: wb.save(file_path) print("Keyphrases removed successfully.") def read_array_from_file(file_path): # Open the text file in read mode with open(file_path, 'r') as file: # Read the content of the file content = file.read() # Use ast.literal_eval to safely evaluate the string representation of the array array = ast.literal_eval(content) return array def remove_all_files_in_folder(folder_path): # Check if the folder exists if not os.path.exists(folder_path): #print(f"The folder {folder_path} does not exist.") return # Iterate over all files in the folder and remove them for filename in os.listdir(folder_path): file_path = os.path.join(folder_path, filename) try: # Check if it's a file (not a folder) and remove it if os.path.isfile(file_path): os.remove(file_path) elif os.path.isdir(file_path): # If it's a directory, remove the directory and its contents shutil.rmtree(file_path) except Exception as e: print(f"Error deleting {file_path}: {e}") print(f"All files and directories in {folder_path} have been removed.") def call_openai(prompt, temperature, max_tokens, model, model_key = ""): #prompt = "Farmonaut wants to classify this google search query into only one of the following categories: a. Precision Agriculture, b. API/ Development, c. Traceability, d. Plantation, e. Unrelated, f. pests, diseases and weeds, g. irrigation, h. yield forecast, i. area estimation and crop identification, j. geotagging, k. fertilizers and soil health, l. Satellite/GIS/Remote Sensing, m. agri-tech startup/ company, n. agriculture content, o. not worth doing SEO. Answer only one category (without category alphabet). Google search query to classify: " + google_query #prompt = "Classify whether this google search query is related or unrelated to what Farmonaut does. Strictly answer RELATED OR UNRELATED : " + google_query if model == "o1-preview": completion = client.chat.completions.create( model=model, messages=[ {"role": "user", "content": prompt} ] ) elif model == "deepseek": client = OpenAI(api_key=model_key, base_url="https://api.deepseek.com") # Round 1 messages=[{"role": "system", "content": "You are a expert in SEO and a representative of Farmonaut."},{"role": "user", "content": prompt}] completion = client.chat.completions.create( model="deepseek-reasoner", messages=messages, max_tokens=max_tokens, temperature=temperature ) #completion = completion.choices[0].message.reasoning_content #content = response.choices[0].message.content elif model == "o3-mini": client = OpenAI( api_key = model_key ) completion = client.chat.completions.create( model=model, messages=[ {"role": "user", "content": prompt} ] ) else: client = OpenAI( api_key = model_key ) completion = client.chat.completions.create( model=model, messages=[ {"role": "system", "content": "You are a expert in SEO and a representative of Farmonaut."}, {"role": "user", "content": prompt} ], max_tokens=max_tokens, temperature=temperature ) return completion.choices[0].message.content def save_to_file(file_name, content): with open(file_name, 'w') as file: file.write(content) print(f"Content saved to {file_name}") def string_to_array(string): # Use ast.literal_eval to safely evaluate the string as a list try: array = ast.literal_eval(string) # print(array) except: array = string return array def get_first_column_values(file_path, sheet_name=None): # Load the workbook workbook = openpyxl.load_workbook(file_path, data_only=True) # If a sheet name is specified, load that sheet, otherwise use the active sheet sheet = workbook[sheet_name] if sheet_name else workbook.active # Get all the values from the first column (Column A) first_column_values = [] for cell in sheet['A']: # Convert cell value to string and append to list, handle empty cells first_column_values.append(str(cell.value) if cell.value is not None else "") return first_column_values # Example usage: # file_path = 'your_file.xlsx' # values = get_first_column_values(file_path, 'Sheet1') # print(values) def get_file_extension(url): # Parse the URL parsed_url = urlparse(url) # Get the path component of the URL path = parsed_url.path # Extract the file extension file_extension = os.path.splitext(path)[1] # Return the extension (without the dot) or an empty string if there's no extension return file_extension[1:] if file_extension else "" # posts = list(posts) ssl._create_default_https_context = ssl._create_unverified_context # Load environment variables load_dotenv() # Instagram session id (you need to get this from your browser after logging in to Instagram) SESSIONID = os.getenv("INSTAGRAM_SESSIONID") # Headers for Instagram requests headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.74 Safari/537.36 Edg/79.0.309.43", "cookie": f'sessionid={SESSIONID};' } # Initialize Instaloader L = instaloader.Instaloader() #L.login('himanshujain4578', 'harish@4321') L.post_metadata_txt_pattern = "" L.download_geotags = False L.save_metadata = False L.save_metadata_json = False L.download_comments = False # Anthropic API key (replace with your actual key) #anthropic_api_key = os.getenv("ANTHROPIC_API_KEY") # WordPress credentials wp_url = "https://www.farmonaut.com" wp_username = "ankuromar296" wp_password = "2fZW 42ln jhSG qPfm Kx3b hacO" def remove_keywords(selected_keywords, excel_file, sheet_name, keyword_column, num_keywords=5): # Read the Excel sheet df = pd.read_excel(excel_file, sheet_name=sheet_name) # Ensure the keyword column exists if keyword_column not in df.columns: raise ValueError(f"Column '{keyword_column}' not found in the Excel sheet.") # Remove the selected keywords from the DataFrame df = df[~df[keyword_column].isin(selected_keywords)] # Save the updated DataFrame back to the Excel file df.to_excel(excel_file, sheet_name=sheet_name, index=False) def select_and_remove_keywords(text, excel_file, sheet_name, keyword_column, num_keywords=5): # Read the Excel sheet df = pd.read_excel(excel_file, sheet_name=sheet_name) # Ensure the keyword column exists if keyword_column not in df.columns: raise ValueError(f"Column '{keyword_column}' not found in the Excel sheet.") # Get the list of keywords keywords = df[keyword_column].tolist() # Create a TF-IDF vectorizer vectorizer = TfidfVectorizer() # Ensure text and keywords are strings text = str(text) if isinstance(text, dict) else text keywords = [str(keyword) if isinstance(keyword, dict) else keyword for keyword in keywords] # Fit the vectorizer on the text and transform the keywords tfidf_matrix = vectorizer.fit_transform([text] + keywords) # Calculate cosine similarity between the text and each keyword cosine_similarities = (tfidf_matrix * tfidf_matrix.T).toarray()[0][1:] # Get the indices of the top num_keywords similar keywords top_indices = np.argsort(cosine_similarities)[-num_keywords:][::-1] # Select the top keywords selected_keywords = [keywords[i] for i in top_indices] # Remove the selected keywords from the DataFrame df = df[~df[keyword_column].isin(selected_keywords)] # Save the updated DataFrame back to the Excel file df.to_excel(excel_file, sheet_name=sheet_name, index=False) return selected_keywords # Existing functions remain the same # (select_and_remove_keywords, get_instagram_posts, extract_text_from_image, extract_text_from_video, generate_blog_content) def call_genai(prompt, temperature, max_tokens): return call_openai(prompt, temperature, max_tokens, "gpt-4.1-2025-04-14", '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') client = anthropic.Anthropic( # defaults to os.environ.get("ANTHROPIC_API_KEY") api_key="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", ) claude_model = "claude-3-5-sonnet-20240620" #claude_model = "claude-3-5-sonnet-20241022" message = client.messages.create( model= claude_model, max_tokens=max_tokens, temperature=temperature, system = "You are an SEO expert, a gis/ remote sensing expert, an agriculture and horticulture scientist, and a representative of Farmonaut (farmonaut.com).", messages=[ {"role": "user", "content": prompt} ] ) #print(message) return message.content[0].text def upload_media_to_wordpress(file_path, title): endpoint = f"{wp_url}/wp-json/wp/v2/media" auth = HTTPBasicAuth(wp_username, wp_password) mime_type, _ = mimetypes.guess_type(file_path) media_data = { 'alt_text':title, 'caption':title, 'description':title } upload_name = f"{title}_{os.path.basename(file_path)}" with open(file_path, 'rb') as file: files = {'file': (upload_name, file, mime_type)} #files = {'file': (os.path.basename(file_path), file, mime_type)} response = requests.post(endpoint, files=files, auth=auth, json = media_data) if response.status_code == 201: return response.json()['id'], response.json()['source_url'] else: print(f"Failed to upload media. Status code: {response.status_code}") print(f"Response: {response.text}") return None, None def extract_text_from_video(video_path): video = cv2.VideoCapture(video_path) fps = int(video.get(cv2.CAP_PROP_FPS)) frame_count = int(video.get(cv2.CAP_PROP_FRAME_COUNT)) duration = frame_count / fps text = "" for i in range(0, int(duration), 1): video.set(cv2.CAP_PROP_POS_MSEC, i * 1000) success, frame = video.read() if not success: break gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) frame_text = pytesseract.image_to_string(gray) text += frame_text + "\n" video.release() return text def process_media2(media_url_arr, title): #print(media_url_arr) media_info = [] media_num = 0 folder_name = 'insta_files' for url in media_url_arr: #print(url) media_num = media_num + 1 # print(get_file_extension(url)) file_path = folder_name + '/' + str(media_num) + '.' + str(get_file_extension(url)) try: response = requests.get(url, stream=True) except: print(traceback.format_exc()) response = None if response is None: continue os.makedirs(os.path.dirname(file_path), exist_ok=True) if response.status_code == 200: with open(file_path, 'wb') as file: for chunk in response.iter_content(chunk_size=8192): if chunk: file.write(chunk) #print(f"File downloaded successfully: {file_path}") add_watermark(file_path, 'watermark.jpg') convert_png_to_jpg(file_path) else: print(f"Failed to download file. Status code: {response.status_code}") # with tempfile.TemporaryDirectory() as tmpdir: # for media_url in media_url_arr: # L.download_post(post, target=tmpdir) media_files = os.listdir(folder_name) for file in media_files: file_path = os.path.join(folder_name, file) media_id, media_url = upload_media_to_wordpress(file_path, title) if media_id and media_url: media_info.append({ 'type': 'image', 'text': title, 'id': media_id, 'url': media_url }) else: continue # Skip files that are neither videos nor images return media_info def fetch_insta_posts(last_scan_date): API_TOKEN = "apify_api_l3TU0FiUw2S9Uoew0ad82ESdigcLI60muD3O" from apify_client import ApifyClient # Initialize the ApifyClient with your API token client = ApifyClient(API_TOKEN) # Prepare the Actor input run_input = { "addParentData": False, "directUrls": [ "https://www.instagram.com/farmonaut/" ], "enhanceUserSearchWithFacebookPage": False, "isUserReelFeedURL": False, "isUserTaggedFeedURL": False, "onlyPostsNewerThan": last_scan_date, "resultsLimit": 700, "resultsType": "posts", "searchLimit": 1, "searchType": "hashtag" } # Run the Actor and wait for it to finish run = client.actor("shu8hvrXbJbY3Eb9W").call(run_input=run_input) all_insta_posts = [] # Fetch and print Actor results from the run's dataset (if there are any) for item in client.dataset(run["defaultDatasetId"]).iterate_items(): all_insta_posts.append(item) return all_insta_posts def update_last_fetch_date(filename="last_fetch_date.txt"): from datetime import datetime last_fetch_date = datetime.today().date() with open(filename, "w") as file: file.write(last_fetch_date.strftime("%Y-%m-%d")) def read_or_update_last_fetch_date(filename="last_fetch_date.txt"): from datetime import datetime try: with open(filename, "r") as file: date_str = file.read().strip() # Validate date format try: last_fetch_date = datetime.strptime(date_str, "%Y-%m-%d").date() except ValueError: raise FileNotFoundError # Treat invalid format as missing file except (FileNotFoundError, IOError): # If file is missing or has an invalid format, write the current date last_fetch_date = datetime.today().date() with open(filename, "w") as file: file.write(last_fetch_date.strftime("%Y-%m-%d")) return last_fetch_date # # Example usage # last_fetch_date = read_or_update_last_fetch_date() # print("Last Fetch Date:", last_fetch_date) def get_insta_articles(): # with open(file_path, 'r') as file: # #data = json.load(file) # insta_posts = json.load(file) final_posts_list = [] insta_posts = fetch_insta_posts(read_or_update_last_fetch_date()) print(insta_posts) for single_post in insta_posts: if single_post.get("type", "") != "Video": temp_post = {} temp_post["body"] = single_post.get("caption", "") try: display_url = [single_post.get("displayUrl")] except: display_url = [] images_arr = single_post.get("images", []) if len(images_arr) == 0: images_arr = display_url temp_post["images"] = images_arr final_posts_list.append(temp_post) return final_posts_list def extract_text_from_image(image_path): image = Image.open(image_path) text = pytesseract.image_to_string(image) return text import pandas as pd import ast def get_keyword_arrays(file_path): # Read the Excel file into a DataFrame df = pd.read_excel(file_path, usecols=['Keywords']) # Iterate through each row and convert the string representation of the list into an actual list for keywords in df['Keywords']: try: # Safely evaluate the string to convert it into a list keyword_array = ast.literal_eval(keywords) yield keyword_array except (ValueError, SyntaxError): # Handle cases where the string is not a valid list format print(f"Invalid format for keywords: {keywords}") yield [] def ai_image_url(prompt): #print(prompt) response = client.images.generate( model="dall-e-3", prompt=prompt, size="1024x1024", quality="standard", n=1, ) image_url = response.data[0].url return image_url def main(): total_count, good_count, bad_count = 0,0,0 # posts_done = ['C_kYH2NJURr', 'C_aMTxcN0Vs', 'C_TJJ_MN2jD', 'C_P35JyyIVW', 'C-_8t2MvV--', 'C-mgOBuR_pU'] posts_done = [] posts_failed = [] #posts = get_instagram_posts(instagram_username) #posts = posts['data']['xdt_api__v1__feed__user_timeline_graphql_connection']['edges'] farmonaut_info = ''' Farmonaut is a pioneering agricultural technology company that offers advanced, satellite-based farm management solutions via android, iOS, web/browser App, and API. Its mission is to make precision agriculture affordable and accessible to farmers worldwide by integrating innovative technology and data-driven insights into traditional farming practices. Farmonaut's platform provides valuable services such as real-time crop health monitoring, AI-based advisory systems, blockchain-based traceability, and resource management tools. Here's a comprehensive overview of its technologies, business model, target audience, and value proposition. 1. Technologies Farmonaut leverages a blend of satellite imagery, artificial intelligence (AI), blockchain, and machine learning to address various agricultural challenges. Satellite-Based Crop Health Monitoring: Farmonaut uses multispectral satellite images to monitor crop health, providing farmers with insights into vegetation health (NDVI), soil moisture levels, and other critical metrics. This data helps farmers make informed decisions about irrigation, fertilizer usage, and pest management, ultimately optimizing crop yields and reducing resource wastage​( Farmonaut )​( Farmonaut ). Jeevn AI Advisory System: This AI-driven personalized farm advisory tool delivers real-time insights, weather forecasts, and expert crop management strategies to farmers. Jeevn AI analyzes satellite data and other inputs to generate customized advice, improving farm productivity and efficiency​( Farmonaut ). Blockchain-Based Product Traceability: By integrating blockchain technology, Farmonaut enables traceability solutions for various industries, particularly agriculture. Blockchain ensures that every stage of the product's journey, from farm to consumer, is transparent and secure, thereby enhancing trust and reducing fraud in supply chains​( Farmonaut ). Fleet and Resource Management: Farmonaut provides tools for fleet management, enabling agribusinesses to manage their logistics more efficiently. This helps reduce operational costs by optimizing vehicle usage, ensuring safety, and improving the overall management of agricultural machinery​( Farmonaut ). Carbon Footprinting: To help agribusinesses monitor and reduce their environmental impact, Farmonaut offers carbon footprint tracking. This feature provides real-time data on emissions, allowing businesses to take steps towards sustainability and compliance with environmental regulations​( Farmonaut )​( Farmonaut ). 2. Business Model Farmonaut operates on a subscription-based model, offering various packages that cater to individual farmers, cooperatives, agribusinesses, and government institutions. The company provides flexible pricing tiers depending on the number of hectares monitored and the frequency of satellite data updates. Their platform is accessible through web and mobile apps, making it easy for users to track and manage their farms from anywhere​( Farmonaut ). The business also extends its services through APIs, enabling developers and businesses to integrate Farmonaut’s satellite and weather data into their own systems. This API access broadens the company’s revenue streams and encourages collaboration with other agritech companies and agricultural research organizations​( Farmonaut ). Additionally, Farmonaut partners with financial institutions to provide satellite-based verification for crop loans and insurance, reducing the likelihood of fraud and improving access to financing for farmers​( Farmonaut )​( Farmonaut ). 3. Target Audience Farmonaut’s solutions are tailored for a wide range of users in the agricultural ecosystem: Individual Farmers: The platform offers individual farmers access to precise, real-time data on their crops. This allows them to make better decisions regarding crop health, pest management, and resource allocation. Small and medium-sized farms can particularly benefit from these affordable precision farming solutions​( Farmonaut ). Agribusinesses: Large-scale agribusinesses use Farmonaut for plantation management, fleet tracking, and resource optimization. These businesses can manage vast farming operations more efficiently by leveraging satellite monitoring and AI-driven insights​( Farmonaut ). Governments and NGOs: Farmonaut works with government agencies and non-governmental organizations (NGOs) to improve agricultural productivity, implement large-scale farm monitoring programs, and support sustainable farming initiatives. Governments also use Farmonaut's tools for crop area and yield estimation, especially in policy and subsidy distribution​( Farmonaut ). Financial Institutions: By providing satellite-based verification of farms, Farmonaut helps banks and insurance companies streamline crop loan approvals and reduce fraudulent claims in agricultural insurance​( Farmonaut )​( Farmonaut ). Corporate Clients: Companies, especially in sectors like textile and food, use Farmonaut's blockchain-based traceability solutions to ensure the authenticity and transparency of their supply chains. This strengthens consumer trust and enhances the brand's reputation​( Farmonaut ). 4. Value Proposition and Benefits Farmonaut’s key value propositions include: Cost-Effective Precision Agriculture: Farmonaut democratizes access to precision agriculture by offering affordable services for real-time crop monitoring and farm management. Unlike traditional precision farming tools that require expensive hardware, Farmonaut relies on satellite imagery, making it a more economical solution for farmers of all scales​( Farmonaut ). Increased Farm Productivity: By providing real-time data on crop health, soil moisture, and weather patterns, Farmonaut allows farmers to make informed decisions that optimize their resources. This leads to better crop yields, reduced input costs, and minimized crop losses​( Farmonaut ). Sustainability: Through features like carbon footprint tracking and efficient resource management, Farmonaut promotes sustainable farming practices. This is crucial in today’s agriculture, where there is growing pressure to reduce environmental impact while increasing food production​( Farmonaut ). Transparency and Trust: Farmonaut’s blockchain-based traceability solution ensures transparency in supply chains, particularly for corporate clients in agriculture and related sectors. By offering verifiable data on product origin and journey, the system helps build consumer trust​( Farmonaut ). Access to Financing: Farmonaut's partnerships with financial institutions provide farmers with satellite-based verification for loans and insurance. This improves access to financing while reducing the risks for lenders​( Farmonaut )​( Farmonaut ). Scalability: The platform is highly scalable, serving clients from smallholder farmers to large agribusinesses and government bodies. Its modular design allows users to choose the services they need and scale them up as their operations grow​( Farmonaut ). Conclusion Farmonaut stands out in the agritech space by offering a comprehensive suite of tools that combine satellite technology, AI, and blockchain to meet the diverse needs of modern agriculture. Whether it's precision farming, supply chain transparency, or sustainability, Farmonaut is at the forefront of the agricultural revolution, making it easier for farmers and agribusinesses to thrive in an increasingly data-driven world. By lowering the cost barrier and providing advanced solutions, Farmonaut continues to empower farmers, improve productivity, and promote sustainable agricultural practices globally. ''' yoast_guidelines = { "yoastSEOGuidelines": { "contentOptimization": [ { "guideline": "Use focus keyword in the first paragraph", "description": "Include your main keyword in the opening of your content." }, { "guideline": "Use focus keyword in the title", "description": "Include your main keyword in the page title, preferably at the beginning." }, { "guideline": "Use focus keyword in the URL", "description": "Include your main keyword in the page URL." }, { "guideline": "Use focus keyword in headings", "description": "Include your main keyword in at least one subheading (H2, H3, etc.)." }, { "guideline": "Keyword density", "description": "Maintain a keyword density between 0.5% and 2.5%." }, { "guideline": "Content length", "description": "Write at least 300 words for regular posts and pages." }, { "guideline": "Use internal links", "description": "Include internal links to other relevant pages on your website." }, { "guideline": "Use external links", "description": "Include outbound links to authoritative sources when appropriate." }, { "guideline": "Use images", "description": "Include at least one image with alt text containing the focus keyword." } ], "readability": [ { "guideline": "Use short paragraphs", "description": "Keep paragraphs to 150 words or less." }, { "guideline": "Use subheadings", "description": "Break up text with descriptive subheadings (H2, H3, etc.)." }, { "guideline": "Use transition words", "description": "Use transition words to improve content flow." }, { "guideline": "Vary sentence length", "description": "Mix short and long sentences for better readability." }, { "guideline": "Use Flesch Reading Ease score", "description": "Aim for a score of 60-70 for general audience content." } ] } } yoast_guidelines2 = { "seo_best_practices": { "focus_keywords": { "quantity": "Use a reasonable number of focus keywords; avoid overuse to prevent keyword stuffing." }, "basic_seo": { "seo_title": "Include the primary focus keyword within the first 50 characters of the title for better visibility.", "meta_description": "Include the primary focus keyword in the meta description (120–150 characters) to improve relevance and click-through rates.", "url": "Include the primary focus keyword in the URL and use clean, descriptive URLs.", "content_start": "Place the primary focus keyword in the first 10% of the content to signal relevance early.", "content_presence": "Ensure focus keywords appear naturally in the content, avoiding overuse to maintain readability.", "content_length": "Aim for at least 2500 words for comprehensive coverage." }, "additional_seo": { "subheadings": "Use focus keywords in H2, H3, or other subheadings to enhance relevance and structure.", "image_alt": "Include the primary focus keyword in image ALT text to improve accessibility and SEO.", "keyword_density": "Maintain keyword density between 1–1.5% to balance optimization and readability; avoid exceeding 2.5%.", "url_length": "Keep URL length ≤75 characters for simplicity and better ranking potential.", "keyword_uniqueness": "Use unique focus keywords per post to avoid content cannibalization; merge or redirect duplicate content." }, "title_readability": { "keyword_position": "Place the primary focus keyword in the first 50% of the title to capture attention quickly.", "sentiment": "Use emotional or compelling words in the title to boost click-through rates, avoiding exaggerated clickbait.", "power_words": "Incorporate power words to make the title more engaging and clickable.", "numbers": "Include numbers in the title to increase clickability and specificity." }, "content_readability": { "table_of_contents": "Add a table of contents for long posts to improve navigation and user experience.", "short_paragraphs": "Keep paragraphs under 120 words to enhance readability and engagement." } } } blog_tones_and_themes = { "tones": [ {"name": "Informative", "description": "Neutral, objective, and educational."}, {"name": "Conversational", "description": "Friendly, engaging, and informal."}, {"name": "Persuasive", "description": "Assertive, convincing, and motivational."}, {"name": "Inspirational", "description": "Uplifting, motivational, and positive."}, {"name": "Humorous", "description": "Light-hearted, witty, and entertaining."}, {"name": "Serious/Professional", "description": "Formal, authoritative, and professional."} ], "themes": [ {"name": "Technology & Innovation", "description": "Focus on latest tech advancements and impacts."}, {"name": "Sustainability & Environment", "description": "Environmentally friendly and sustainable living."}, {"name": "Personal Growth & Development", "description": "Focus on self-improvement and productivity."}, {"name": "Industry Trends & News", "description": "Covering latest industry trends and news."}, {"name": "Case Studies & Success Stories", "description": "Showcasing examples of success."}, {"name": "Guides and How-tos", "description": "Step-by-step guides to accomplish tasks."}, {"name": "Problem-Solving", "description": "Addressing problems and providing solutions."}, {"name": "Lifestyle & Culture", "description": "Focusing on cultural and lifestyle aspects."}, {"name": "Health & Wellness", "description": "Topics related to physical or societal health."}, {"name": "Business & Entrepreneurship", "description": "Insights, tips, and strategies for businesses."}, {"name": "Finance & Investment", "description": "Advice on financial planning, budgeting, or investments."}, {"name": "Social Issues & Advocacy", "description": "Discussing social causes or movements."}, {"name": "Food & Cooking", "description": "Recipes, cooking tips, or food culture exploration."}, {"name": "Education & Learning", "description": "Tips for learning new skills, or education-related content."} ] } categories_obj = { "580":"south-america", "579": "asia", "578":"africa", "577":"united-kingdom", "576":"canada", "575":"europe", "574":"australia", "5":"blogs", "573":"news", "546":"case-study", "542":"area-estimation", "9":"remote-sensing", "548":"precision-farming", "572":"api-development", "561": "usa" } product_pages = { "carbon_footprinting": "https://farmonaut.com/carbon-footprinting/", "traceability": "https://farmonaut.com/product-traceability/", "crop_loan_and_insurance": "https://farmonaut.com/crop-loan-and-insurance/", "fleet_management": "https://farmonaut.com/fleet-management/", "large_scale_farm_management": "https://farmonaut.com/agro-admin-app/", "crop_plantation_forest_advisory": "https://farmonaut.com/app_redirect" } # youtube_videos = f''' # [('Farmonaut App Tutorial: How to Add & Map Fields Easily', 'https://youtube.com/watch?v=I3PZXJZE9as'), ("How Farmonaut's Satellite Technology is Revolutionizing Land Use in Agriculture", 'https://youtube.com/watch?v=B9K9IW0gy2Q'), ("Discover Farmonaut's Advanced Agri Solutions: Precision Crop Area Estimation - Egypt Case Study", 'https://youtube.com/watch?v=Fn5gY7QtFjo'), ('Unlocking Soil Organic Carbon: The Secret to Sustainable Farming with Farmonaut', 'https://youtube.com/watch?v=GEWF0ite050'), ("Explore Farmonaut's Advanced Crop Monitoring & Yield Prediction", 'https://youtube.com/watch?v=5wMEg-u5XdU'), ('Farmonaut Agro Admin App: Revolutionizing Large-Scale Farm Management', 'https://youtube.com/watch?v=iPg6X_s9Seo'), ('Satellite & AI Based Automated Tree Detection For Precise Counting and Location Mapping', 'https://youtube.com/watch?v=kB_V4JAlA1M'), ('Farmonaut Automated Detection of Alternate Wet and Dry Farming Phases', 'https://youtube.com/watch?v=GnXN51pte0E'), ('Welcome to the Future of Farming with JEEVN AI | AI Based Personalized Farm Advisory', 'https://youtube.com/watch?v=QkqWbooLh6s'), ('Transform Your Farming Experience with Farmonaut!', 'https://youtube.com/watch?v=i0w1z6FNxZQ'), ('WhatsApp Tutorial: Step-by-Step Guide to Connect Your Farm to Our Satellite Monitoring System', 'https://youtube.com/watch?v=XFLtA8zR96s'), ('Visualizing Farms with Satellite Data using iFrame for Farmonaut API Users', 'https://youtube.com/watch?v=J4HeFUJgwvk'), ('Integrate Weather Data Using Farmonaut API | Comprehensive Tutorial', 'https://youtube.com/watch?v=WgCHVXNDHNY'), ('How to Add and Remove Languages for Satellite Reports | Farmonaut API Tutorial', 'https://youtube.com/watch?v=-MRAf8_YX8E'), ('How to Check API Usage, Expired Farms, and Calculate Farm Area | Farmonaut API Tutorial', 'https://youtube.com/watch?v=sNZd4oxY7Zc'), ('How to Add a Field Using iFrame for Satellite Monitoring | Step-by-Step Tutorial', 'https://youtube.com/watch?v=S073EeIF3Xc'), ('How to Interpret Satellite Data for Agriculture | Tutorial | Farmonaut Mobile Apps', 'https://youtube.com/watch?v=OnsYwixc8_E'), ('How To Create An API Account | Farmonaut API Video Tutorial', 'https://youtube.com/watch?v=RpBlJ86Xgv4'), ("Farmonaut's Web App Tutorial: Comprehensive Guide for Interpreting Satellite Data", 'https://youtube.com/watch?v=e4BLMuWUAdU'), ('How to Retrieve Farm Data | Farmonaut API Tutorial', 'https://youtube.com/watch?v=OnuwHnpey0k'), ('Pause Resume or Extend Farm Satellite Monitoring - Farmonaut API Tutorial', 'https://youtube.com/watch?v=zBHE7mn0zT0'), ('Manage Your Farms with Ease Using Our APIs!', 'https://youtube.com/watch?v=kDWPl2hQpKI'), ('How to Check Consolidated Farm Report | Farmonaut Mobile Apps', 'https://youtube.com/watch?v=srbBgKp-MjQ'), ('How to Add Farm For Satellite Monitoring | Farmonaut Mobile Apps', 'https://youtube.com/watch?v=IVApjPza55M'), ('How To Check Detailed Satellite Report Of Your Farm - Farmonaut Mobile Apps', 'https://youtube.com/watch?v=wbHASbTJXvM'), ('How to Pause, Resume or Delete Field From Your Account | Farmonaut Mobile Apps', 'https://youtube.com/watch?v=9hBzyyWKWJA'), ('How To Check The Satellite Data - Farmonaut Mobile Apps', 'https://youtube.com/watch?v=pPcmGOmYyTc'), ("Tutorial for Farmonaut's Web App For Satellite Monitoring", 'https://youtube.com/watch?v=3erGO8xjDQY'), ('Celebrating 5 Years of Innovation in Agriculture with Farmonaut! | Farmonaut Turns 5', 'https://youtube.com/watch?v=oHFNO8LckLY'), ('Farmonaut: Cultivating Innovation in Agriculture | Year in Review 2023', 'https://youtube.com/watch?v=vRX9G9JALwc'), ("Farmonaut's Tech Advancements in Q3", 'https://youtube.com/watch?v=eNd8xCq30wc'), ("Farmonaut's Remarkable Half-Year Achievements 2023!", 'https://youtube.com/watch?v=12A8B_7uC-A'), ("Farmonaut®'s Traceability solution for Honey is going live with Dabur", 'https://youtube.com/watch?v=nU3Probs-Lk'), ('Farmonaut | Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp', 'https://youtube.com/watch?v=1MPp5ung6cI'), ("Farmonaut's Remarkable Q3 2023 Milestones in Agricultural Sector", 'https://youtube.com/watch?v=wrbn85x8bLE'), ('Satellite based WhatsApp advisory for Farmers by Farmonaut', 'https://youtube.com/watch?v=WhUG8rnrmFo'), ('Farmonaut Tutorial: Farm Mapping As a User of Smartphone Apps (Android and iOS)', 'https://youtube.com/watch?v=gRoPvQslDYc'), ('Farmonaut - STEI Foundation Africa Collaboration', 'https://youtube.com/watch?v=a-3k7TY0vzw'), ("Farmonaut's August Milestones", 'https://youtube.com/watch?v=8Hw6BlE6NFQ'), ('RADER & FARMONAUT partner for Africa Green Impact (AGI) in Central Africa & Nigeria.', 'https://youtube.com/watch?v=OD78p4IZmMQ'), ('Farmonaut®: Milestones Achieved in July 2023', 'https://youtube.com/watch?v=OuBK52GDS5g'), ('Farmonaut Satellite Monitoring Whitelabel Solutions', 'https://youtube.com/watch?v=zvlJp__of-g'), ("Farmonaut Spotlight - Q'2 - Part 2", 'https://youtube.com/watch?v=TpwEolFOgGw'), ('Farmonaut Farm Mapping Tutorial - Mobile App', 'https://youtube.com/watch?v=Uw0HzdJF6Q8'), ('Farmonaut Covered By Radix AI: Leveraging Remote Sensing and Machine Learning for a Greener Future', 'https://youtube.com/watch?v=tiB5zJ4IRu0'), ("Coromandel's My Gromor App offers satellite-based farm advice via Farmonaut to farmers", 'https://youtube.com/watch?v=LCtgELI95tA'), ("My Gromor App Brings Satellite-Powered Farm Advisory Services to India's Farmers via Farmonaut", 'https://youtube.com/watch?v=WYm1FQXUTN8'), ('Farmonaut® | 90-95% Accuracy in Organic Carbon Data From Farmonaut', 'https://youtube.com/watch?v=GuWKnuqnX0k'), ('JEEVN AI Tutorial | How to Use JEEVN AI For Generating Farm Advisory', 'https://youtube.com/watch?v=RNRN8ODo46k'), ('Introducing JEEVN AI | An AI Tool For Personalized Farm Advise', 'https://youtube.com/watch?v=25PjLwECtDo'), ('Farmonaut | How to Compare images', 'https://youtube.com/watch?v=n6KEWZClihg'), ('Farmonaut Web app | Satellite Based Crop monitoring', 'https://youtube.com/watch?v=tD7cC-dI-Yc'), ('Farmonaut Tutorial | How to Download Weather Data', 'https://youtube.com/watch?v=Azm0ajcUWng'), ('Farmonaut | How to Generate Time Lapse', 'https://youtube.com/watch?v=YSwP9iq5OXs'), ('Farmonaut Introduction - Large Scale Usage For Businesses and Governments', 'https://youtube.com/watch?v=aYUVo5u9YvE'), ('Farmonaut Introduction - English', 'https://youtube.com/watch?v=-RSqvtJ1SIE'), ('Farmonaut For Crop Area Estimation', 'https://youtube.com/watch?v=3PUPMR5Kfi4'), ('Farmonaut WhatsApp Based Satellite Advisory | 90% + Engagement Rate', 'https://youtube.com/watch?v=urSEO6KVkXM'), ('Farmonaut For Admins Tutorial Video', 'https://youtube.com/watch?v=YliR45N9B9Q'), ('Farmonaut API Video Tutorial - How To Make API Account', 'https://youtube.com/watch?v=tM8UlkbX4cI'), ('Introducing WhatsApp Based Satellite Advisory', 'https://youtube.com/watch?v=Z1ZdiKtnzgo'), ('Farmonaut | Cost Effective Blockchain Based Traceability Solutions for Textile and Fashion Industry', 'https://youtube.com/watch?v=fKOKe2fKI7A'), ('Mapping of Cotton in Maharashtra, Coriander in Rajasthan, Sugarcane in Karnataka, Banana in WB', 'https://youtube.com/watch?v=4sRXUNEgiIQ'), ('Coriander Farm Mapping Going on in Rajasthan', 'https://youtube.com/watch?v=6wy45OcgC6g'), ('Farmonaut Wishes Everyone A Very Happy Diwali!', 'https://youtube.com/watch?v=B4xF1hFvf3o'), ('Farmonaut For Crop Area Estimation', 'https://youtube.com/watch?v=RuN6nZKJV3U'), ('Farmonaut For Admins Tutorial Video', 'https://youtube.com/watch?v=jAQIOleOOBg'), ('Farmonaut Web App | Search For Farms Visited Yesterday By Satellites | Track Polygon Mapping Process', 'https://youtube.com/watch?v=FOWVebnTbOo'), ('Farmonaut For Oil Palm Plantation', 'https://youtube.com/watch?v=gSwG2pXbBLk'), ('Farmonaut® | Making Farming Better With Satellite Data', 'https://youtube.com/watch?v=DuYxCOxgl7w'), ('Farmonaut Has Received Ramaiah-Evolute Star Startup Award', 'https://youtube.com/watch?v=PAgKVOlTtd4'), ('Farmonaut Large Scale Field Mapping & Satellite Based Farm Monitoring | How To Get Started', 'https://youtube.com/watch?v=k1qdCCf-3Kw'), ('The Role of Artificial Intelligence in Agriculture - Farmonaut | Agritecture | Joyce Hunter', 'https://youtube.com/watch?v=YPZJ62YQsZY')] # ''' youtube_videos = f''' [ ('10 Low-Investment, High-Profit Agri Business Ideas in 2025', 'https://www.youtube.com/watch?v=8_wHQQeHdAA'), ('नई हिंदी म्यूजिक एंथम – Farmonaut Anthem | कृषि का नया अंदाज़', 'https://www.youtube.com/watch?v=aFyE95sUMWw'), ('Regenerative Agriculture 2025 🌱 Carbon Farming, Soil Health & Climate-Smart Solutions | Farmonaut', 'https://www.youtube.com/watch?v=ZE4_nsgT8Q8'), ('Carbon Farming: The Secret Billionaires Won’t Share', 'https://www.youtube.com/watch?v=VVuy36Htxok'), ('California Wine 2025 🍇 Sustainable Viticulture, Organic & Biodynamic, Precision AgTech', 'https://www.youtube.com/watch?v=SePf5k88K-4'), ('PEI Land Clash 2025 🌱 Housing Crisis vs Farmland Protection | Sleepy Hollow Tiny-Home Debate', 'https://www.youtube.com/watch?v=rcMEqRSLUGo'), ('How AI Drones Are Saving Farms & Millions in 2025 🌾 | Game-Changing AgriTech You Must See!', 'https://www.youtube.com/watch?v=DV2JgoDz5j4'), ('AI Sonar Drones 2025: 3 cm Bathymetric Mapping 🌊 Vancouver & Beyond', 'https://www.youtube.com/watch?v=Z2egoAJgmuc'), ('BEE True a smart, scalable honey traceability solution.', 'https://www.youtube.com/watch?v=SapO6yOp90k'), ('2025 Real-Estate Showdown: Canada vs Massachusetts 🏙️ Cash-Flow, Taxes & Market Crash Risks EXPOSED!', 'https://www.youtube.com/watch?v=1LEbLXnBcrI'), ('Florida Fertilizer Ban 2025 🚫 7 Rules to Save Indian River Lagoon & Stop Algae Blooms!', 'https://www.youtube.com/watch?v=2DIROmWwGmA'), ('StoryWalk® Garden Adventures 2025 🌱 7 Family Trails Boosting Kids’ Nutrition & Literacy!', 'https://www.youtube.com/watch?v=VR0lWkfMkE4'), ('Spinach Peptide Bio-Pesticide 2025 | Ends Citrus Greening & Zebra Chip—Texas Yield Skyrockets!', 'https://www.youtube.com/watch?v=VZhL_8bKmZo'), ('FREE Mulch & Compost NJ 2025 | Top Pickup Spots, Money-Saving Garden Hacks & Trendy Zero-Waste Tips', 'https://www.youtube.com/watch?v=nO0aFH5q_e8'), ('Malawi Irrigation Tech 2025 | 3 Solar-Pump Secrets That Triple Yields in Mzimba!', 'https://www.youtube.com/watch?v=Rk75RhpQlas'), ('Nigeria Non-Oil Export Boom 2025 🌱 4,600 Hybrid Seedlings, NEPC & AfCFTA AgriTech Rise', 'https://www.youtube.com/watch?v=koVLrkxzyws'), ('Rare Earth Boom 2025 🚀 AI, Satellites & Metagenomics Redefine Canadian Critical Minerals', 'https://www.youtube.com/watch?v=pUOxA_3aY6s'), ('Ontario Farmers 2025 | 2.2 M kg Farm Plastic Recycling | Circular Economy & Sustainable Agriculture', 'https://www.youtube.com/watch?v=sHwaNeCSWVQ'), ('Knox County 2025 🚫 Wind & Solar Ban? Land-Use Fight, Agrivoltaics & Clean-Energy Jobs', 'https://www.youtube.com/watch?v=i5ByHm3HEdg'), ('Regenerative Coffee Boom 2025 🌱 Kenya & Uganda Profits Up 196 % with AI, Agro-forestry & Blockchain', 'https://www.youtube.com/watch?v=TPMumfWx59E'), ('2025 Veg Equipment Boom 🌱 Smart Farming, AI Telematics & $2.3B Market Powered by Farmonaut', 'https://www.youtube.com/watch?v=Tc77L3nAl1w'), ('Farmonaut® Music Anthem (Roots)', 'https://www.youtube.com/watch?v=AOi1vWXl5mY'), ('Earn $148K/Year Online in 2025 | Farmonaut Affiliate, Passive Income & Recurring Commission', 'https://www.youtube.com/watch?v=2YnWQ52_a5E'), ('Arizona Copper Boom 2025 🚀 AI Drones, Hyperspectral & ESG Tech Triple Porphyry Finds', 'https://www.youtube.com/watch?v=npvz1pjixhE'), ('Canada Fertilizer Boom 2025 | Green Ammonia, AI Precision & $2.3 B Granular Surge', 'https://www.youtube.com/watch?v=4pseAk7oHsA'), ('Mexico Vacuum-Dried Fruit Boom 2025 | 120 kW REV Tech, 7× Faster, 98 % Nutrient Retention', 'https://www.youtube.com/watch?v=8-MFuJyZac8'), ('Manitoba Rare Earth Soil Hack 2025 | AI Metagenomics, Microbial Markers & Critical-Mineral Boom', 'https://www.youtube.com/watch?v=7iDOFzUKZcU'), ('Canada Farm-Plastic Record 2025 | 2.2 M kg Recycled, Circular Economy & AI Precision Ag', 'https://www.youtube.com/watch?v=h9S6rfQdfC4'), ('JEEVN AI: The Future of Smart Farming with Satellite & AI Insights', 'https://www.youtube.com/watch?v=TIdMbtfcGvc'), ('Arlington Gold Hunt 2025 🚀 AI DCIP, Hyperspectral & LIDAR Reveal BC High-Grade Zones', 'https://www.youtube.com/watch?v=HXcXrTavR7Q'), ('Canada Fertilizer Boom 2025 🌱 Zero-Waste Granules, Green Ammonia & Precision AgTech Revolution', 'https://www.youtube.com/watch?v=1V1oYJIw6JQ'), ('Saskatchewan Runway Upgrade 2025 ✈️ $1.8M for Rural Aviation, Ag-Spraying & AI Precision Farming', 'https://www.youtube.com/watch?v=wq4V_h8lKKY'), ('Vacuum-Dried Snacks 2025 🇲🇽 Mexico’s REV Tech + Satellites = Clean-Label Crunch!', 'https://www.youtube.com/watch?v=Tb4NvvtPY7U'), ('Satellite Mineral Exploration 2025 | AI Soil Geochemistry Uncover Copper & Gold in British Columbia!', 'https://www.youtube.com/watch?v=4tYtMAyVwAo'), ('Canada Recycles 2.2M Kg of Farm Plastic! See How Farmonaut Powers Zero-Waste Farming', 'https://www.youtube.com/watch?v=SpJNu-Gn7VQ'), ('Brazil AgTech 2025: 7 Farmonaut Backyards Ending Hunger & Tripling Family Farm Income', 'https://www.youtube.com/watch?v=WVrZXo-ys9w'), ('France Water Crisis 2025 💧 7 Smart Fixes—Satellite Leak Alerts & AI Irrigation Saving Farms', 'https://www.youtube.com/watch?v=wIbfiodb1Jc'), ('EU Farm Subsidy Fraud 2025 🔍 Satellite AI Exposes Fake Land Claims | Farmonaut Solution', 'https://www.youtube.com/watch?v=xutrccRDsLk'), ('Spain Lagoon Crisis 2025 | AI Smart-Farming Cuts Nitrate Runoff & Saves Mar Menor', 'https://www.youtube.com/watch?v=gI4aYYqM2g4'), ('Blueberry Farming 2025 🌱 AI Greenhouse Secrets, Super-Food Profits & Alternative Agriculture', 'https://www.youtube.com/watch?v=0LoLw2NmN7Y'), ('Russia Farm Profit Boost 2025 | 2 % Leasing, AI Precision Ag & Record 84 M ha Sowing Goal', 'https://www.youtube.com/watch?v=0PWWsqWmnNc'), ('Canola Crisis 2025 | China 100 % Tariffs, Price Volatility & AI Precision Ag Saving SK Farms', 'https://www.youtube.com/watch?v=rEFb-lRBo1c'), ('EV Farming Trucks 2025 | Mobile Vertical Farms, 90 % Water Savings & AI Crop Monitoring', 'https://www.youtube.com/watch?v=NN-WGgnhXQ8'), ('Canada Biogas Breakthrough 2025 | 165k-Tonne Waste Fuels RNG & Organic Fertilizer for 5K Farms', 'https://www.youtube.com/watch?v=HVQaKCrlGIk'), ('European EV Olive Oil Benefits 2025 🫒 7 Science-Backed Perks for Heart, Brain & Eco-Smart Farming', 'https://www.youtube.com/watch?v=NR73drJOtF4'), ('Brazil April Rains 2025 | Corn & Soy Bounce-Back + AI Satellite Crop Monitoring for Big Yields', 'https://www.youtube.com/watch?v=5WJRRSD1BVE'), ('Peru $24B Irrigation Boom 2025 🌊 22 Megaprojects & AI Precision Farming Turbo-Charge Exports', 'https://www.youtube.com/watch?v=f9h7fY1_FV8'), ('Brazil Rainfall Boom 2025 🌧️ ENSO-Neutral, Soil-Moisture Maps & AI Precision Ag Rescue Corn & Soy', 'https://www.youtube.com/watch?v=NAUbckm0Nnk'), ('1.5 M-oz Gold Find 2025 🌍 Diamond Drilling, AI Satellite Mapping & ESG Mining in Oko, Guyana', 'https://www.youtube.com/watch?v=-OQgLhyaOIA'), ('Best Seeds for Canada 2025 🌱 Short-Season, Climate-Resilient Picks + 7 Pro Tips for Spring Gardens', 'https://www.youtube.com/watch?v=xr7LsXkdw30'), ('BC Wildfire Risk 2025 🔥 9 Kootenay Projects, Fuel Breaks & AI Satellite Forestry Solutions', 'https://www.youtube.com/watch?v=bAP1R1qqoho'), ('5 Keys to Sustainable Subsidies in Traditional Rice Farming (Murcia CAP 2025 Guide)', 'https://www.youtube.com/watch?v=b-PHdA-_ddM'), ('Exportaciones andaluzas 2025 🌏 7 Oportunidades Clave en Uzbekistán: Aceite, AgTech y Energía Verde', 'https://www.youtube.com/watch?v=sZ25__8vpRo'), ('AgTech in Almería 2025: 5 IFAPA Innovations Beating Crop Viruses & Pests', 'https://www.youtube.com/watch?v=tizbDVJxYKw'), ('Manchester Spring Gardening 2025 🌱 7 Essential Steps + Precision AI Monitoring Tips', 'https://www.youtube.com/watch?v=Ss019H8vSjU'), ('California’s 5 EV Trucks Supercharge Mobile Vertical Farming | 2025 Urban AgTech & Hydroponics Boom', 'https://www.youtube.com/watch?v=azdTJWWsCx0'), ('China Tariffs 2025: 7 Shocking Impacts on Oakland Chinatown Markets & Restaurants', 'https://www.youtube.com/watch?v=eEFxjXjBuUY'), ('Kentucky Corn & Soy 2025 🌧️ 7 Ways Floods + China Trade Hit Yields—Farmonaut Solutions Inside', 'https://www.youtube.com/watch?v=GhnH__l0twI'), ('Tariffs Rock Thief River Falls 2025 ⚙️ 7 Supply-Chain Shifts for Rural Tech Warehouses', 'https://www.youtube.com/watch?v=RuydQ_wfdD0'), ('Bloomington IL Vegetable Gardening 2025 🌱 7 Expert Tips to Maximize Harvests in Zone 5b', 'https://www.youtube.com/watch?v=MuwLIGHGJeQ'), ('Linn County Property Tax 2026: Levy Rate Down, Budget Up—Bigger Bills for Farmers & Homeowners', 'https://www.youtube.com/watch?v=EUs8ShnWUqE'), ('MENA Economic Outlook 2025: 7 Game-Changing Trends for Growth, AgTech & Food Security', 'https://www.youtube.com/watch?v=Knhb5P-Wps4'), ('7 UK Geoengineering Experiments Transforming Climate Change', 'https://www.youtube.com/watch?v=0-Tqf13ZGwQ'), ('Wheat Market Prices: Latest UK & European Crop Trends 2024', 'https://www.youtube.com/watch?v=sM-aReV1bk4'), ('Solar Geoengineering in the UK: 2024 Projects, Risks, and Innovation', 'https://www.youtube.com/watch?v=LnKvwehL_OY'), ('7 Key Digital Engineering Trends Transforming Europe’s Industry', 'https://www.youtube.com/watch?v=0MVwwyQH1h8'), ('Tanzania Agricultural Exports: Key Changes Impacting SADC Trade', 'https://www.youtube.com/watch?v=_ndGf5mEivU'), ('7 Key Steps to Boost Food Sovereignty and Security in Ethiopia', 'https://www.youtube.com/watch?v=4bwgdRLW5eU'), ('Spring Gardening Tips: 7 Essential Steps for Manchester Gardeners', 'https://www.youtube.com/watch?v=D5CnctBztBU'), ('Mountain Ash Ireland 🌳 | 7 Powerful Uses, Folklore & Sustainability Secrets', 'https://www.youtube.com/watch?v=vaHNeM57Tyw'), ('Tanzania Agricultural Exports Surge as Produce Ban Lifted in SADC', 'https://www.youtube.com/watch?v=gVUWpu_tbC4'), ('7 Strategies for Water & Food Security in Kano, Jigawa Agriculture', 'https://www.youtube.com/watch?v=S2bXt8-TS30'), ('7 Key Strategies for Food Sovereignty and Security in Ethiopia', 'https://www.youtube.com/watch?v=erV3zZFZTKw'), ('How Bare Fields & Spring Storms Impact Crops: Farmonaut Reveals Weather Secrets!', 'https://www.youtube.com/watch?v=E1qjK_bZ9JY'), ('How Satellite Tech & AI Are Powering Ethiopia’s Agricultural Boom | Farmonaut Insights', 'https://www.youtube.com/watch?v=HsjbjrGv0C8'), ('🔥 Why Controlled Burns Could Save Horry County from the Next Mega Wildfire', 'https://www.youtube.com/watch?v=37FRuwY74Zk'), ('Farmonaut at 6 Years: How We’re Transforming Farming in 40+ Countries with Satellite Technology', 'https://www.youtube.com/watch?v=JOJDsctLfFQ'), ("Earn 20% Commission with Farmonaut's Affiliate Program - Step-by-Step Tutorial", 'https://www.youtube.com/watch?v=5qtsrtQbFeA'), ('Satellite Soil Moisture Monitoring 2025 – AI Remote‑Sensing for Precision Agriculture', 'https://www.youtube.com/watch?v=BxcETt3LKH4'), ('Farmonaut – Revolutionizing Farming with Satellite-Based Crop Health Monitoring', 'https://www.youtube.com/watch?v=QZvo-DLhmDk'), ('Indian Cotton Farming : From Plantation to Harvest – A Comprehensive Guide', 'https://www.youtube.com/watch?v=buazuM7hkQk'), ('Mastering Aphid Control : From Yellow to Hairy, Indoor to Outdoor – A Comprehensive Guide', 'https://www.youtube.com/watch?v=JNIl62Nc1KY'), ('Soybean Aphid Control : Effective Scouting and Control Strategies for Optimal Crop Yield', 'https://www.youtube.com/watch?v=Ekx3A37sbPs'), ('Peach IPM Strategies : Effective Control of Diseases and Pests from Spring to Summer', 'https://www.youtube.com/watch?v=fgGGJtXZcPk'), ('Organic Septoria Control : Protecting Tomatoes and Cannabis from Fungal Pests', 'https://www.youtube.com/watch?v=WULp3k890kU'), ('Organic Grape Mite Cure : Monitoring and Managing Eriophyes vitis on Vine Leaves', 'https://www.youtube.com/watch?v=HBniW1Q50-w'), ('Thrips Management : Protecting Fruits and Vegetables from Western Flower Thrips Damage', 'https://www.youtube.com/watch?v=oYdXfRv1Gl0'), ('Grape Gall Mite Control : Protecting Your Vines from Eriophyes vitis Infestation', 'https://www.youtube.com/watch?v=4TfhMdVXa6Y'), ('Organic Mealybug Control : Protecting Citrus, Papaya, and Other Plants from Pest Infestations', 'https://www.youtube.com/watch?v=lSqZfouipRM'), ('Organic Thrips Control : Natural Defense Against S. dorsalis: Eco-Friendly Solutions', 'https://www.youtube.com/watch?v=Ll6UO24_mtw'), ('Papaya Ringspot Virus : Symptoms, Organic Treatment, and Control Methods for Infected Trees', 'https://www.youtube.com/watch?v=IAGlvMV0OTY'), ('Angular Leaf Spot : Identifying and Managing Foliar Disease in Cucurbits and Berries', 'https://www.youtube.com/watch?v=GWfiKgF_r70'), ('Boost Farm Yields : Maximizing Agricultural Potential: Terrain Analysis & Efficiency', 'https://www.youtube.com/watch?v=POuNTXrZ_I0'), ('Jassid Control : Tea Pest Management: Tackling Leafhopper Infestations', 'https://www.youtube.com/watch?v=ZuAssF2g4AI'), ('From Kansas to Alabama : How AI is Revolutionizing Corn Fields Across America', 'https://www.youtube.com/watch?v=3n0WpOn8TnA'), ('Citrus Black Fly Control : Protecting Your Orchard', 'https://www.youtube.com/watch?v=50edDLn8838'), ('Aphid Control on Farms : Grounded Strategies for Sustainable Pest Control', 'https://www.youtube.com/watch?v=yPMPxnxIblE'), ('Guava Leaf Disease Care : A Visual Guide for Farmers', 'https://www.youtube.com/watch?v=i2BB55F6aSc'), ('Leaf Hopper Management : Effective Strategies to Prevent Leaf Rot and Identify Common Types', 'https://www.youtube.com/watch?v=mW_IqyttHzQ'), ('Bug & Spot Battle : Safeguarding Citrus: Aphid & Foliage Health Management', 'https://www.youtube.com/watch?v=F004dE4_CTo'), ('Plant Magnesium Deficit : Symptoms, Causes, and Control Measures for Healthy Crops', 'https://www.youtube.com/watch?v=S5kaVx5T3n4'), ('Mastering Potato Growing : From Planting to Pest Control – A Complete Guide for Healthy Crops', 'https://www.youtube.com/watch?v=-3I6QBWjUKM'), ('Organic Alfalfa Defense : Integrated Pest Management for Aphids and Mosaic Virus Control', 'https://www.youtube.com/watch?v=FTMLwCr364I'), ('Organic Mildew Defense : Effective Fungicides and Treatment for Cucurbit Crops', 'https://www.youtube.com/watch?v=7vebIkdgWig'), ('NCLB Treatments: Organic+ : Symptoms, Control, and Yield Protection', 'https://www.youtube.com/watch?v=XXcajlBxx4k'), ('Mastering Crop Protection: A Comprehensive Guide to Common Plant Diseases and Pests', 'https://www.youtube.com/watch?v=-3hIOLbWvXo'), ('Organic Thrips Control : Safeguarding Vineyards & Orchards from Harmful Insects', 'https://www.youtube.com/watch?v=F2j7AMXF4uc'), ('Rose Black Spot Control : Organic and Chemical Control Methods for this Common Fungal Pest', 'https://www.youtube.com/watch?v=XWenn_hNCoU'), ('Organic Anthracnose Cure: Effective Control Measures for Pepper Plants and Other Species', 'https://www.youtube.com/watch?v=KTgwRMTyqx0'), ('Grapevine Leaf Virus : Organic and Conventional Treatments for Virus-Infected Vines', 'https://www.youtube.com/watch?v=Xgqil28op4U'), ('Citrus Greening Disease : Symptoms, Control, and Organic Farming Solutions for Infected Trees', 'https://www.youtube.com/watch?v=knZ4Lcqt-f0'), ('Smart Crop Solutions : AI-Powered Field Scouting for Enhanced Productivity', 'https://www.youtube.com/watch?v=ja0mrJmy6UY'), ('Date Palm Scale Attack : Effective Pest Control for Healthy Palms', 'https://www.youtube.com/watch?v=7OZsOlnyjH8'), ('Organic Pest Control : Combating Yellow Leaf Discoloration and Nitrogen Deficiency in Plants', 'https://www.youtube.com/watch?v=iKptlAcHc80'), ('Organic Banana Leaf Care: Treating Fungal Blotches Without Chemicals', 'https://www.youtube.com/watch?v=1VtrPQ4mp7w'), ('Smart Farming Future : Precision Tech & AI: Boosting Harvests, Enhancing Sustainability', 'https://www.youtube.com/watch?v=TA9Rn_xMWgk'), ('Cotton Defense Mastery: Understanding Bollworm Types and Pink Bollworm Life Cycle for Farmers', 'https://www.youtube.com/watch?v=x8tymAGgAzM'), ('Phytotoxicity in Crops : Managing Chemical Applications and Symptoms for Healthy Plant Growth', 'https://www.youtube.com/watch?v=azGi_CVc15Q'), ('Alternaria Crop Blight: Identifying and Managing Late Blight for Optimal Yield', 'https://www.youtube.com/watch?v=YrfFNPzgx_Q'), ('Verticillium Wilt : Symptoms, Treatment, and Control for 20+ Affected Plants', 'https://www.youtube.com/watch?v=VUV4DLUrzxg'), ('Armyworm & Cutworm Control: Protecting Crops from Moth Larvae Damage', 'https://www.youtube.com/watch?v=v7ZIyW8Dbo0'), ('Organic vs. Chemical : Natural Strategies for Cucurbit Virus Defense & Crop Safeguarding', 'https://www.youtube.com/watch?v=EdpF3CJQJQ0'), ('Eco Olive Bug Defense: Effective Treatments for Lace Bug and Other Leaf-Feeding Insects', 'https://www.youtube.com/watch?v=MzW0IWKIk-M'), ('Rose Black Spot Control: Preventing Diplocarpon Rosae Disease', 'https://www.youtube.com/watch?v=ipLOFeB1QFY'), ('Organic vs. Conventional : Understanding Herbicide Injury Symptoms in Crops and Plants', 'https://www.youtube.com/watch?v=jtxENHa2e_c'), ('Effective Pest Control : Safeguarding Palms & Maximizing Harvests from Harmful Bugs', 'https://www.youtube.com/watch?v=-wsiE72eBxk'), ('Organic Rose Care: Combating Diplocarpon Rosae: Garden Defense strategies', 'https://www.youtube.com/watch?v=jm9yreeeLCM'), ('soft Scale Bug Control: Protecting Citrus And Other Crops from Coccidae Pest', 'https://www.youtube.com/watch?v=uB06GNRKWtw'), ('Comprehensive Guide: Detect & Control Issues In 60+ Crops: Apple To zucchini', 'https://www.youtube.com/watch?v=yaZc1OFdepg'), ('Spider Mite Management: Natural Predator Control: P. Persimilis Vs. Pest Infestations', 'https://www.youtube.com/watch?v=q8cJA62sc4o'), ('Smart Plant Solutions: AI - Driven Pest Detection for Intelligent Agriculture', 'https://www.youtube.com/watch?v=WyEdaSb1aQ4'), ('Maximizing Garden Productivity: Elevate Crops: superior soil, Drainage & Plant Development', 'https://www.youtube.com/watch?v=EX0ZRvYg65k'), ('Organic Grape Protection: Controlling Leafhoppers from Bud Break to Harvest', 'https://www.youtube.com/watch?v=GR4D_k6dIZE'), ('Organic Pest Control Made Easy with Farmonaut’s Precision Tools', 'https://www.youtube.com/watch?v=hVxFaLO_luk'), ('Eco Plant Disease Cures: Preventing Scab and Fungal Outbreaks in Fruit Trees', 'https://www.youtube.com/watch?v=mZRoZXJM2lU'), ('Protecting Crops from Red Spider Mites: Farmonaut’s Organic Approach', 'https://www.youtube.com/watch?v=N5kbC-B1CEU'), ('Smart Farming Future: Precision Tech & AI Boosting Harvests, Enhancing Sustainability', 'https://www.youtube.com/watch?v=ozQs4hEgjLM'), ('Organic Rice Disease Management: Farmonaut’s Innovative Approach', 'https://www.youtube.com/watch?v=SvsyyPxoH94'), ('Farmonaut’s Guide to Managing Grapevine Leafroll Disease', 'https://www.youtube.com/watch?v=6pez6HdTPkI'), ('Elevated Garden Beds: Boost Plant Health, Prevent Soil Erosion, and improve Productivity', 'https://www.youtube.com/watch?v=W2XGUTbPUAk'), ('Revolutionize Crop Scouting: Portable Farm Intel: Reports, Space View & Yield Metrics', 'https://www.youtube.com/watch?v=zXLj3-siITE'), ("Battling White Mold: Farmonaut's Solutions for Healthier Crops", 'https://www.youtube.com/watch?v=rXeetLA_vQc'), ('Organic Rust Treatment: Protecting Plants from Fungal Infections', 'https://www.youtube.com/watch?v=p812QvyADs0'), ('Mastering Crop Protection: Essential Handbook: Identifying Plant Health Issues In Farming', 'https://www.youtube.com/watch?v=xj1AcYMPj7s'), ('"Bacterial Canker in Tomatoes: Symptoms, Treatment, and Organic Management Strategies"', 'https://www.youtube.com/watch?v=I3HS9B0Q1ns'), ('Protecting Your Plants: Farmonaut’s Smart Solutions for Crop Health', 'https://www.youtube.com/watch?v=nT28qsFZZC8'), ('"Managing Salinity Stress: Organic and Conventional Methods to Boost Crop Health and Soil Quality"', 'https://www.youtube.com/watch?v=bPiIh1OLKzM'), ('Revolutionizing Crop Health: Precision Diagnosis & Solutions for Enhanced Farm Yields', 'https://www.youtube.com/watch?v=9CkJfkTBU7w'), ('Combating Rhizoctonia: How Farmonaut Empowers Farmers with Precision Tech', 'https://www.youtube.com/watch?v=GYDsViyie44'), ('NDMI Index Explained: NDWI Precision AG Values Interpretation, and Significance', 'https://www.youtube.com/watch?v=1PpSFck2kEM'), ('Maximizing Crop Health: Understanding NDVI For plant Monitoring And Management', 'https://www.youtube.com/watch?v=AVZebX2S6p0'), ('"Revolutionizing Agriculture: From Pest Control to Smart Farming With GIS and Remote Sensing "', 'https://www.youtube.com/watch?v=rT7UFMyuY6g'), ("The Vital Importance of Soil in Agriculture: Nurturing Earth's Foundation for Sustainable Farming", 'https://www.youtube.com/watch?v=HTRZVT0Aja4'), ('Maximize Your Harvest: Ultimate Guide to Grain, Vegetable, And Crop Yield Calculator', 'https://www.youtube.com/watch?v=4iZ-EGo_cew'), ('Arizona’s Cotton & Lettuce Revolution with Farmonaut: Pioneering Precision Agriculture!', 'https://www.youtube.com/watch?v=R4qdMp2emz0'), ('Revolutionizing Agriculture with Farmonaut: Advanced Tech for Smarter Farming!', 'https://www.youtube.com/watch?v=jyfbuKi8Wws'), ('Maximizing Potato Yield: Boosting Production Per Acre and Hectare in India', 'https://www.youtube.com/watch?v=BBBkxdsZ9u0'), ('DST Farm Plant Technology: Revolutionizing Agriculture with Precision Farming Solutions', 'https://www.youtube.com/watch?v=lc6groBdl-E'), ('Maximizing Crop Yields: Expert Guide to Estimate Wheat, Rice and Lentil Production', 'https://www.youtube.com/watch?v=RBwEyLqB1HA'), ('The 5 Essential Stages of Crop Farming : A Visual Guide for Modern Agriculture', 'https://www.youtube.com/watch?v=rcKWNgw9_tw'), ('Cotton Cultivation Challenges : Overcoming Production Hurdles for Better Yields', 'https://www.youtube.com/watch?v=5wzdkcvktkg'), ('Soybean Crop Images: A Quick Guide to Understanding and Using Visual Data in Soybean Farming', 'https://www.youtube.com/watch?v=A3qu5XlM22w'), ('Unlocking Farm Potential: A Comprehensive Guide to Land Cover Classification and Farm Land Types', 'https://www.youtube.com/watch?v=ZBxkNFlUVgM'), ('Unveiling Earth’s Secrets : From Infrared to Water Vapour: A Comprehensive Guide to Satellite Data', 'https://www.youtube.com/watch?v=LSePUBJ9xIs'), ('Revolutionizing Farming: How Farmonsut Uses Satellite Imagery for Precision Agriculture', 'https://www.youtube.com/watch?v=0maJlNRV1p0'), ('Unlocking Plant Health: The Power of NDVI Explained!', 'https://www.youtube.com/watch?v=eHgEHvcz0Bw'), ('Unlocking the Secrets of NDWI: How Satellites Transform Agriculture!', 'https://www.youtube.com/watch?v=dbt_C-bdvCU'), ('How Cotton Farming Thrives: Climate, Technology, and Surprising Facts', 'https://www.youtube.com/watch?v=uGSrFj4tw-o'), ("How Palm Oil is Going High-Tech: Farmonaut's AI & Satellites Revolutionize Sustainable Agriculture", 'https://www.youtube.com/watch?v=4onocB9G6b8'), ('The Secret Beneath Your Feet: Why Soil Carbon Matters for Farmers and Us All', 'https://www.youtube.com/watch?v=4Op8iiqvxEk'), ('Unlocking the Power of Soil Organic Carbon (SOC): The Hidden Key to Sustainable Farming', 'https://www.youtube.com/watch?v=tDH8LGkNTN4'), ('The Future of Farming: Satellites, AI, and Geotagging – Farmonaut’s Bold Vision!', 'https://www.youtube.com/watch?v=DaIF3BftLKM'), ('Florida Sugar Cane: The Surprising Giant of US Agriculture!', 'https://www.youtube.com/watch?v=KewVM_raYKM'), ('The Hidden Importance of Land Classification: Why It Matters More Than You Think!', 'https://www.youtube.com/watch?v=rm8Yz5e6pM0'), ('How Satellite Tech is Revolutionizing Farming | NDVI, EVI & Hyperspectral Imaging', 'https://www.youtube.com/watch?v=5b-dHGmUGHg'), ('Unlocking Soil Secrets: How Organic Matter and Carbon Combat Climate Change 🌱', 'https://www.youtube.com/watch?v=mCvggu7ZJ5w'), ('Revolutionizing Cotton Farming: How Satellites and AI are Changing the Game', 'https://www.youtube.com/watch?v=hnER7likoyY'), ('From Land Use to Space Age Farming: How Farmonaut is Revolutionizing Agriculture with Satellites', 'https://www.youtube.com/watch?v=hiB6WsJ4bis'), ("The Vital Connection: How Soil & Water Shape Agricultural Success | Farmonaut's AgTech Revolution", 'https://www.youtube.com/watch?v=jmRPEWMUxVw'), ('How NDVI is Revolutionizing Farming: The Secret to Healthier Crops!', 'https://www.youtube.com/watch?v=IqySDrH_VQs'), ('How Satellites and AI Revolutionize Water Management in Farming | Precision Agriculture with NDWI', 'https://www.youtube.com/watch?v=rq0d-TkSo6Y'), ('Unlocking the Secrets of Soil: The Importance of Organic Matter in Agriculture', 'https://www.youtube.com/watch?v=vn6qMJDheSM'), ('AI Revolution in Farming: How Personalized Reports Are Changing Agriculture', 'https://www.youtube.com/watch?v=p_W6p7udCbA'), ("Farmonaut App Tutorial: How to Add & Map Fields Easily", 'https://www.youtube.com/watch?v=I3PZXJZE9as'), ("How Farmonaut's Satellite Technology is Revolutionizing Land Use in Agriculture", 'https://www.youtube.com/watch?v=B9K9IW0gy2Q'), ("Discover Farmonaut's Advanced Agri Solutions: Precision Crop Area Estimation - Egypt Case Study", 'https://www.youtube.com/watch?v=Fn5gY7QtFjo'), ("Unlocking Soil Organic Carbon: The Secret to Sustainable Farming with Farmonaut", 'https://www.youtube.com/watch?v=GEWF0ite050'), ("Explore Farmonaut's Advanced Crop Monitoring & Yield Prediction", 'https://www.youtube.com/watch?v=5wMEg-u5XdU'), ("Farmonaut Agro Admin App: Revolutionizing Large-Scale Farm Management", 'https://www.youtube.com/watch?v=iPg6X_s9Seo'), ('Satellite & AI Based Automated Tree Detection For Precise Counting and Location Mapping', 'https://www.youtube.com/watch?v=kB_V4JAlA1M'), ('Farmonaut Automated Detection of Alternate Wet and Dry Farming Phases', 'https://www.youtube.com/watch?v=GnXN51pte0E'), ('Farmonaut WhatsApp ట్యుటోరియల్ – ఫీల్డ్ మానిటరింగ్ ని సులభతరం చేయండి', 'https://www.youtube.com/watch?v=_3lMlfKosJM'), ('"ಉಪಗ್ರಹದ ಮೂಲಕ ಫಾರ್ಮೊನಾಟ್ ಅನ್ನು ಬಳಸಿ ಫಾರ್ಮ್ ಮಾನಿಟರಿಂಗ್ ಮಾಡುವುದು ಹೇಗೆ"', 'https://www.youtube.com/watch?v=-GDOmVqADTI'), ('Farmonaut WhatsApp பயிற்சி: உங்கள் பண்ணையை எங்கள் கண்காணிப்பு அமைப்புடன் இணைக்கும் வழிகாட்டி.', 'https://www.youtube.com/watch?v=cU0SOHCQi1k'), ('Welcome to the Future of Farming with JEEVN AI | AI Based Personalized Farm Advisory', 'https://www.youtube.com/watch?v=QkqWbooLh6s'), ('Transform Your Farming Experience with Farmonaut!', 'https://www.youtube.com/watch?v=i0w1z6FNxZQ'), ('WhatsApp Tutorial Punjabi', 'https://www.youtube.com/watch?v=y9f7oCiYn_M'), ('WhatsApp Tutorial Marathi', 'https://www.youtube.com/watch?v=HLteJVBg244'), ('WhatsApp Tutorial: Step-by-Step Guide to Connect Your Farm to Our Satellite Monitoring System', 'https://www.youtube.com/watch?v=XFLtA8zR96s'), ('WhatsApp ट्यूटोरियल: WhatsApp पर Farmonaut से अपने खेत की निगरानी और फसल की जानकारी प्राप्त करें।', 'https://www.youtube.com/watch?v=tk22ZBJAzQk'), ('Mastering Satellite Imaging for Agriculture : Complete API Guide to Satellite & Radar Data Analysis', 'https://www.youtube.com/watch?v=fbrn6zXfuDE'), ('Visualizing Farms with Satellite Data using iFrame for Farmonaut API Users', 'https://www.youtube.com/watch?v=J4HeFUJgwvk'), ('Integrate Weather Data Using Farmonaut API | Comprehensive Tutorial', 'https://www.youtube.com/watch?v=WgCHVXNDHNY'), ('How to Add and Remove Languages for Satellite Reports | Farmonaut API Tutorial', 'https://www.youtube.com/watch?v=-MRAf8_YX8E'), ('How to Check API Usage, Expired Farms, and Calculate Farm Area | Farmonaut API Tutorial', 'https://www.youtube.com/watch?v=sNZd4oxY7Zc'), ('How to Add a Field Using iFrame for Satellite Monitoring | Step-by-Step Tutorial', 'https://www.youtube.com/watch?v=S073EeIF3Xc'), ('How to Interpret Satellite Data for Agriculture | Tutorial | Farmonaut Mobile Apps', 'https://www.youtube.com/watch?v=OnsYwixc8_E'), ('Exploring Groundnut Farms by the Ganga River | Nutty Village & Farmonaut Collaboration', 'https://www.youtube.com/watch?v=lWYLvCsUaJE'), ('How To Create An API Account | Farmonaut API Video Tutorial', 'https://www.youtube.com/watch?v=RpBlJ86Xgv4'), ("Farmonaut's Web App Tutorial: Comprehensive Guide for Interpreting Satellite Data", 'https://www.youtube.com/watch?v=e4BLMuWUAdU'), ('How to Retrieve Farm Data | Farmonaut API Tutorial', 'https://www.youtube.com/watch?v=OnuwHnpey0k'), ('Pause Resume or Extend Farm Satellite Monitoring - Farmonaut API Tutorial', 'https://www.youtube.com/watch?v=zBHE7mn0zT0'), ('Manage Your Farms with Ease Using Our APIs!', 'https://www.youtube.com/watch?v=kDWPl2hQpKI'), ('How to Check Consolidated Farm Report | Farmonaut Mobile Apps', 'https://www.youtube.com/watch?v=srbBgKp-MjQ'), ('How to Add Farm For Satellite Monitoring | Farmonaut Mobile Apps', 'https://www.youtube.com/watch?v=IVApjPza55M'), ('How To Check Detailed Satellite Report Of Your Farm - Farmonaut Mobile Apps', 'https://www.youtube.com/watch?v=wbHASbTJXvM'), ('How to Pause, Resume or Delete Field From Your Account | Farmonaut Mobile Apps', 'https://www.youtube.com/watch?v=9hBzyyWKWJA'), ('How To Check The Satellite Data - Farmonaut Mobile Apps', 'https://www.youtube.com/watch?v=pPcmGOmYyTc'), ("Tutorial for Farmonaut's Web App For Satellite Monitoring", 'https://www.youtube.com/watch?v=3erGO8xjDQY'), ('Celebrating 5 Years of Innovation in Agriculture with Farmonaut! | Farmonaut Turns 5', 'https://www.youtube.com/watch?v=oHFNO8LckLY'), ('Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp (Telugu తెలుగు Tutorial)', 'https://www.youtube.com/watch?v=DggoWxpIJjg'), ('Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp (Kannada ಕನ್ನಡ Tutorial)', 'https://www.youtube.com/watch?v=9ZqqWpGhS7M'), ('Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp (Punjabi ਪੰਜਾਬੀ Tutorial)', 'https://www.youtube.com/watch?v=YzxRvZ7VO28'), ('Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp (Marathi मराठी Tutorial)', 'https://www.youtube.com/watch?v=GzRVsA5_sAk'), ('Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp (Tamil தமிழ் Tutorial)', 'https://www.youtube.com/watch?v=PLqlJ4Ov8aU'), ('Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp (Hindi हिंदी Tutorial)', 'https://www.youtube.com/watch?v=0uX5-HgXYoo'), ('Farmonaut | Meeting With Indiaspora and Consulate General of India, San Francisco', 'https://www.youtube.com/watch?v=Ap0SNXup4Og'), ('Farmonaut: Cultivating Innovation in Agriculture | Year in Review 2023', 'https://www.youtube.com/watch?v=vRX9G9JALwc'), ("Farmonaut's Tech Advancements in Q3", 'https://www.youtube.com/watch?v=eNd8xCq30wc'), ("Farmonaut's Remarkable Half-Year Achievements 2023!", 'https://www.youtube.com/watch?v=12A8B_7uC-A'), ("Farmonaut®'s Traceability solution for Honey is going live with Dabur", 'https://www.youtube.com/watch?v=nU3Probs-Lk'), ('Farmonaut | Connect Your Farms With Satellites in Just 2 Minutes Using WhatsApp', 'https://www.youtube.com/watch?v=1MPp5ung6cI'), ("Farmonaut's Remarkable Q3 2023 Milestones in Agricultural Sector", 'https://www.youtube.com/watch?v=wrbn85x8bLE'), ('Satellite based WhatsApp advisory for Farmers by Farmonaut', 'https://www.youtube.com/watch?v=WhUG8rnrmFo'), ("Farmonaut Tutorial: Farm Mapping As a User of Smartphone Apps (Android and iOS)", 'https://www.youtube.com/watch?v=gRoPvQslDYc'), ("Farmonaut's August Milestones", 'https://www.youtube.com/watch?v=8Hw6BlE6NFQ'), ('RADER & FARMONAUT partner for Africa Green Impact (AGI) in Central Africa & Nigeria.', 'https://www.youtube.com/watch?v=OD78p4IZmMQ'), ('Farmonaut®: Milestones Achieved in July 2023', 'https://www.youtube.com/watch?v=OuBK52GDS5g'), ('Farmonaut Satellite Monitoring Whitelabel Solutions', 'https://www.youtube.com/watch?v=zvlJp__of-g'), ('Unveiling the Sweet Mysteries: A Journey through the World of Honey Production', 'https://www.youtube.com/watch?v=Qo8KzlxtXMo'), ('Farmonaut Farm Mapping Tutorial - Mobile App', 'https://www.youtube.com/watch?v=Uw0HzdJF6Q8'), ('Farmonaut Interviewed by DD News at G20 Conference in Hyderabad', 'https://www.youtube.com/watch?v=XsES9-hyFH8'), ('Farmonaut Covered By Radix AI: Leveraging Remote Sensing and Machine Learning for a Greener Future', 'https://www.youtube.com/watch?v=tiB5zJ4IRu0'), ("Coromandel's My Gromor App offers satellite-based farm advice via Farmonaut to farmers", 'https://www.youtube.com/watch?v=LCtgELI95tA'), ("My Gromor App Brings Satellite-Powered Farm Advisory Services to India's Farmers via Farmonaut", 'https://www.youtube.com/watch?v=WYm1FQXUTN8'), ('JEEVN AI Tutorial | How to Use JEEVN AI For Generating Farm Advisory', 'https://www.youtube.com/watch?v=RNRN8ODo46k'), ('Introducing JEEVN AI | An AI Tool For Personalized Farm Advise', 'https://www.youtube.com/watch?v=25PjLwECtDo'), ('Farmonaut Web app | Satellite Based Crop monitoring', 'https://www.youtube.com/watch?v=tD7cC-dI-Yc'), ('Farmonaut Introduction - Large Scale Usage For Businesses and Governments', 'https://www.youtube.com/watch?v=aYUVo5u9YvE'), ('Farmonaut Introduction - Hindi', 'https://www.youtube.com/watch?v=ZMjZAhabMHA'), ('Farmonaut Introduction - English', 'https://www.youtube.com/watch?v=-RSqvtJ1SIE'), ('Farmonaut For Admins Tutorial Video', 'https://www.youtube.com/watch?v=YliR45N9B9Q'), ('Farmonaut API Video Tutorial - How To Make API Account', 'https://www.youtube.com/watch?v=tM8UlkbX4cI'), ('Journey of a BOOTSTRAPPED - PROFITABLE - SELF SUSTAINABLE - HIGH GROWTH - AGRITECH STARTUP in 2022', 'https://www.youtube.com/watch?v=kgO6Zq_yOyY'), ('Mapping of Cotton in Maharashtra, Coriander in Rajasthan, Sugarcane in Karnataka, Banana in WB', 'https://www.youtube.com/watch?v=4sRXUNEgiIQ'), ('Coriander Farm Mapping Going on in Rajasthan', 'https://www.youtube.com/watch?v=6wy45OcgC6g'), ('Farmonaut For Crop Area Estimation', 'https://www.youtube.com/watch?v=RuN6nZKJV3U'), ('From the entire Farmonaut team, we wish everyone a very Happy 75th Independence Day! 🇮🇳🇮🇳', 'https://www.youtube.com/watch?v=MWgzUBSIB6o'), ('Farmonaut For Admins Tutorial Video', 'https://www.youtube.com/watch?v=jAQIOleOOBg'), ('Farmonaut® | How to Access Demo Farms on The Web App', 'https://www.youtube.com/watch?v=ruTUQLF0l9M'), ('Farmonaut Web App Video', 'https://www.youtube.com/watch?v=aCw-bQv1mBc'), ('Farmonaut For Oil Palm Plantation', 'https://www.youtube.com/watch?v=gSwG2pXbBLk'), ('Farmonaut® | Making Farming Better With Satellite Data (Hindi)', 'https://www.youtube.com/watch?v=kQXgg9igdQo'), ('Farmonaut® | Making Farming Better With Satellite Data', 'https://www.youtube.com/watch?v=DuYxCOxgl7w'), ('Farmonaut Large Scale Field Mapping & Satellite Based Farm Monitoring | How To Get Started', 'https://www.youtube.com/watch?v=k1qdCCf-3Kw'), ('Farmonaut Large Scale Farm Mapping And Satellite Based Farm Monitoring', 'https://www.youtube.com/watch?v=p_nF7Zz23is'), ('Farmonaut Hybrid Image And How To Interpret It', 'https://www.youtube.com/watch?v=SVMQNVSe9K4'), ('How To Select a Field For Satellite Monitoring - Web App', 'https://www.youtube.com/watch?v=oy2bA3YdYvw'), ('Access Satellite Data of Polygons Within A Field', 'https://www.youtube.com/watch?v=sTi1STvx7hk'), ('How to Select a Polygon Within a Field - Web App', 'https://www.youtube.com/watch?v=Fk5bgHdL12Q'), ('Farmonaut® Satellite Based Crop Health Monitoring - Android', 'https://www.youtube.com/watch?v=GEbA2STCGAg'), ('Farmonaut® Satellite Based Crop Health Monitoring - Web App', 'https://www.youtube.com/watch?v=DLx9-qMMRy8'), ('Farmonaut® Satellite Based Crop Health Monitoring', 'https://www.youtube.com/watch?v=dwSCHQ99BRw'), ('Satellite Based Crop Health Monitoring Samples | Precision Agriculture | Remote Sensing', 'https://www.youtube.com/watch?v=6MFwSPFuVbA'), ('Introducing Farmonaut', 'https://www.youtube.com/watch?v=E7XgzfeUEi4'), ('On Demand Satellite Imagery', 'https://www.youtube.com/watch?v=1zS-XsOU3ZY') ] ''' try: done_posts = read_array_from_file('posts_done.txt') except: print(traceback.format_exc()) done_posts = [] #for temp_post in done_posts: # is_this_a_festival_post = "no" # if temp_post not in posts_done: # posts_done.append(temp_post) post_num = 0 main_folder = 'blogs' geographies = [ ['http://en.wikipedia.org/wiki/United_States',20, "en"], ['http://en.wikipedia.org/wiki/Europe',5, "NA"], ['http://en.wikipedia.org/wiki/Canada', 5, "NA"], ['http://en.wikipedia.org/wiki/United_Kingdom',2, "en"], ['http://en.wikipedia.org/wiki/New_Zealand',2, "en"], ['http://en.wikipedia.org/wiki/South_America', 5, "NA"],['http://en.wikipedia.org/wiki/Australia', 5, "en"], ['http://en.wikipedia.org/wiki/Africa',2, "NA"], ['http://en.wikipedia.org/wiki/Southeast_Asia',2, "NA"] ] main_count = 0 session_type = 'news' if len(sys.argv) > 1: session_type = sys.argv[1] else: print("No parameter provided") while True: gpt_mini = "gpt-4.1-mini-2025-04-14" #gpt_mini = "deepseek" gpt_main = "o1-preview" # gpt_main = gpt_mini deepseek_key = "sk-774110440b0e44b9a004bc38451bc7f5" deepseek_key = api_key geography_obj = geographies[(main_count%len(geographies))] print(geography_obj) geography, max_items, lang = geography_obj[0], geography_obj[1], geography_obj[2] print(geography, max_items, lang) APIKEY = "ae5e326f-a428-41d3-b0c8-09f1746f98b1" ## Initailize News Api er = EventRegistry(apiKey=APIKEY, allowUseOfArchive=False) ### Usage #location = "http://en.wikipedia.org/wiki/United_States" # start_date = "2024-10-12" # Example start date # end_date = "2024-10-13" # Example end date # Get today's date and yesterday's date end_date = datetime.datetime.today().strftime("%Y-%m-%d") start_date = (datetime.datetime.today() - timedelta(days=2)).strftime("%Y-%m-%d") # print(start_date, end_date) google_queries_file_name = 'google_queries_may.csv' articles = [] # Fetch articles insta_article_count = len(articles) main_keyword = None # if main_count%40 == 0: # #articles = get_insta_articles() # #update_last_fetch_date() # news_articles = get_news_articles(er,start_date, end_date,geography, lang, max_items=max_items) # for single_article in news_articles: # articles.append(single_article) if session_type == 'news': if main_count%len(geographies) == 1: articles = get_insta_articles() update_last_fetch_date() news_articles = get_news_articles(er,start_date, end_date,geography, lang, max_items=max_items) interval = 3600 elif session_type == 'google': news_articles, main_keyword = get_article_obj(google_queries_file_name) if news_articles == None: print('deleting this query...') delete_first_element(google_queries_file_name) continue interval = 1800 # news_article_count = len(news_articles) # articles = articles[1:] for single_article in news_articles: articles.append(single_article) # Print the number of articles fetched print(f"Number of articles fetched: {len(articles)}") if len(articles) == 0: # time.sleep(24*60*60) continue # main_count = main_count+ 1 #print(articles) #main_count = 0 for article in tqdm(articles, desc="Processing News articles"): try: #print(article) content = article.get("body", "No content available") keywords = kw_search.extract_keywords(content,150) # print(f'content: {content}') # print(f'keywords: {keywords}') keywords_array = [main_keyword] for keyword, frequency in keywords: keywords_array.append(keyword) if len(keywords_array) == 0: print('no keywords found') time.sleep(interval) continue try: extra_prompt = f'''''' if main_count > insta_article_count: #means we are processsing insta articles extra_prompt = f''' - Do not include any company names - Do not include any individual/ person names ''' main_count = main_count +1 prompt = f'Output YES if the provided text is related to any of the following a. advertisement, b. meat, c. pork, dead animals, d. mentions pakistan, palestine, north korea or iran, e. suicide, murder, homicide, f.sports. Only answer YES OR NO. Text: {content}' is_advertisement = call_openai(prompt, 0, 100, gpt_mini, deepseek_key) print(is_advertisement) if "yes" in is_advertisement.lower(): #time.sleep(interval) try: delete_first_element(google_queries_file_name) except: print(traceback.format_exc()) continue prompt = f''' Task: Refine a keyword array. Input: {keywords_array} Instructions: 1. Review the provided keyword array. 2. Process the keywords as follows: a. Remove unnecessary terms, including: - Beef, Slaughter, Meat, Pork etc. b. Mandatorily retain all the keywords of locations, cities, states, countries c. Mandatorily retain all the keywords related to general agriculture, farming, farm machinery, harvest, fertilizers, farm inputs, irrigation, pest, disease, weeds, gis, forestry, traceability, soil, technology, consumer, employment, finance, insurance, law, real estate topics d. For compound words lacking spaces: - Add appropriate spacing - Reassess relevance after spacing e. Retain relevant abbreviations/acronyms {extra_prompt} 3. Output format: - Return only the refined array of keywords - Do not include any explanatory text or commentary Note: Don't include any new keyword which is not a part of the original input keyword array.''' # Note: Don't include any new keyword which is not a part of the original input keyword array.''' #prompt = f"Farmoanut an agritech startup is writing high ranking SEO articles for it's website. Remove all unnecessary keywords including any company names, person names from this array which should not be included in this blog. You can keep the location names if relevant. There may be few keywords which are a combination of multiple words but lack space between them. In such cases, add space between those words and then decide whether to keep the keyword in the array or not. If a keyword is an abbreviation/ acronym but relevant to Farmonaut, then keep it in the array. Strictly return only the keywords as array. Don't output any other text. Keyword Array: {keywords_array}" # keywords_array = call_genai(prompt,1, 1500) #print('keywords:',keywords_array) # keywords_array = string_to_array(keywords_array) #time.sleep(100000) # prompt = f'Summarize the content of this blog text in 500 words: {content}' #blog_summary = call_openai(prompt, 1, 2000, gpt_mini, deepseek_key) blog_summary = content #print(blog_summary) #prompt = f'''Task: Generate SEO keyphrases for an agritech startup's website content. prompt = f'''Task: Generate SEO keyphrases for a website content. Input: - Keywords: {keywords_array} - Reference Text: {blog_summary} Instructions: 1. Analyze the provided content text. 2. Identify up to 10 high-ranking SEO keyphrases based on the following criteria: - Relevant to the content's main topics - Likely to have high search volume - Do not include anything related to Beef, Slaughter, Meat, Pork etc. - Include a mix of short-tail and long-tail keyphrases - Ensure keyphrases are grammatically correct and make sense in context {extra_prompt} 3. Output format: - Return results as an array of strings - Each keyphrase should be its own element in the array - Do not include any explanatory text or commentary - If fewer than 10 suitable keyphrases are found, include only those that meet the criteria Example output format: ["keyphrase 1", "keyphrase 2", "keyphrase 3", ...] Note: Prioritize quality and relevance over quantity.''' #prompt = f"Farmoanut an agritech startup is writing high ranking SEO articles for it's website. Can you help identify upto 20 high ranking SEO keyphrases from this text. Don't include any keyphrase which includes a company's name or an individual's name. Strictly return result in an array format. Content Text: {content}" #keyphrases = call_genai(prompt,1, 4000) keyphrases = keywords_array #print(keyphrases) prompt = f'Identify the best tone and theme from the provided array for the content given below. Answer in less than 50 words. blog_tones_and_themes_array: {blog_tones_and_themes} , content: {content}' tone_and_theme = call_openai(prompt, 1, 200, gpt_mini, deepseek_key) if main_keyword is None: main_keyword = keyphrases[0] #print(tone_and_theme) prompt = f'''Task: Generate an SEO-optimized blog title for Farmonaut. Inputs: - Keywords: {keywords_array} - Key phrases: {keyphrases} - Summary: {blog_summary} - SEO guidelines {yoast_guidelines2["seo_best_practices"]["title_readability"]} - Tone and Theme: {tone_and_theme} Instructions: 1. Analyze the provided keywords, key phrases, tone and theme. 2. Create a single, compelling blog title that: - Incorporates 1-3 of the most relevant keywords, key phrases, tone and theme - Is optimized for search engine ranking - Accurately reflects the likely content of the blog - Is strictly less than 55 characters in length - Uses power words or emotional triggers if appropriate - Clearly communicates value to the reader - Do not include anything related to Beef, Slaughter, Meat, Pork etc. - Mandatorily Localize it if location names are available in keywords. - Use the Focus Keyword: {main_keyword} near the beginning of SEO title. - include at least one power word - {extra_prompt} 3. Language consideration: - If the keywords/phrases are not in English, craft the title in that specific language 4. Output format: - Return only the suggested title - Do not include any explanatory text, quotation marks, or additional commentary''' title = call_genai(prompt, 1, 20) print(title) if len(title) > 60: title = call_genai(f'strictly rewrite this title in less than 55 characters. Mandatorily Include Focus Keyword: {main_keyword}. do not output any other text. Title: {title}',1,20) print(title) #continue prompt = f'''Task: Generate an SEO-optimized blog summary. Inputs: - Keywords: {keywords_array} - Key phrases: {keyphrases} - Reference Text: {blog_summary} Instructions: 1. Create a 170-character summary that: - Incorporates the most relevant keywords and key phrases naturally - Provides a clear overview of the blog's main topics - Is optimized for search engine ranking - Farmonaut is not an online marketplace. Keep this in mind while writing the summary - Do not include anything related to Beef, Slaughter, Meat, Pork etc. - Engages the reader and encourages them to read the full blog - Tone and Theme: {tone_and_theme} - Highlights the value or insights the reader will gain {extra_prompt} 2. SEO Optimization: - Include 2-3 of the most important keywords in the first sentence - Distribute other keywords and phrases throughout the summary - Ensure the summary reads naturally, avoiding keyword stuffing - {yoast_guidelines2["seo_best_practices"]["basic_seo"]["meta_description"]} 3. Language consideration: - If the keywords/phrases are not in English, write the summary in that specific language 4. Structure: - Open with a hook or compelling statement - Briefly outline the main points or sections of the blog - Close with a teaser or call-to-action to read the full article 5. Output format: - Provide only the 150 character summary - Do not include any additional text, explanations, or metadata ''' #prompt = f"Farmonaut wants to publish a high ranking SEO blog comprising of the following keywords: {keywords_array}, and these keyphrases: {keyphrases}. Suggest a highranking SEO optimized context/summary for this blog in 150 words. If the keywords are in a language different than English, write the context/summary in that particular language only. Don't output any other text." # print(f'prompt: {prompt}') caption = call_genai(prompt, 1, 100) # print(f'caption: {caption}') post_data = { 'caption': caption, 'media': [] } prompt = f'''Make 2 interesting short quantitative trivia statements upto 20 words each based upon these: - title: {title} - information: {caption} - tone and theme: {tone_and_theme} - exclude: don't make trivia about benefits of drones and IoTs Output Format: -[trivia1, trivia2]''' trivias = call_genai(prompt, 0, 500) # trivias = call_genai(prompt, 1, 500) #print(trivias) prompt = f'''Identify 4 videos from this array which are in the format [(title, video_id)] which best match this content: {content}. Strictly return the response in this format [(title1, video_id1, title2, video_id2),...]. Video Array: {youtube_videos}. ''' suggested_videos = call_openai(prompt, 1, 500, gpt_mini, deepseek_key) # print(suggested_videos) prompt = f'''Task: Recommend an optimal table type for Farmonaut's SEO blog. Inputs: - Title: {title} - Context: {caption} - Tone and Theme: {tone_and_theme} Instructions: 1. Analyze the provided inputs to understand the blog's focus. 2. Suggest a table type that: - Enhances reader understanding of the content - Aligns with SEO best practices 3. Table recommendation criteria: - Clarity: Easily understood by target audience - Relevance: Directly relates to blog content - Using only estimated values while adding any quantitative data 4. Language consideration: - Use the same language as the provided inputs 5. Output format: - Provide a 150-word description of the recommended table - Focus on table type, key columns/rows - Do not include any additional text or explanations Note: Prioritize a table suggestion that adds substantive value to the blog.''' #prompt = f"Farmonaut wants to publish a high ranking SEO blog comprising of the following keywords: {keywords_array}, title: {title}, context: {caption}. Suggest what type of table will be the best to include in this blog. If the keywords, title, context are in a language different than English, suggest the table info in that particular language only. This table should make it clear to the reader how Farmonaut Satellite System can be useful in the context of this blog. Answer only in 50 words. Don't output any other text." table_info = call_genai(prompt, 1, 500) #print(table_info) # prompt = f''' # Task: Suggest two SEO-optimizing AI image descriptions (DALL-E 3) for a SEO optimized blog. # Inputs: # a. Keywords: {keywords_array} # b. Title: {title} # c. Context: {caption} # d. KeyPhrases: {keyphrases} # e. Tone and Theme {tone_and_theme} # Instructions: # 1. Analyze the provided inputs to understand the blog's theme and focus. # 2. Create two distinct image descriptions that: # - Strongly relate to the blog's content # - Incorporate relevant keywords naturally # - Enhance SEO potential and reader engagement # - Are highly detailed and realistic # - Avoid depicting specific individuals or people from the Middle East and India # - Don't depict drones and IoT Devices in the images # Image description criteria: # - Relevance: Directly supports blog content # - Vividness: Uses rich, descriptive language for clarity # - SEO value: Incorporates 2-3 key terms from the provided keywords # - Uniqueness: Each image should highlight different aspects of the topic # - Realism: Emphasize realistic, practical scenarios # Output format: # [ # "Detailed description of first image, incorporating relevant keywords and focusing on a key aspect of the blog topic.", # "Detailed description of second image, highlighting a different facet of the blog content or technologies, using appropriate keywords." # ] # Note: Focus on creating descriptions that would result in images that add significant value to the blog post while optimizing for search engines. Ensure descriptions are distinct from each other and highly relevant to the content. DO NOT OUTPUT ANY OTHER TEXT WITH THE RESPONSE. # ''' # #prompt = f"Farmonaut wants to publish a high ranking SEO blog comprising of the following a. keywords: {keywords_array}, b. title: {title}, c. context: {caption}. Suggest descriptions of two DALL-E generated AI images that should be added to the blog for achieving high search engine ranking. Make them extremely realistic wherever possible. Don't include any person from the middle east in the images. Provide response in the following array format: [image1_description, image2_description] Don't output any other text." # image_descriptions = call_genai(prompt, 1, 1000) # #print(image_descriptions) # image_descriptions = string_to_array(image_descriptions) # try: # image_descriptions = image_descriptions[:2] # except: # print(traceback.format_exc()) # media_url_arr = [] # #print(image_descriptions) # #time.sleep(10000) # for image_description in image_descriptions: # try: # media_url_arr.append(ai_image_url(image_description)) # except: # print(traceback.format_exc()) # if article.get("images", None) is not None: # for single_image in article.get("images"): # media_url_arr.append(single_image) # media_info = process_media2(media_url_arr, title) # if media_info: # post_data['media'].extend(media_info) # post_data['featured_media'] = media_info[0]['id'] if media_info else None # #print('media processed') stripe_html = ''' ''' prompt = f''' Create a comprehensive, blog post of atleast 3500 words on the following topic: - title: {title} - context: {caption} - summary: {blog_summary} Key requirements: - Tone and Theme: {tone_and_theme} - Use HTML formatting including ,

,

,

,

, ,
    ,
      ,
      , and

      tags where appropriate - Write in a first-person plural format (we, us, our, ours) only when discussing/ mentioning anything about Farmonaut - Include and naturally incorporate as many of these keywords: {keywords_array} - Include these key phrases: {keyphrases} - Write in the language of keywords/keywords if keywords/phrases are not in English - Mandatorily Localize the content if location names are available in keywords. - Base Farmonaut-specific information solely on this context: {farmonaut_info} - Do not include case studies, success stories, or any hallucinated information about Farmonaut - Embed the playable Youtube videos available in the format [('video_title', 'video_id')]: {suggested_videos}. Create the full Youtube video url: https://youtube.com/watch?v=video_id from the video_id. Uniformly add these videos within top 75% content of the blog. width: 100%, height: 500px, border-radius: 16px, box-shadow: 10px 10px 15px . - Add a beautifully formatted table based on this context: {table_info} - Add these trivias at the top and middle of the blog post:{trivias}. Make the trivia text bold, italic, within double-quotes, font-size: 50px, line-height: 50px, color: #034d5c - Add links: - App Button Image: https://farmonaut.com/Images/web_app_button.png, Link on this button: https://farmonaut.com/app_redirect, height: 80px - API: https://sat.farmonaut.com/api - API Developer Docs:https://farmonaut.com/farmonaut-satellite-weather-api-developer-docs/ - Android App Button Image: https://farmonaut.com/wp-content/uploads/2020/01/get_it_on_google_play.png, Link on this Button: https://play.google.com/store/apps/details?id=com.farmonaut.android, height: 80px - iOS App Button Image: https://farmonaut.com/wp-content/uploads/2020/01/available_on_app_store.png, Link on this Button: https://apps.apple.com/in/app/farmonaut/id1489095847, height: 80px - Smartly Decide the links of which of these Product Pages to insert. While inserting the link, briefly explain the use case, benefits etc. of thes: {product_pages} - Distribute these links within top 75% content of the blog with bold font - Add this custom HTML for Farmonaut subscriptions: {stripe_html} - Add an FAQ section - Use bullet points and subheadings (font color: #034d5c) to improve readability - Make the content mobile responsive Additional guidelines: - Use Focus Keyword in subheading(s) like H2, H3, H4, etc - use less than 10 H2 tags - don't use - Aim for around 1% Keyword Density in the blog - Do not mention any partnership or collaboration of any sort with anyone in the blog - Achieve Flesch Reading Ease Score of at least 60 - Provide detailed explanations and examples - Ensure all content is factual and based on provided information - Organize information logically with clear transitions between sections - Use varied sentence structures and vocabulary for engaging reading - images should not get skewed or go out of proportion when swtiching between web view and mobile view - Farmonaut is not an a. online marketplace, b. manufacturer/seller of farm inputs, farm machineries, c. a regulatory body. Keep this in mind while writing the summary - Don't include “`html and “` at the start and the end of the blog - This blog will be published on a wordpress website with elementor. Ensure the css styles don't affect the existing css ( pre-included default widgets already embedded on the blog page) - Mandatorily implement all the latest SEO guidelines provided by Yoast SEO: {yoast_guidelines2} Please generate the blog post based on these requirements, ensuring it's well-structured, and atleast 3500 words long.''' #prompt = f"Generate a HTML formatted very detailed and comprehensive blog post of at least 5000 words with ,

      ,

      , , ,
        ,
          ,
          ,

          , blocks wherever necessary in informational tone and as a first-person plural (we, us, our, ours) mandatorily including the following keywords: {keywords_array}. Mandatorily included these keyphrases as well: {keyphrases} \n\n. Don't include the title in the blog content. The blog needs to be at least 5000 words in length. If the keywords, keyphrases, title, context are in a language different than English, write the blog in that particular language only. Please don't include any hallucinated information about Farmonaut in the blog. It is strictly prohibited to include any case study or success story in the blog. To add any more details in the blog related to Farmonaut, use information from this text and further elaborate on it if necessary: {farmonaut_info} \n\n Strictly Incorporate these keywords into the blog: {keywords_array}. If any of the keywords look unrelated and out of context to the blog, then don't add them to the blog. Add Images (URLs) from this JSON object {post_data['media']} into the blog in blocks wherever necessary including the absolute top of the blog. Include the table in the blog using this context: {table_info}. Add links to https://farmonaut.com/app_redirect, https://sat.farmonaut.com/api, https://play.google.com/store/apps/details?id=com.farmonaut.android, https://apps.apple.com/in/app/farmonaut/id1489095847, https://farmonaut.com/farmonaut-satellite-weather-api-developer-docs/ wherever necessary. Include this custom HTML code for subscribing to Farmonaut: {stripe_html} \n Add bullet points and subheadings wherever necessary. Please include an FAQ section as well. The output should not have any other text apart from the content of the blog." blog_content = call_genai(prompt, 1, 14000) #blog_content = call_openai(prompt, 1, 8000, 'o3-mini', deepseek_key) # print(blog_content) category_ids = "south-america: 580, asia: 579, africa:578, united-kingdom: 577, canada: 576, europe: 575, australia: 574, blogs: 5, news:573, case_study:546, area_estimation:542, remote_sensing:9, precision_farming:548, api_development:572, usa:561" prompt = f'Based upon this title: {title}, and caption: {caption} , identify the best category id in which this title fits in: {category_ids}. Strictly only return the integer value as the response' category_id = call_genai(prompt, 0, 5) try: category_id = int(category_id) except: category_id = 5 if main_count <= insta_article_count: category_id = 573 #publish_to_wordpress(title, blog_content, post_data['media'], post_data['caption'], category_id) post_data['title'] = title post_data['content'] = blog_content post_data['status'] = 'publish' post_data['excerpt'] = caption post_data['comment_status'] = 'open' post_data['categories'] = [category_id] prompt = f"Can you convert this text into a url slug. Don't output any other text. Text to convert to url slug: {title}" slug = call_genai(prompt,0, 500) try: schema_media = [post_data['media'][0]['url'], post_data['media'][1]['url']] # print(schema_media) except: print(traceback.format_exc()) schema_media = media_url_arr #structured_schema_script = (f'') #print(structured_schema_script) post_data["content"] = blog_content publish_or_update_wordpress_post(wp_url, wp_username, wp_password, post_data) save_to_file('posts_done.txt', str(done_posts)) try: delete_first_element(google_queries_file_name) except: print(traceback.format_exc()) time.sleep(interval) except: print(traceback.format_exc()) time.sleep(70) remove_all_files_in_folder('insta_files') # delete_files.delete_files_and_empty_folders() # delete_files.delete_files_from_paths() except: time.sleep(10) print(traceback.format_exc()) #time.sleep(24*60*60) main()