# foodie_x_config.py from dotenv import load_dotenv import os load_dotenv() X_API_CREDENTIALS = [ { "username": "owenjohnson", "x_username": "@insiderfoodieowen", "api_key": os.getenv("OWENJOHNSON_X_API_KEY"), "api_secret": os.getenv("OWENJOHNSON_X_API_SECRET"), "access_token": os.getenv("OWENJOHNSON_X_ACCESS_TOKEN"), "access_token_secret": os.getenv("OWENJOHNSON_X_ACCESS_TOKEN_SECRET"), "client_secret": os.getenv("OWENJOHNSON_X_CLIENT_SECRET") }, { "username": "javiermorales", "x_username": "@insiderfoodiejavier", "api_key": os.getenv("JAVIERMORALES_X_API_KEY"), "api_secret": os.getenv("JAVIERMORALES_X_API_SECRET"), "access_token": os.getenv("JAVIERMORALES_X_ACCESS_TOKEN"), "access_token_secret": os.getenv("JAVIERMORALES_X_ACCESS_TOKEN_SECRET"), "client_secret": os.getenv("JAVIERMORALES_X_CLIENT_SECRET") }, { "username": "aishapatel", "x_username": "@insiderfoodieaisha", "api_key": os.getenv("AISHAPATEL_X_API_KEY"), "api_secret": os.getenv("AISHAPATEL_X_API_SECRET"), "access_token": os.getenv("AISHAPATEL_X_ACCESS_TOKEN"), "access_token_secret": os.getenv("AISHAPATEL_X_ACCESS_TOKEN_SECRET"), "client_secret": os.getenv("AISHAPATEL_X_CLIENT_SECRET") }, { "username": "trangnguyen", "x_username": "@insiderfoodietrang", "api_key": os.getenv("TRANGNGUYEN_X_API_KEY"), "api_secret": os.getenv("TRANGNGUYEN_X_API_SECRET"), "access_token": os.getenv("TRANGNGUYEN_X_ACCESS_TOKEN"), "access_token_secret": os.getenv("TRANGNGUYEN_X_ACCESS_TOKEN_SECRET"), "client_secret": os.getenv("TRANGNGUYEN_X_CLIENT_SECRET") }, { "username": "keishareid", "x_username": "@insiderfoodiekeisha", "api_key": os.getenv("KEISHAREID_X_API_KEY"), "api_secret": os.getenv("KEISHAREID_X_API_SECRET"), "access_token": os.getenv("KEISHAREID_X_ACCESS_TOKEN"), "access_token_secret": os.getenv("KEISHAREID_X_ACCESS_TOKEN_SECRET"), "client_secret": os.getenv("KEISHAREID_X_CLIENT_SECRET") }, { "username": "lilamoreau", "x_username": "@insiderfoodielila", "api_key": os.getenv("LILAMOREAU_X_API_KEY"), "api_secret": os.getenv("LILAMOREAU_X_API_SECRET"), "access_token": os.getenv("LILAMOREAU_X_ACCESS_TOKEN"), "access_token_secret": os.getenv("LILAMOREAU_X_ACCESS_TOKEN_SECRET"), "client_secret": os.getenv("LILAMOREAU_X_CLIENT_SECRET") } ] X_PERSONA_PROMPTS = { "Visionary Editor": ( "Craft a tweet as a commanding food editor with a bold, global view. Keep it under 280 characters, using a casual, hype tone like 'This is unreal!'. " "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ), "Foodie Critic": ( "Craft a tweet as a seasoned foodie reviewer with a sharp eye. Keep it under 280 characters, using a pro yet lively tone like 'This bangs!'. " "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ), "Trend Scout": ( "Craft a tweet as a forward-thinking editor obsessed with trends. Keep it under 280 characters, using an enthusiastic tone like 'This is the future, fam!'. " "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ), "Culture Connoisseur": ( "Craft a tweet as a cultured food writer who loves storytelling. Keep it under 280 characters, using a warm, reflective tone like 'This feels different, right?'. " "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ), "African-American Soul Food Sage": ( "Craft a tweet as a vibrant storyteller rooted in African-American culinary heritage. Keep it under 280 characters, using a soulful tone like 'This got that heat, y’all!'. " "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ), "Global Street Food Nomad": ( "Craft a tweet as an adventurous explorer of global street food. Keep it under 280 characters, using a bold, gritty tone like 'This is straight fire!'. " "For article tweets, include the article title, a quirky hook, and the URL. For personal tweets, reflect on your role at InsiderFoodie or background. " "Avoid emojis and clichés like 'game-changer'. Return only the tweet text." ) } AUTHOR_BACKGROUNDS_FILE = '/home/shane/foodie_automator/author_backgrounds.json' X_POST_COUNTS_FILE = '/home/shane/foodie_automator/x_post_counts.json' RECENT_POSTS_FILE = '/home/shane/foodie_automator/recent_posts.json'