├── src └── instagram │ ├── __init__.py │ ├── tools │ ├── __init__.py │ └── search.py │ ├── main.py │ ├── config │ ├── agents.yaml │ └── tasks.yaml │ └── crew.py ├── .gitignore ├── .env.example ├── pyproject.toml ├── market_research.md ├── README.md ├── final-content-strategy.md └── visual-content.md /src/instagram/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/instagram/tools/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .env 2 | __pycache__/ 3 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | OPENAI_MODEL_NAME=gpt-4-0125-preview 2 | OPENAI_API_KEY= 3 | SERPER_API_KEY= 4 | 5 | LANGCHAIN_TRACING_V2=true 6 | LANGCHAIN_API_KEY= -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- 1 | [tool.poetry] 2 | name = "instagram" 3 | version = "0.1.0" 4 | description = "instagram using crewAI" 5 | authors = ["Your Name "] 6 | 7 | [tool.poetry.dependencies] 8 | python = ">=3.10,<=3.13" 9 | crewai = {extras = ["tools"], version = "^0.27.0"} 10 | 11 | [tool.poetry.scripts] 12 | instagram = "instagram.main:run" 13 | 14 | [build-system] 15 | requires = ["poetry-core"] 16 | build-backend = "poetry.core.masonry.api" -------------------------------------------------------------------------------- /src/instagram/main.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | from instagram.crew import InstagramCrew 3 | import datetime 4 | 5 | 6 | def run(): 7 | # Replace with your inputs, it will automatically interpolate any tasks and agents information 8 | inputs = { 9 | 'current_date': datetime.datetime.now().strftime("%Y-%m-%d"), 10 | 'instagram_description': input('Enter the page description here: '), 11 | 'topic_of_the_week': input('Enter the topic of the week here: '), 12 | } 13 | InstagramCrew().crew().kickoff(inputs=inputs) -------------------------------------------------------------------------------- /src/instagram/tools/search.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | import os 4 | 5 | from langchain.tools import tool 6 | from langchain_community.document_loaders import WebBaseLoader 7 | 8 | class SearchTools: 9 | 10 | @tool('search internet') 11 | def search_internet(query: str) -> str: 12 | """ 13 | Use this tool to search the internet for information. This tools returns 5 results from Google search engine. 14 | """ 15 | return SearchTools.search(query) 16 | 17 | @tool('search instagram') 18 | def search_instagram(query: str) -> str: 19 | """ 20 | Use this tool to search Instagram. This tools returns 5 results from Instagram pages. 21 | """ 22 | return SearchTools.search(f"site:instagram.com {query}", limit=5) 23 | 24 | @tool('open page') 25 | def open_page(url: str) -> str: 26 | """ 27 | Use this tool to open a webpage and get the content. 28 | """ 29 | loader = WebBaseLoader(url) 30 | return loader.load() 31 | 32 | 33 | def search(query, limit=5): 34 | 35 | url = "https://google.serper.dev/search" 36 | payload = json.dumps({ 37 | "q": query, 38 | "num": limit, 39 | }) 40 | headers = { 41 | 'X-API-KEY': os.getenv("SERPER_API_KEY"), 42 | 'Content-Type': 'application/json' 43 | } 44 | response = requests.request("POST", url, headers=headers, data=payload) 45 | results = response.json()['organic'] 46 | 47 | string = [] 48 | for result in results: 49 | string.append(f"{result['title']}\n{result['snippet']}\n{result['link']}\n\n") 50 | 51 | return f"Search results for '{query}':\n\n" + "\n".join(string) 52 | 53 | 54 | if __name__ == "__main__": 55 | print(SearchTools.open_page("https://www.python.org/")) -------------------------------------------------------------------------------- /market_research.md: -------------------------------------------------------------------------------- 1 | **Instagram Hashtag and Content Strategy Report for "Castles in Germany"** 2 | 3 | **Introduction:** 4 | This report synthesizes findings from comprehensive research into current trends, popular hashtags, and competitor activities on Instagram, with a focus on castles in Germany. The goal is to leverage these insights to enhance the visibility and engagement of our Instagram page dedicated to castles. 5 | 6 | **Trending Hashtags for 2024:** 7 | Based on analysis, the following hashtags are identified as crucial for maximizing reach and engagement for our upcoming content on "castles in Germany": 8 | 9 | 1. **General Hashtags for Broad Reach:** 10 | - #castle (18.9M posts) 11 | - #travel (731.9M posts) 12 | - #photography (1.1B posts) 13 | - #travelphotography (235.5M posts) 14 | - #nature (809M posts) 15 | 16 | 2. **Specific Hashtags Trending for Castle Enthusiasts in 2024:** 17 | - #architecture (188.9M posts) 18 | - #history (49.9M posts) 19 | - #photooftheday (1.1B posts) 20 | - #art (1.1B posts) 21 | - #chateau (3M posts) 22 | 23 | 3. **Hashtags Directly Related to German Castles:** 24 | - #schloss (1.6M posts) 25 | - #hohenzollerncastle (21K posts) 26 | - #medievalcastle (179K posts) 27 | 28 | **Content Strategy Insights:** 29 | - **Visuals:** High-quality, breathtaking visuals of castles during different times of the day can significantly enhance engagement. Featuring less-known castles alongside popular ones like Neuschwanstein can offer fresh content to our audience. 30 | - **Stories and Reels:** Utilize trending hashtags within stories and reels to showcase behind-the-scenes tours, castle histories, and cultural significances, tapping into the #history and #architecture interest. 31 | - **Engagement:** Encourage user interaction by asking followers to share their own castle visits or bucket list castles in Germany using our curated hashtags, fostering a community of castle enthusiasts. 32 | 33 | **Conclusion:** 34 | Employing a strategic mix of the identified hashtags will not only increase our content's visibility but also position our Instagram page as a go-to resource for castle enthusiasts interested in exploring German castles. This strategy, supplemented by engaging visuals and interactive content, sets the stage for significant growth in followers and engagement in 2024. -------------------------------------------------------------------------------- /src/instagram/config/agents.yaml: -------------------------------------------------------------------------------- 1 | market_researcher: 2 | role: > 3 | Instagram Market Researcher 4 | goal: > 5 | Analyze industry trends, competitor activities, and popular hashtags on Instagram. And perform research on the latest trends, hashtags, and competitor activities on Instagram using your Search tools. 6 | backstory: > 7 | Armed with a keen eye for digital trends and a deep understanding of the Instagram landscape, you excel at uncovering actionable insights from social media data. Your analytical skills are unmatched, providing a solid foundation for strategic decisions in content creation. You are great at identifying the latest trends and the best hashtags for a given campaign. 8 | 9 | content_strategist: 10 | role: > 11 | Instagram Content Strategist 12 | goal: > 13 | Develop a content calendar based on market research findings, incorporating trends, optimal posting times, and strategic content themes. 14 | backstory: > 15 | As a master planner with a creative spirit, you have a talent for envisioning a cohesive content strategy that resonates with audiences. Your expertise in aligning content with brand voice and audience interests has consistently driven engagement and growth. 16 | 17 | visual_creator: 18 | role: > 19 | Instagram Visual Creator 20 | goal: > 21 | Generate a detailed description of the images that will be used in the instagram account during the current week tailored to the content strategy. 22 | backstory: > 23 | Merging creativity with technology, you use words to bring visions to life. You are great at crafting a detailed image description that can be used as a prompt for an AI-image generator. Your descriptions are more than just images; they tell stories, evoke emotions, and capture the essence of the brand, setting the visual tone for the Instagram feed. 24 | 25 | copywriter: 26 | role: > 27 | Instagram Copywriter 28 | goal: > 29 | Craft engaging and relevant copy for each Instagram post, complementing the visual content and adhering to the strategic content themes. 30 | backstory: > 31 | With a flair for storytelling and a persuasive pen, you create narratives that captivate and engage the audience. Your words are the bridge between the brand and its followers, embodying the brand's voice in every caption and call to action. Your writing is not only engaging, but also it incorporates all the SEO techniques, such as seamlessly using top keywords given to you and adding the best hashtags that are trending at the moment. 32 | 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Instagram Crew 2 | 3 | Welcome to the Instagram Crew project, powered by [crewAI](https://crewai.com). This template is designed to help you set up a multi-agent AI system with ease, leveraging the powerful and flexible framework provided by crewAI. Our goal is to enable your agents to collaborate effectively on complex tasks, maximizing their collective intelligence and capabilities. 4 | 5 | ## Installation 6 | 7 | Ensure you have Python >=3.10 <=3.13 installed on your system. This project uses [Poetry](https://python-poetry.org/) for dependency management and package handling, offering a seamless setup and execution experience. 8 | 9 | First, if you haven't already, install Poetry: 10 | 11 | ```bash 12 | pip install poetry 13 | ``` 14 | 15 | Next, navigate to your project directory and install the dependencies: 16 | 17 | 1. First lock the dependencies and then install them: 18 | ```bash 19 | poetry lock 20 | ``` 21 | ```bash 22 | poetry install 23 | ``` 24 | ### Customizing 25 | 26 | **Add your `OPENAI_API_KEY` into the `.env` file** 27 | 28 | - Modify `src/instagram/config/agents.yaml` to define your agents 29 | - Modify `src/instagram/config/tasks.yaml` to define your tasks 30 | - Modify `src/instagram/crew.py` to add your own logic, tools and specific args 31 | - Modify `src/instagram/main.py` to add custom inputs for your agents and tasks 32 | 33 | ## Running the Project 34 | 35 | To kickstart your crew of AI agents and begin task execution, run this from the root folder of your project: 36 | 37 | ```bash 38 | poetry run instagram 39 | ``` 40 | 41 | This command initializes the instagram Crew, assembling the agents and assigning them tasks as defined in your configuration. 42 | 43 | This example, unmodified, will run the create a `report.md` file with the output of a research on LLMs in the root folser 44 | 45 | ## Understanding Your Crew 46 | 47 | The instagram Crew is composed of multiple AI agents, each with unique roles, goals, and tools. These agents collaborate on a series of tasks, defined in `config/tasks.yaml`, leveraging their collective skills to achieve complex objectives. The `config/agents.yaml` file outlines the capabilities and configurations of each agent in your crew. 48 | 49 | ## Support 50 | 51 | For support, questions, or feedback regarding the Instagram Crew or crewAI. 52 | - Visit our [documentation](https://docs.crewai.com) 53 | - Reach out to us through our [GitHub repository](https://github.com/joaomdmoura/crewai) 54 | - [Joing our Discord](https://discord.com/invite/X4JWnZnxPb) 55 | - [Chat wtih our docs](https://chatg.pt/DWjSBZn) 56 | 57 | Let's create wonders together with the power and simplicity of crewAI. -------------------------------------------------------------------------------- /src/instagram/crew.py: -------------------------------------------------------------------------------- 1 | from crewai import Agent, Crew, Process, Task 2 | from crewai.project import CrewBase, agent, crew, task 3 | from instagram.tools.search import SearchTools 4 | 5 | # Uncomment the following line to use an example of a custom tool 6 | # from instagram.tools.custom_tool import MyCustomTool 7 | 8 | # Check our tools documentations for more information on how to use them 9 | # from crewai_tools import SerperDevTool 10 | 11 | 12 | @CrewBase 13 | class InstagramCrew: 14 | """Instagram crew""" 15 | 16 | agents_config = "config/agents.yaml" 17 | tasks_config = "config/tasks.yaml" 18 | 19 | @agent 20 | def market_researcher(self) -> Agent: 21 | return Agent( 22 | config=self.agents_config["market_researcher"], 23 | tools=[ 24 | SearchTools.search_internet, 25 | SearchTools.search_instagram, 26 | SearchTools.open_page, 27 | ], 28 | verbose=True, 29 | ) 30 | 31 | @agent 32 | def content_strategist(self) -> Agent: 33 | return Agent(config=self.agents_config["content_strategist"], verbose=True) 34 | 35 | @agent 36 | def visual_creator(self) -> Agent: 37 | return Agent( 38 | config=self.agents_config["visual_creator"], 39 | verbose=True, 40 | allow_delegation=False, 41 | ) 42 | 43 | @agent 44 | def copywriter(self) -> Agent: 45 | return Agent(config=self.agents_config["copywriter"], verbose=True) 46 | 47 | @task 48 | def market_research(self) -> Task: 49 | return Task( 50 | config=self.tasks_config["market_research"], 51 | agent=self.market_researcher(), 52 | output_file="market_research.md", 53 | ) 54 | 55 | @task 56 | def content_strategy_task(self) -> Task: 57 | return Task( 58 | config=self.tasks_config["content_strategy"], 59 | agent=self.content_strategist(), 60 | ) 61 | 62 | @task 63 | def visual_content_creation_task(self) -> Task: 64 | return Task( 65 | config=self.tasks_config["visual_content_creation"], 66 | agent=self.visual_creator(), 67 | output_file="visual-content.md", 68 | ) 69 | 70 | @task 71 | def copywriting_task(self) -> Task: 72 | return Task( 73 | config=self.tasks_config["copywriting"], 74 | agent=self.copywriter(), 75 | ) 76 | 77 | @task 78 | def report_final_content_strategy(self) -> Task: 79 | return Task( 80 | config=self.tasks_config["report_final_content_strategy"], 81 | agent=self.content_strategist(), 82 | output_file="final-content-strategy.md", 83 | ) 84 | 85 | @crew 86 | def crew(self) -> Crew: 87 | """Creates the Instagram crew""" 88 | return Crew( 89 | agents=self.agents, # Automatically created by the @agent decorator 90 | tasks=self.tasks, # Automatically created by the @task decorator 91 | process=Process.sequential, 92 | verbose=2, 93 | # process=Process.hierarchical, # In case you wanna use that instead https://docs.crewai.com/how-to/Hierarchical/ 94 | ) 95 | -------------------------------------------------------------------------------- /final-content-strategy.md: -------------------------------------------------------------------------------- 1 | # Final Content Strategy Report for "Castles in Germany" Instagram Page 2 | 3 | ## Market Research Findings 4 | Our market research indicates a growing interest in cultural heritage, historical architecture, and travel within Germany. There is a notable spike in engagement for content that combines visual storytelling with informative and inspirational text. Specifically, content related to castles in Germany is highly engaging due to its blend of history, beauty, and the fairy-tale allure that appeals to a wide audience range. Trends suggest that posts featuring lesser-known castles and stories tied to specific times of day (e.g., dawn and dusk) perform exceptionally well, as they offer unique perspectives and invite followers to share their experiences. 5 | 6 | ## Content Calendar 7 | 8 | ### Tuesday: Dawn and Dusk - The Enigmatic Silhouettes of German Castles 9 | - **Morning Post (9 a.m.):** Neuschwanstein Castle at dawn. 10 | - **Midday Story (12 p.m.):** Time-lapse of Hohenzollern Castle. 11 | - **Afternoon Post (3 p.m.):** Eltz Castle at dusk. 12 | 13 | ### Wednesday: A Journey Through Time - Exploring the History and Legends of German Castles 14 | - **Morning Post (9 a.m.):** Wartburg Castle in autumn. 15 | - **Midday Reel (12 p.m.):** Heidelberg Castle ruins. 16 | - **Afternoon Post (3 p.m.):** Schwerin Castle at sunset. 17 | 18 | ### Thursday: Hidden Gems - Unveiling the Lesser-Known Castles of Germany 19 | - **Morning Post (9 a.m.):** Burg Eltz in the morning mist. 20 | - **Midday Story (12 p.m.):** Quiz on lesser-known castles. 21 | - **Afternoon Post (3 p.m.):** Lichtenstein Castle on the cliff. 22 | 23 | ## AI-Generated Images Description 24 | Given the constraints, detailed descriptions of hypothetical AI-generated images are provided to complement the post copy: 25 | - **Dawn and Dusk:** Images would capture the silhouettes of the castles against vibrant skies, highlighting the play of light and shadow, accentuating the mystical and fairy-tale aspect of each castle. 26 | - **A Journey Through Time:** The visuals would focus on the rich textures and details of the castles' architecture, with autumn colors enhancing the historical ambiance. Special attention would be given to ruins, showcasing their beauty amidst greenery. 27 | - **Hidden Gems:** The images would emphasize the sense of discovery and adventure, with castles appearing to emerge from the mist or perched dramatically on cliffs, inviting exploration. 28 | 29 | ## Content Strategy Rationale 30 | The strategy is designed to align with audience preferences for visually stunning, emotionally engaging, and informative content. By focusing on themes such as "Dawn and Dusk," "A Journey Through Time," and "Hidden Gems," we aim to captivate our audience's imagination, encourage interaction by sharing personal experiences, and foster a sense of community among castle enthusiasts. This approach not only leverages trending interests and optimal posting times but also ensures a diverse range of content that appeals to different segments of our target audience. The AI-generated images, described in detail, would visually complement our engaging post copy, further enhancing follower engagement and page growth. 31 | 32 | This comprehensive strategy, grounded in market research and meticulously planned content themes, positions the "Castles in Germany" Instagram page to captivate and grow its audience effectively. -------------------------------------------------------------------------------- /visual-content.md: -------------------------------------------------------------------------------- 1 | ```markdown 2 | # Instagram Visual Content Descriptions for "Castles in Germany" Page 3 | 4 | ## **Tuesday: Dawn and Dusk - The Enigmatic Silhouettes of German Castles** 5 | 6 | ### Morning Post (9 a.m.) 7 | - **Visual Description:** An ethereal scene capturing Neuschwanstein Castle at dawn. The castle is perched atop a rugged hill, surrounded by dense forests. The early morning light bathes the scene in a soft, golden hue, with mists rolling over the distant mountains in the background. The castle's iconic turrets and towers stand out against the pastel-colored sky, creating a mesmerizing silhouette. The overall mood is serene and mystical, inviting viewers into a fairy-tale world. 8 | - **Colors:** Soft gold, pastel blues and pinks, deep greens 9 | - **Mood:** Serene, Mystical 10 | 11 | ### Midday Story (12 p.m.) 12 | - **Visual Description:** A time-lapse sequence showcasing the sunrise at Hohenzollern Castle. The castle sits majestically on a forested hill, with the early morning darkness gradually giving way to the first light of day. The video captures the castle's imposing structure as it emerges from the night, illuminated by the warm sunrise colors. The surrounding landscape transitions from shadowy contours to a vibrant scene bathed in sunlight, highlighting the castle's commanding presence. 13 | - **Colors:** Dark blues to warm oranges, yellows, and light blues 14 | - **Mood:** Awakening, Majestic 15 | 16 | ### Afternoon Post (3 p.m.) 17 | - **Visual Description:** Eltz Castle is captured in the warm, soft glow of dusk. The castle, nestled in a lush valley, is illuminated by the setting sun, with the surrounding trees casting long shadows. The sky is a gradient of warm oranges and pinks, transitioning into cooler blues and purples. The castle's intricate architecture is highlighted, creating a striking contrast against the vibrant sky. The image invites contemplation and a deep connection to the historical beauty before us. 18 | - **Colors:** Warm oranges, pinks, cool blues, purples 19 | - **Mood:** Tranquil, Reflective 20 | 21 | ## **Wednesday: A Journey Through Time - Exploring the History and Legends of German Castles** 22 | 23 | ### Morning Post (9 a.m.) 24 | - **Visual Description:** Wartburg Castle stands proud amidst a sea of autumn foliage. The castle's robust and medieval architecture is complemented by the vibrant reds, oranges, and yellows of the surrounding trees. A crisp, clear sky offers a vivid backdrop, emphasizing the castle's historical might and enduring legacy. The image conveys a sense of timelessness and invites viewers to delve into the legends that echo through its halls. 25 | - **Colors:** Vibrant reds, oranges, yellows, clear blue sky 26 | - **Mood:** Timeless, Inviting 27 | 28 | ### Midday Reel (12 p.m.) 29 | - **Visual Description:** A captivating reel that takes viewers on a journey through the ruins of Heidelberg Castle. The visuals transition from the grand exterior facades, with their intricate details and storied scars, to the intimate interior courtyards that whisper tales of the past. The narration weaves historical facts with legends, enhancing the visual experience. The ruins are framed by the lush greenery of the surrounding landscape, underlining the beauty in decay. 30 | - **Colors:** Earthy tones, greens, stone greys 31 | - **Mood:** Mystical, Enthralling 32 | 33 | ### Afternoon Post (3 p.m.) 34 | - **Visual Description:** Schwerin Castle is reflected perfectly in the calm waters of the surrounding lake at sunset. The Renaissance architectural elegance of the castle is highlighted by the soft, diffused light of the setting sun, casting a golden glow over the scene. The sky is painted in shades of pink, orange, and purple, adding a dreamy quality to the image. This visual captures the essence of romanticism and invites viewers to bask in the tranquil beauty of the scene. 35 | - **Colors:** Golden glow, pink, orange, purple 36 | - **Mood:** Romantic, Peaceful 37 | 38 | ## **Thursday: Hidden Gems - Unveiling the Lesser-Known Castles of Germany** 39 | 40 | ### Morning Post (9 a.m.) 41 | - **Visual Description:** Burg Eltz, a lesser-known marvel, is shrouded in the early morning mist. The castle appears as if emerging from a storybook, nestled in the heart of an ancient forest. The image captures the castle's unique charm and architectural integrity, inviting viewers to explore the untold stories and hidden corners of Germany's fairy-tale landscapes. The mood is mysterious and inviting, stirring the imagination and wanderlust of the viewer. 42 | - **Colors:** Muted greens, earth tones, misty whites 43 | - **Mood:** Mysterious, Enchanting 44 | 45 | ### Midday Story (12 p.m.) 46 | - **Visual Description:** An interactive story featuring close-up shots of distinctive architectural and natural features of lesser-known German castles. Each story frame serves as a visual quiz question, with followers encouraged to guess the castle. Reveals are dramatic and engaging, showcasing the full beauty of each castle in its landscape. The visuals are rich and detailed, highlighting the diversity and intrigue of Germany's hidden gems. 47 | - **Colors:** Rich, varied depending on the castle and landscape 48 | - **Mood:** Curious, Engaging 49 | 50 | ### Afternoon Post (3 p.m.) 51 | - **Visual Description:** Lichtenstein Castle is perched precariously on the edge of a cliff, as if defying gravity. The image captures the castle's dramatic setting and fairy-tale appearance, with a panoramic view of the lush valley below. The late afternoon sun casts long shadows, enhancing the sense of depth and drama. This visual invites followers to dream and share castles that spark their own fantasies, embodying the essence of adventure and discovery. 52 | - **Colors:** Vibrant greens, deep shadows, soft sunlight 53 | - **Mood:** Dramatic, Inspirational 54 | ``` -------------------------------------------------------------------------------- /src/instagram/config/tasks.yaml: -------------------------------------------------------------------------------- 1 | market_research: 2 | description: > 3 | Investigate the latest trends, hashtags, and competitor activities on Instagram specific to the industry of this Instagram account. Focus on gathering data that reveals what content performs well in the current year, identifying patterns, preferences, and emerging trends. 4 | 5 | Current date: {current_date} 6 | 7 | Description of the instagram account for which you are doing this research: 8 | {instagram_description} 9 | 10 | Find the most relevant topics, hashtags and trends to use the the posts for next week. The focus of the following week is the following: 11 | {topic_of_the_week} 12 | 13 | expected_output: > 14 | A report with the most relevant information that you found, including relevant hashtags for this week's content and all other information that could be useful to the team working on content creation. 15 | 16 | content_strategy: 17 | description: > 18 | Based on the market research findings, develop a comprehensive content calendar for a week. The calendar should specify the theme for each day of the week (from Monday to Sunday) where some content should be posted, and preliminary ideas for post content. For now, focus on a three-day content calendar, including the most relevant keywords and hashtags to use in each post. 19 | expected_output: > 20 | A detailed week-long content calendar, formatted as markdown, that includes days of the week (from monday to friday), a brief overview of content ideas, and the most relevant keywords and hashtags to use in each post. Ensure the calendar aligns with the identified trends and audience preferences. 21 | 22 | visual_content_creation: 23 | description: > 24 | Based on the content strategy for each Instagram post, create the the visual art that will be published on Instagram on each day of the week. To do that, you will need to create a detailed description of the image that you will use for each day. 25 | The descriptions that you will use need to be detailed, yet concise, and should include the main elements that should be present in the image. Describe the colors, the objects, the mood, and any other relevant information that you think is important for the image to be created. 26 | 27 | Here are some examples of the descriptions that you could use: 28 | - A realistic image of a living room with a modern design. The room should have a large window with a view of a cityscape. The color palette should be neutral, with a pop of color in the form of a red sofa. The room should be well-lit, with a cozy and inviting atmosphere. 29 | - A minimalist image of a desk with a laptop, a notebook, and a cup of coffee. The desk should be made of light wood, and the background should be a plain white wall. The image should convey a sense of focus and productivity. 30 | - A vibrant image of a tropical beach at sunset. The beach should be deserted, with palm trees swaying in the wind. The sky should be a mix of warm colors, with the sun setting on the horizon. The image should evoke a sense of relaxation and tranquility. 31 | 32 | expected_output: > 33 | A markdown document with detailed descriptions of the images that will be used for each Instagram post of the week. Each description should be concise and include the main elements, colors, mood, and any other relevant information that will guide the creation of the image. The descriptions should align with the content calendar and the identified trends. 34 | 35 | copywriting: 36 | description: > 37 | Write captivating and relevant copy for each Instagram post of the week, aligning to the strategic themes of the content calendar. The copy should engage the audience, embody the brand's voice, and encourage interaction. The copy should also be SEO-friendly and incorporate the relevant keywords and hashtags contained in the content schedule. 38 | 39 | Consider the following guidelines when writing the copy: 40 | - Keep the copy concise and engaging. 41 | - Include a call to action where appropriate. 42 | - Use relevant keywords and hashtags. 43 | - Ensure the copy aligns with the brand's voice and tone. 44 | 45 | Here are some examples of the copy that you could use: 46 | - "Hello everyone! :heart: We're excited to share our latest collection with you. Check out our website for more details. #newcollection #fashion #style" 47 | - "Happy Monday! :sunflower: Start your week right with our delicious smoothies. Visit our store today! #smoothies #healthyliving #mondaymotivation" 48 | - "Feeling stressed? :massage: Treat yourself to a relaxing spa day. Book now and unwind in luxury. #spaday #relaxation #selfcare" 49 | expected_output: > 50 | A document formatted as markdown, with several sections. Each section should contain the copy for a single Instagram post, along with the relevant hashtags and calls to action. The copy should be engaging, on-brand, and aligned with the content calendar. 51 | 52 | report_final_content_strategy: 53 | description: > 54 | Compile a comprehensive report that outlines the final content strategy for the week. The report should include the market research findings, the content calendar, the copy for each post, and the AI-generated images. Provide a brief rationale for the strategy, explaining how it aligns with the identified trends and audience preferences. 55 | 56 | expected_output: > 57 | A detailed report that includes the market research findings, the content calendar, the copy for each post, and the AI-generated images. The report should be formatted as markdown and include a brief rationale for the strategy, explaining how it aligns with the identified trends and audience preferences. 58 | --------------------------------------------------------------------------------