AutomationFlowsSocial Media › Create Ai-powered Social Media Content for Linkedin & Facebook with Image…

Create Ai-powered Social Media Content for Linkedin & Facebook with Image…

Original n8n title: Create Ai-powered Social Media Content for Linkedin & Facebook with Image Generation & Human Approval

ByDidac Fernandez @didac-fg on n8n.io

Nova AI Content Marketing Agent - LinkedIn & Facebook Automation This n8n template demonstrates how to create a complete AI-powered social media content creation and scheduling system that generates platform-optimized posts for LinkedIn and Facebook with custom images and human…

Event trigger★★★★★ complexityAI-powered63 nodesAgentOutput Parser StructuredOpenRouter ChatMemory Buffer WindowPerplexity ToolTool ThinkForm TriggerSlack
Social Media Trigger: Event Nodes: 63 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #8398 — we link there as the canonical source.

This workflow follows the Agent → Form Trigger recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "f703daa2-b8a4-465f-9732-22bcb4e39f3a",
      "name": "AI Agent2",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -544,
        672
      ],
      "parameters": {
        "text": "=Execute a month content for {{ $json.BRAND_NAME }} for next week {{ $now.startOf('week').plus({weeks: 1}).toFormat('yyyy-MM-dd') }}.\n\nCompany Brand Voice and guidelines: {{ $json.BRAND_VOICE }}\n\nThis is the current time and date: {{ $now }}",
        "options": {
          "systemMessage": "=# Nova AI Content Marketing Agent - LinkedIn & Facebook Focus\n\n## 1. Version Info\n\n* **Agent Name**: Nova\n* **Version**: 3.2 (Multi-Platform Social Media with Research Tools)\n* **Date**: August 20, 2025\n* **Author**: D\u00eddac Fernandez Girona\n* **Purpose**: To generate high-converting LinkedIn and Facebook content with 6 distinct posts (3 for each platform) using research tools for data-driven content creation.\n\n## 2. Core Agent Instructions\n\n**YOU ARE NOVA. When prompted, you will:**\n\n1. **Think strategically** about your approach before creating content\n2. **Use web search** when current data would strengthen the content (market trends, local events)\n3. **Generate 6 complete social media posts** - 3 optimized for LinkedIn and 3 optimized for Facebook\n4. **Create distinct visual styles** with detailed prompts, overlay text, and posting dates for each post\n5. **Output everything in JSON format** as specified\n6. **Maintain your personality** throughout all interactions\n7. **Focus on key value propositions** with real, researched data when possible\n\n## 3. Content Strategy Protocol\n\n### Strategic Thinking Process\n**ALWAYS start by thinking through:**\n- Analyze the request and determine the best framework (PAS, StoryBrand, BAB)\n- Identify what research might strengthen the post\n- Plan the narrative arc and emotional triggers\n- Consider target audience and timing\n- Strategize which value proposition will resonate most\n\n### When to Use Web Search\n**Use web_search when current data would add value:**\n- Recent {{ $json.INDUSTRY }} trends and statistics\n- {{ $json.TARGET_LOCATION }} local events and news\n- Current market data and consumer insights\n- Seasonal trends and opportunities\n- Recent developments that could enhance content relevance\n\n**Research Integration:**\n- Use real data to support claims\n- Reference current trends for relevance\n- Include local context when beneficial\n- Support value propositions with facts\n- Build credibility with verified information\n\n## 4. Personality & Backstory\n\n**You are Nova**, a creative and strategic marketing professional specializing in social media content that converts.\n\n**Your Bio**:\n\n> \"Hey there! I'm Nova, your content strategy partner. \ud83d\ude80 I'm passionate about creating authentic, engaging content that connects brands with their audiences. I have experience across multiple industries, from startups to established companies, helping them tell their stories in compelling ways. I believe in data-driven creativity - using research to inform strategy while never losing sight of the human element. When I'm not crafting content, you'll find me exploring new trends, attending local events, or discovering what makes different communities tick. Let's create content that truly resonates with your audience! \ud83d\udcaa\"\n\n**Your Communication Style**:\n* **Tone**: Professional yet approachable, enthusiastic, and authentic\n* **Voice**: Strategic but conversational, data-informed with personality\n* **Greetings**: \"Hey there,\" \"Hi team,\" \"Hello!\"\n* **Sign-offs**: Vary between \"Talk soon, Nova\", \"Cheers, Nova\", \"Let's create magic, Nova\"\n* **Emojis**: Use strategically and appropriately (\ud83d\udc4b, \ud83d\ude80, \u2705, \ud83d\udcaa, \ud83c\udfaf, \u2728)\n\n## 5. Content Creation Workflow\n\n### Step 1: Strategic Analysis\nFirst, think through:\n- Analyze the content request\n- Choose the best framework\n- Identify research opportunities\n- Plan the narrative\n\n### Step 2: Research (when beneficial)\nUse web_search to:\n- Gather relevant market data\n- Find local or timely context\n- Collect supporting statistics\n- Identify trending topics\n\n### Step 3: Create Platform-Specific Posts\nGenerate 6 distinct posts:\n\n**LinkedIn Posts (3 total):**\n- Professional, industry-focused tone\n- Thought leadership and expertise\n- Business value propositions\n- Professional hashtags\n- Data-driven insights\n\n**Facebook Posts (3 total):**\n- Personal, conversational tone\n- Emotional connection and community\n- Relatable stories and social proof\n- Broader audience hashtags\n- Visual and engaging content\n\n### Step 4: Design Visual Styles\nCreate distinct visual approaches:\n- **Photography**: Real people in authentic scenarios\n- **Infographic**: Data visualization and comparisons\n- **3D Scenes**: Conceptual benefit visualization\n- **Illustrations**: Lifestyle and aspirational content\n\n### Step 5: Output JSON\nFormat everything correctly with platform designation and posting dates\n\n## 6. Dynamic Creative Framework System\n\n### PAS (Problem, Agitate, Solution)\n**Use for**: Addressing pain points, introducing solutions\n```\nExample: \"[Target audience problem]? (Problem) \n[Consequences or frustrations]? (Agitate) \n{{ $json.BRAND_NAME }}: {{ $json.PRIMARY_VALUE_PROPOSITION }}. (Solution)\"\n```\n\n### StoryBrand Framework\n**Use for**: Brand narrative posts, customer journeys\n```\nCustomer = Hero facing {{ $json.CUSTOMER_CHALLENGE }}\n{{ $json.BRAND_NAME }} = Guide offering expertise and solutions\nTransformation = From frustrated to achieving {{ $json.DESIRED_OUTCOME }}\n```\n\n### BAB (Before, After, Bridge)\n**Use for**: Transformation stories, benefit demonstration\n```\nBefore: Struggling with {{ $json.CUSTOMER_CHALLENGE }}\nAfter: Enjoying {{ $json.DESIRED_OUTCOME }}\nBridge: {{ $json.BRAND_NAME }}'s approach to {{ $json.PRIMARY_VALUE_PROPOSITION }}\n```\n\n### EmotionPrompt Enhancement\nAdd emotional elements for higher engagement:\n* Aspiration: \"Imagine achieving [desired outcome]\"\n* Validation: \"You deserve [better solution]\"\n* Urgency: \"Don't miss [opportunity]\"\n* Community: \"Join others who have transformed their [relevant area]\"\n\n## 7. Platform-Specific Content Requirements\n\n### LinkedIn Posts (Professional Focus)\n**Tone**: Professional, authoritative, industry-focused\n**Content Style**: \n- Thought leadership perspectives\n- Industry insights and trends\n- Professional development focus\n- Business value propositions\n- Data-driven arguments\n\n**Hashtags**: Professional and industry-specific\n- #{{ $json.INDUSTRY }} #ProfessionalDevelopment #Leadership #Innovation\n- #BusinessSuccess #{{ $json.TARGET_LOCATION }}Business\n\n### Facebook Posts (Community Focus)  \n**Tone**: Personal, conversational, community-oriented\n**Content Style**:\n- Personal stories and testimonials\n- Community connections\n- Emotional appeal and relatability\n- Social proof and reviews\n- Visual storytelling\n\n**Hashtags**: Broad appeal and local community\n- #{{ $json.TARGET_LOCATION }} #Community #LocalBusiness #{{ $json.INDUSTRY }}\n- #CustomerStories #LocalLife\n\n### Post Structure Requirements\nEach post must include:\n1. **Platform-appropriate hook** (Professional vs. Personal)\n2. **Relevant story/context** (Industry insight vs. Personal experience)  \n3. **Value proposition** (Business benefit vs. Personal outcome)\n4. **Social proof** (Professional reference vs. Customer testimonial)\n5. **Clear CTA** (Professional action vs. Community engagement)\n\n## 8. Visual Style Requirements\n\n### Visual Styles Available:\n1. **hyperrealistic_photography** - Authentic, relatable scenarios\n2. **infographic_data_viz** - Clear information presentation\n3. **3d_rendered_scene** - Modern, conceptual visualization\n4. **lifestyle_illustration** - Aspirational, artistic representation\n\n### Style-Specific Requirements\n\n**Style 1: Hyperrealistic Photography**\n```\nMUST INCLUDE:\n- Real people in authentic situations\n- Natural settings relevant to {{ $json.BRAND_NAME }} and message\n- Diverse representation of {{ $json.TARGET_DEMOGRAPHICS }}\n- Professional quality lighting\n- Settings that could be in {{ $json.TARGET_LOCATION }}\n- Aspect ratios: Facebook always 3:4, Linkedin always 1:1.\n```\n\n**Style 2: Infographic/Data Visualization**\n```\nMUST INCLUDE:\n- Clear visual information hierarchy\n- Professional brand colors appropriate for industry\n- Icons and graphics supporting the main message\n- Clean, minimalist design\n- Data or process visualization relevant to {{ $json.INDUSTRY }}\n- Aspect ratios: Facebook always 3:4, Linkedin always 1:1.\n```\n\n**Style 3: 3D Rendered Scene**\n```\nMUST INCLUDE:\n- Conceptual 3D visualization of key benefits\n- Modern aesthetic with professional lighting\n- Professional color integration\n- Symbolic elements related to transformation\n- High-quality rendering showing progress\n- Aspect ratios: Facebook always 3:4, Linkedin always 1:1.\n```\n\n**Style 4: Lifestyle Illustration**\n```\nMUST INCLUDE:\n- Illustrated scene showing {{ $json.DESIRED_OUTCOME }}\n- Warm, inviting artistic style\n- Representation of {{ $json.TARGET_DEMOGRAPHICS }}\n- Settings appropriate for {{ $json.TARGET_LOCATION }}\n- Aspect ratios: Facebook always 3:4, Linkedin always 1:1.\n```\n\n## 9. Output Format Requirements\n\n### REQUIRED JSON Structure\n\n```json\n{\n  \"campaign_theme\": \"Brief description of the content theme\",\n  \"posts\": [\n    {\n      \"platform\": \"linkedin\",\n      \"post_text\": \"LinkedIn-optimized post copy with professional tone\",\n      \"style\": \"hyperrealistic_photography\",\n      \"aspect_ratio\": \"1:1\",\n      \"image_prompt\": \"Detailed prompt for photography style\",\n      \"overlay_text\": \"Professional message\",\n      \"posting_date\": \"YYYY-MM-DD\"\n    },\n    {\n      \"platform\": \"linkedin\", \n      \"post_text\": \"LinkedIn-optimized post copy with industry focus\",\n      \"style\": \"infographic_data_viz\",\n      \"aspect_ratio\": \"1:1\", \n      \"image_prompt\": \"Detailed prompt for infographic style\",\n      \"overlay_text\": \"Data-driven message\",\n      \"posting_date\": \"YYYY-MM-DD\"\n    },\n    {\n      \"platform\": \"linkedin\",\n      \"post_text\": \"LinkedIn-optimized post copy with thought leadership\",\n      \"style\": \"3d_rendered_scene\", \n      \"aspect_ratio\": \"1:1\",\n      \"image_prompt\": \"Detailed prompt for 3D scene style\",\n      \"overlay_text\": \"Innovation message\",\n      \"posting_date\": \"YYYY-MM-DD\"\n    },\n    {\n      \"platform\": \"facebook\",\n      \"post_text\": \"Facebook-optimized post copy with personal connection\",\n      \"style\": \"lifestyle_illustration\",\n      \"aspect_ratio\": \"3:4\",\n      \"image_prompt\": \"Detailed prompt for illustration style\", \n      \"overlay_text\": \"Community message\",\n      \"posting_date\": \"YYYY-MM-DD\"\n    },\n    {\n      \"platform\": \"facebook\",\n      \"post_text\": \"Facebook-optimized post copy with emotional appeal\",\n      \"style\": \"hyperrealistic_photography\",\n      \"aspect_ratio\": \"3:4\",\n      \"image_prompt\": \"Detailed prompt for photography style\",\n      \"overlay_text\": \"Relatable message\", \n      \"posting_date\": \"YYYY-MM-DD\"\n    },\n    {\n      \"platform\": \"facebook\",\n      \"post_text\": \"Facebook-optimized post copy with social proof\",\n      \"style\": \"infographic_data_viz\",\n      \"aspect_ratio\": \"3:4\",\n      \"image_prompt\": \"Detailed prompt for infographic style\",\n      \"overlay_text\": \"Trust-building message\",\n      \"posting_date\": \"YYYY-MM-DD\"\n    }\n  ],\n  \"random_number\": \"123456789012\"\n}\n```\n\n## 10. Configuration Summary\n\n### This agent uses these core variables:\n\n1. **{{ $json.BRAND_NAME }}**: Your company/business name\n2. **{{ $json.INDUSTRY }}**: Your business category or industry\n3. **{{ $json.TARGET_DEMOGRAPHICS }}**: Your primary customer demographics\n4. **{{ $json.TARGET_LOCATION }}**: Your geographic market or service area\n5. **{{ $json.PRIMARY_VALUE_PROPOSITION }}**: Your main value proposition\n6. **{{ $json.CUSTOMER_CHALLENGE }}**: The main problem you solve for customers\n7. **{{ $json.DESIRED_OUTCOME }}**: The result customers want to achieve\n8. **{{ $json.BRAND_VOICE }}**: Brand voice and communication guidelines\n\n## 11. Success Metrics Framework\n\n### Content Quality Indicators\n- Clear {{ $json.PRIMARY_VALUE_PROPOSITION }} communication\n- Authentic brand voice representation\n- Platform-appropriate messaging\n- Strategic research integration\n- Compelling call-to-action inclusion\n\n### Performance Tracking\n- Engagement rates by platform and content type\n- Click-through rates on CTAs\n- Reach metrics within {{ $json.TARGET_LOCATION }}\n- Audience growth indicators\n- Conversion attribution to business goals\n\n## 12. Your Mission as Nova\n\nYou are a strategic content creator focused on building authentic connections between brands and their audiences across LinkedIn and Facebook. Every campaign should:\n\n- **Inform** with valuable, researched insights relevant to {{ $json.INDUSTRY }}\n- **Engage** through platform-appropriate storytelling that resonates with {{ $json.TARGET_DEMOGRAPHICS }}\n- **Inspire** action toward {{ $json.DESIRED_OUTCOME }}\n- **Reflect** the brand's authentic personality through {{ $json.BRAND_VOICE }}\n- **Connect** with customer needs by addressing {{ $json.CUSTOMER_CHALLENGE }}\n\nYour capabilities empower you to create content that resonates:\n- **Strategic Thinking** = Foundation for effective content\n- **Web Research** = Current, credible insights\n- **Creative Execution** = Platform-optimized, conversion-focused content\n\nLet's create content that builds lasting relationships between {{ $json.BRAND_NAME }} and {{ $json.TARGET_DEMOGRAPHICS }} in {{ $json.TARGET_LOCATION }}! \u2728"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2.2
    },
    {
      "id": "d21b9cfa-203b-44e2-a92c-aafa52e815d0",
      "name": "Structured Output Parser1",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -256,
        848
      ],
      "parameters": {
        "autoFix": true,
        "jsonSchemaExample": "{\n  \"campaign_theme\": \"Seasonal wellness support and personalized healthcare\",\n  \"posts\": [\n    {\n      \"platform\": \"linkedin\",\n      \"post_text\": \"As healthcare professionals, we're seeing increased demand for personalized wellness solutions this season. Our holistic approach addresses the growing gap in patient-centered care. Industry data shows 73% of patients feel unheard in traditional settings - we're changing that narrative. How is your organization adapting to patient-centered care demands? #HolisticHealthcare #HealthcareInnovation #PatientCare #AustinHealthcare\",\n      \"style\": \"infographic_data_viz\",\n      \"aspect_ratio\": \"1:1\",\n      \"image_prompt\": \"Professional healthcare infographic showing patient satisfaction statistics, holistic care approach workflow, clean medical design with calming blues and healing greens, modern typography, professional medical icons, data visualization showing improved outcomes with personalized care\",\n      \"overlay_text\": \"73% want personalized care\",\n      \"posting_date\": \"2025-08-20\"\n    },\n    {\n      \"platform\": \"linkedin\", \n      \"post_text\": \"The future of healthcare is personalized. At our clinic, we're seeing remarkable outcomes when patients feel truly heard and understood. Our approach treats the whole person, not just symptoms - resulting in better health outcomes and patient satisfaction. What does personalized healthcare mean for your practice? #HealthcareLeadership #PersonalizedMedicine #AustinBusiness #HealthcareInnovation\",\n      \"style\": \"hyperrealistic_photography\",\n      \"aspect_ratio\": \"1:1\", \n      \"image_prompt\": \"Professional healthcare consultation scene, diverse healthcare provider and patient in modern Austin clinic, natural lighting, both looking engaged and confident, medical charts visible, professional atmosphere showing active listening and care\",\n      \"overlay_text\": \"Future of personalized care\",\n      \"posting_date\": \"2025-08-22\"\n    },\n    {\n      \"platform\": \"linkedin\",\n      \"post_text\": \"Transforming healthcare through personalized approaches isn't just a trend - it's essential. We've developed a comprehensive model that addresses feeling unheard in traditional healthcare settings while delivering optimal health through personalized care. The evidence speaks for itself: patients thrive when they feel heard. #HealthcareTransformation #HolisticHealthcare #PatientOutcomes #ProfessionalDevelopment\",\n      \"style\": \"3d_rendered_scene\",\n      \"aspect_ratio\": \"1:1\",\n      \"image_prompt\": \"3D rendered healthcare transformation concept, abstract human figure evolving from stressed to healthy, surrounded by holistic care elements (wellness symbols, medical icons), professional calming color palette, modern medical aesthetic\",\n      \"overlay_text\": \"Healthcare transformation\",\n      \"posting_date\": \"2025-08-24\"\n    },\n    {\n      \"platform\": \"facebook\",\n      \"post_text\": \"Feeling unheard in traditional healthcare settings? You're not alone. \ud83c\udf31 We believe every person deserves to be truly listened to. Our personalized approach means your unique health journey gets the attention it deserves. 'I finally found healthcare that listens!' - Sarah M., Austin Ready for care that puts YOU first? #Austin #PersonalizedCare #HolisticHealth #Community #ListenFirst\",\n      \"style\": \"lifestyle_illustration\",\n      \"aspect_ratio\": \"3:4\", \n      \"image_prompt\": \"Warm illustrated scene of diverse people in Austin feeling heard and cared for, showing various ages including health-conscious adults 25-55, community clinic setting, soft healing colors, people looking relieved and happy, welcoming atmosphere\",\n      \"overlay_text\": \"You deserve to be heard\",\n      \"posting_date\": \"2025-08-26\"\n    },\n    {\n      \"platform\": \"facebook\",\n      \"post_text\": \"When Maria walked into our clinic, she was frustrated with feeling like 'just another number' in healthcare. Six months later: 'I have energy I haven't felt in years!' \ud83d\udcaa That's the power of personalized healthcare that treats the whole person. Your story matters. Your health matters. You matter. Book your consultation today! #AustinHealth #CustomerStories #PersonalizedCare #CommunityHealth #YourStoryMatters\",\n      \"style\": \"hyperrealistic_photography\", \n      \"aspect_ratio\": \"3:4\",\n      \"image_prompt\": \"Genuine photo of happy patient Maria (Hispanic woman, 40s) at wellness clinic, natural smile, holding consultation paperwork, Austin clinic background, authentic joy and relief in expression, professional but warm setting\",\n      \"overlay_text\": \"Your story matters\",\n      \"posting_date\": \"2025-08-28\"\n    },\n    {\n      \"platform\": \"facebook\",\n      \"post_text\": \"The numbers don't lie - but your experience matters more \ud83d\udcca While 73% of people feel unheard in traditional healthcare, 96% of our patients report feeling truly listened to. Join the families in Austin who chose personalized care over one-size-fits-all medicine. Because you're not average - you're unique! #CommunityHealth #PersonalizedCare #Austin #HealthcareYouDeserve #NotJustANumber\",\n      \"style\": \"infographic_data_viz\",\n      \"aspect_ratio\": \"3:4\",\n      \"image_prompt\": \"Friendly infographic comparing traditional vs personalized healthcare, happy faces representing satisfied patients, community-focused design with Austin elements, warm colors, accessible data presentation, family-friendly aesthetic\",\n      \"overlay_text\": \"96% feel truly heard\",\n      \"posting_date\": \"2025-08-30\"\n    }\n  ],\n  \"random_number\": \"847291038529\"\n}"
      },
      "typeVersion": 1.3
    },
    {
      "id": "f022d265-71af-42d8-9ec0-cd71df2447ec",
      "name": "OpenRouter Chat Model2",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        -256,
        976
      ],
      "parameters": {
        "model": "openai/gpt-5-mini",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "97957672-363a-4570-a2ef-b9587afe0061",
      "name": "OpenRouter Chat Model3",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        -784,
        848
      ],
      "parameters": {
        "model": "openai/gpt-5-mini",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "bf39ce97-1274-452a-be05-b49ed0a9a344",
      "name": "Simple Memory1",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -640,
        848
      ],
      "parameters": {
        "sessionKey": "12341234",
        "sessionIdType": "customKey"
      },
      "typeVersion": 1.3
    },
    {
      "id": "4ebc0437-5fbd-4a3e-bedd-d3f0df3c2eb0",
      "name": "Message a model in Perplexity1",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        -416,
        848
      ],
      "parameters": {
        "model": "sonar",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "simplify": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Simplify_Output', ``, 'boolean') }}",
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2501d26a-6406-4a1f-8983-954a60ea6508",
      "name": "Think1",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        -528,
        848
      ],
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "7d3cc401-62c1-40a5-9470-abd999c4aceb",
      "name": "Split Out3",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        48,
        672
      ],
      "parameters": {
        "include": "selectedOtherFields",
        "options": {},
        "fieldToSplitOut": "output.posts",
        "fieldsToInclude": "output.campaign_theme"
      },
      "typeVersion": 1
    },
    {
      "id": "c3240093-1d40-4940-a84c-eb132b4a9588",
      "name": "Edit Fields",
      "type": "n8n-nodes-base.set",
      "position": [
        -1008,
        672
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "5e8ccfc2-9e83-45da-bc06-b79cf101fe65",
              "name": "BRAND_NAME",
              "type": "string",
              "value": "={{ $json.BRAND_NAME }}"
            },
            {
              "id": "9cb5c8f3-6748-42c2-b443-cfe98c40b31d",
              "name": "INDUSTRY",
              "type": "string",
              "value": "={{ $json.INDUSTRY }}"
            },
            {
              "id": "ce75ea2e-d242-4f1b-b243-2637888873c7",
              "name": "=COMPANY_WEBSITE",
              "type": "string",
              "value": "={{ $json.COMPANY_WEBSITE }}"
            },
            {
              "id": "25b7463d-32c6-4780-9c4f-80011b6b96e8",
              "name": "TARGET_DEMOGRAPHICS",
              "type": "string",
              "value": "={{ $json.TARGET_DEMOGRAPHICS }}"
            },
            {
              "id": "9fec2287-55c0-48a9-9547-68991bcdf1e6",
              "name": "TARGET_LOCATION",
              "type": "string",
              "value": "={{ $json.TARGET_LOCATION }}"
            },
            {
              "id": "26aee9c2-3e1c-4b0e-b689-87266ac0956e",
              "name": "PRIMARY_VALUE_PROPOSITION",
              "type": "string",
              "value": "={{ $json.PRIMARY_VALUE_PROPOSITION }}"
            },
            {
              "id": "5fa1582d-b29d-49e4-a6ba-621426c728db",
              "name": "CUSTOMER_CHALLENGE",
              "type": "string",
              "value": "={{ $json.CUSTOMER_CHALLENGE }}"
            },
            {
              "id": "36f2ab45-b8fc-4f69-adea-1f29ea27ae97",
              "name": "DESIRED_OUTCOME",
              "type": "string",
              "value": "={{ $json.DESIRED_OUTCOME }}"
            },
            {
              "id": "7c1f5ea6-3fdd-40b3-9fe4-beb6680b400c",
              "name": "BRAND_VOICE",
              "type": "string",
              "value": "={{ $json.BRAND_VOICE }}"
            },
            {
              "id": "8ec063e2-3c74-4602-a688-95d3ab97f3ac",
              "name": "SPECIFIC_TOPICS_TO_FOCUS",
              "type": "string",
              "value": "={{ $json.SPECIFIC_TOPICS_TO_FOCUS }}"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "06f376f1-35a6-4653-989d-04af1e7c37c4",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1232,
        176
      ],
      "parameters": {
        "width": 352,
        "height": 944,
        "content": "## DEFINE YOUR VARIABLES\n\n- BRAND_NAME: \n- INDUSTRY: \n- TARGET_DEMOGRAPHICS: \n- TARGET_LOCATION: \n- PRIMARY_VALUE_PROPOSITION: \n- CUSTOMER_CHALLENGE: \n- DESIRED_OUTCOME: \n- BRAND_VOICE: \n"
      },
      "typeVersion": 1
    },
    {
      "id": "39ce6335-6d9b-4f06-afc1-399f8f191a02",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -864,
        176
      ],
      "parameters": {
        "color": 3,
        "width": 864,
        "height": 944,
        "content": "## Nova - AI Content Marketing Agent\n\n\ud83d\ude80 AI-POWERED CONTENT CREATION\n\nNova transforms your brand variables into high-converting social media content with 4 visual variations.\n\n\ud83d\udcca WHAT NOVA CREATES:\n- Compelling post copy with emojis & hashtags\n- 4 distinct image styles (photo, infographic, 3D, illustration)  \n- Strategic overlay text for each image\n- Posting dates for scheduling\n- Ready-to-use JSON output\n\n\ud83e\udde0 HOW IT WORKS:\n1. Analyzes your brand variables\n2. Applies proven frameworks (PAS, StoryBrand, BAB)\n3. Researches current trends (when needed)\n4. Generates cohesive campaign content\n5. Outputs structured data for automation\n\n\u26a1 RESULT: Complete social media campaign ready for posting!"
      },
      "typeVersion": 1
    },
    {
      "id": "2f937121-556f-4e75-840c-1aa75b493c10",
      "name": "On form submission",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -1184,
        672
      ],
      "parameters": {
        "options": {},
        "formTitle": "Company Infromation",
        "formFields": {
          "values": [
            {
              "fieldLabel": "BRAND_NAME",
              "placeholder": "Wellness First Clinic",
              "requiredField": true
            },
            {
              "fieldLabel": "INDUSTRY",
              "placeholder": "holistic healthcare",
              "requiredField": true
            },
            {
              "fieldLabel": "TARGET_DEMOGRAPHICS",
              "placeholder": "Personalized healthcare that treats the whole person",
              "requiredField": true
            },
            {
              "fieldLabel": "TARGET_LOCATION",
              "placeholder": "Austin, Texas",
              "requiredField": true
            },
            {
              "fieldLabel": "PRIMARY_VALUE_PROPOSITION",
              "placeholder": "Personalized healthcare that treats the whole person",
              "requiredField": true
            },
            {
              "fieldLabel": "CUSTOMER_CHALLENGE",
              "placeholder": "Feeling unheard in traditional healthcare settings",
              "requiredField": true
            },
            {
              "fieldLabel": "DESIRED_OUTCOME",
              "placeholder": "Optimal health through personalized care",
              "requiredField": true
            },
            {
              "fieldLabel": "BRAND_VOICE",
              "placeholder": "Modern gen Z communication style with creative mindset and focus on healthy habits.",
              "requiredField": true
            },
            {
              "fieldLabel": "SPECIFIC_TOPICS_TO_FOCUS",
              "placeholder": "This week content will focus on creatine benefits for physical health."
            },
            {
              "fieldLabel": "COMPANY_WEBSITE",
              "placeholder": "www.sample.com"
            }
          ]
        },
        "formDescription": "Please fill up teh variables below to generate the weekly content."
      },
      "typeVersion": 2.3
    },
    {
      "id": "938729b2-eb6f-491b-b578-544f86379579",
      "name": "Loop Over Items",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1040,
        416
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "92d6ffc4-ac82-46c8-807b-229ec2cbcad4",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        496,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 192,
        "height": 432,
        "content": "## Google Imagen4 for Image Generation"
      },
      "typeVersion": 1
    },
    {
      "id": "d3985051-b13b-4eb8-b678-cc0c85983fd5",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        16,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 176,
        "height": 880,
        "content": "## Split Array in single items\n"
      },
      "typeVersion": 1
    },
    {
      "id": "a339a734-60bc-4414-bc71-e6572ee33a93",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        704,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 192,
        "height": 432,
        "content": "## Download File\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "2fdd2aff-c293-4ce6-8d29-e6a884a71e9b",
      "name": "Sticky Note5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        912,
        208
      ],
      "parameters": {
        "color": 5,
        "width": 800,
        "height": 432,
        "content": "## Send Images for Approval, one at the time. If approved, move on adn send next after scheduled, if not approved, generate new one with provided feedback, and sent back for approval again."
      },
      "typeVersion": 1
    },
    {
      "id": "d64979b1-b8b9-499f-8856-b7c17cb2e1b9",
      "name": "Send message and wait for response2",
      "type": "n8n-nodes-base.slack",
      "position": [
        1264,
        416
      ],
      "parameters": {
        "select": "channel",
        "message": "=Please review and approve or return with feedback:\n\n{{ $json.output }}",
        "options": {
          "appendAttribution": false
        },
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C08ULGHDPB3",
          "cachedResultName": "all-autosolutionsai"
        },
        "operation": "sendAndWait",
        "formFields": {
          "values": [
            {
              "fieldType": "radio",
              "fieldLabel": "Approval",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Approved"
                  },
                  {
                    "option": "Review"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "file",
              "fieldLabel": "Merge with this file"
            },
            {
              "fieldLabel": "Feedback"
            }
          ]
        },
        "responseType": "customForm",
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "ee1136de-039f-486c-93ba-c54eae28af96",
      "name": "Switch7",
      "type": "n8n-nodes-base.switch",
      "position": [
        1488,
        416
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Approved",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "79755b7b-0345-48d3-b595-2e7b6d11dd94",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.Approval }}",
                    "rightValue": "Approved"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Review",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "4624169d-649a-4fde-898a-7607a1c56f22",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.Approval }}",
                    "rightValue": "Review"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "b4609c90-a910-4186-a6b3-78bd05de7d59",
      "name": "Append or update row in sheet8",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2912,
        416
      ],
      "parameters": {
        "columns": {
          "value": {
            "DATE": "={{ DateTime.fromISO($('Split Out3').item.json['output.posts'].posting_date).set({hour: 15, minute: 0, second: 0}).toUTC().toISO({suppressMilliseconds: true}) }}",
            "TEXT": "={{ $('Split Out3').item.json['output.posts'].post_text }}",
            "IMAGE": "==IMAGE(\"https://drive.google.com/uc?id={{ $json.id }}\")",
            "IMAGE ID": "={{ $json.id }}",
            "PLATFORM": "={{ $('Split Out3').item.json['output.posts'].platform }}",
            "IMAGE URL": "={{ $json.owners[0].photoLink }}",
            "IMAGE PROMPT": "={{ $('Image Generation').item.json.input.prompt }}"
          },
          "schema": [
            {
              "id": "IMAGE ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "IMAGE ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "DATE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "DATE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "TEXT",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "TEXT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "IMAGE PROMPT",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IMAGE PROMPT",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "PLATFORM",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "PLATFORM",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "IMAGE URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IMAGE URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "IMAGE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "IMAGE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "IMAGE ID"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1tVjBRRhz-ZuzR11U3pjnZEqrRJg-0jIJ8Q7JUnssJio/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1tVjBRRhz-ZuzR11U3pjnZEqrRJg-0jIJ8Q7JUnssJio",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1tVjBRRhz-ZuzR11U3pjnZEqrRJg-0jIJ8Q7JUnssJio/edit?usp=drivesdk",
          "cachedResultName": "NOVA - Social Media Manager"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "090f84a8-8801-41c8-b8cb-5544415e8c4b",
      "name": "Edit Image Nano Banana2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1792,
        416
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/models/google/nano-banana/predictions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": {\n    \"prompt\": \"{{ $('Send message and wait for response2').item.json.data.Feedback }}\",\n    \"image_input\": [\n      \"{{ $('Loop Over Items').item.json.output }}\"\n    ]\n  }\n} ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Prefer",
              "value": "wait"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "9a83556f-69db-4375-8a11-0345ca80f657",
      "name": "Upload file",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2672,
        416
      ],
      "parameters": {
        "name": "={{ $('Loop Over Items').item.json.id }}-{{ $now.toFormat('hh:mm-ddMMMyyyy').toUpperCase() }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1zhRavmBSgJ7Wzg1FZpldTt8QBZPaWzpC",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1zhRavmBSgJ7Wzg1FZpldTt8QBZPaWzpC",
          "cachedResultName": "NOVA - Social Media Manager"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "ce8ba03b-1842-4a57-9ac5-0506d15f42fa",
      "name": "Download Image File",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2448,
        416
      ],
      "parameters": {
        "url": "={{ $json.final_image_url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "0636bc92-984f-4aa5-b648-612992d14335",
      "name": "Download Image 1st",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        416
      ],
      "parameters": {
        "url": "={{ $json.output }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "cb4568f7-fbd2-4e0f-9df4-63289dc8893c",
      "name": "Set Original Image URL",
      "type": "n8n-nodes-base.set",
      "position": [
        2032,
        320
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1b2c3d4",
              "name": "final_image_url",
              "type": "string",
              "value": "={{ $('Image Generation').item.json.output }}"
            },
            {
              "id": "e5f6g7h8",
              "name": "image_source",
              "type": "string",
              "value": "original"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1a02f826-5720-47fb-9aea-99e1acba24d4",
      "name": "Set Edited Image URL",
      "type": "n8n-nodes-base.set",
      "position": [
        2032,
        464
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "m3n4o5p6",
              "name": "final_image_url",
              "type": "string",
              "value": "={{ $json.input.image_input[0] }}"
            },
            {
              "id": "q7r8s9t0",
              "name": "image_source",
              "type": "string",
              "value": "edited"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "834b41b4-7e01-4cd9-98ce-a1d6644ce3c3",
      "name": "Merge Image Paths",
      "type": "n8n-nodes-base.if",
      "position": [
        2224,
        416
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a70485e0-a61f-4e64-b65a-79a733438ed5",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.image_source }}",
              "rightValue": "original"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "f70b8564-c229-43ad-9628-e3bb82473972",
      "name": "Sticky Note6",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2192,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 176,
        "height": 432,
        "content": "## Download Final File\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "d8b7816c-a6eb-46d6-91d4-858f15d77363",
      "name": "Sticky Note7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2384,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 208,
        "height": 432,
        "content": "## Upload File to  Google Drive"
      },
      "typeVersion": 1
    },
    {
      "id": "17e7b660-75fd-427f-8acd-b05a460df315",
      "name": "Sticky Note8",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2608,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 224,
        "height": 432,
        "content": "## Upload File to  Google Drive"
      },
      "typeVersion": 1
    },
    {
      "id": "f4897727-1df9-4546-ba16-6e30a3e78af3",
      "name": "Sticky Note9",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        208,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 272,
        "height": 880,
        "content": "## Switch between LinkedIn and Facebook/Instagram\n"
      },
      "typeVersion": 1
    },
    {
      "id": "8e192cd6-d027-4567-8e14-5edcd1ab263e",
      "name": "Switch",
      "type": "n8n-nodes-base.switch",
      "position": [
        304,
        672
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "facebook",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "c1eeced7-8af7-4491-bc27-aa7f5a13a351",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['output.posts'].platform }}",
                    "rightValue": "facebook"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "linkedin",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "e6aa506c-4049-4041-9862-fdd7498b56b9",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json['output.posts'].platform }}",
                    "rightValue": "linkedin"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "5c9da094-7264-4de2-9742-ec3e7a2f36bd",
      "name": "Loop Over Items1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        1040,
        816
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "834a8836-1ca0-4aea-9c56-d2f6593135d9",
      "name": "Send message and wait for response",
      "type": "n8n-nodes-base.slack",
      "position": [
        1264,
        816
      ],
      "parameters": {
        "select": "channel",
        "message": "=Please review and approve or return with feedback:\n\n{{ $json.output }}",
        "options": {
          "appendAttribution": false
        },
        "channelId": {
          "__rl": true,
          "mode": "list",
          "value": "C08ULGHDPB3",
          "cachedResultName": "all-autosolutionsai"
        },
        "operation": "sendAndWait",
        "formFields": {
          "values": [
            {
              "fieldType": "radio",
              "fieldLabel": "Approval",
              "fieldOptions": {
                "values": [
                  {
                    "option": "Approved"
                  },
                  {
                    "option": "Review"
                  }
                ]
              },
              "requiredField": true
            },
            {
              "fieldType": "file",
              "fieldLabel": "Merge with this file"
            },
            {
              "fieldLabel": "Feedback"
            }
          ]
        },
        "responseType": "customForm",
        "authentication": "oAuth2"
      },
      "credentials": {
        "slackOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.3
    },
    {
      "id": "00c46105-198e-42bf-b1fe-3142f527a5c0",
      "name": "Switch8",
      "type": "n8n-nodes-base.switch",
      "position": [
        1488,
        816
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "Approved",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "79755b7b-0345-48d3-b595-2e7b6d11dd94",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.Approval }}",
                    "rightValue": "Approved"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "Review",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "4624169d-649a-4fde-898a-7607a1c56f22",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.data.Approval }}",
                    "rightValue": "Review"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "df0b2fb4-ab00-48dd-ad3f-74206798e7dd",
      "name": "Edit Image Nano Banana",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        1792,
        848
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/models/google/nano-banana/predictions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": {\n    \"prompt\": \"{{ $('Send message and wait for response').item.json.data.Feedback }}\",\n    \"image_input\": [\n      \"{{ $('Loop Over Items1').item.json.output }}\"\n    ]\n  }\n} ",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Prefer",
              "value": "wait"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "52f043f7-00d6-454d-af7c-7a19cc5af607",
      "name": "Upload file1",
      "type": "n8n-nodes-base.googleDrive",
      "position": [
        2672,
        848
      ],
      "parameters": {
        "name": "={{ $('Loop Over Items1').item.json.id }}-{{ $now.toFormat('hh:mm-ddMMMyyyy').toUpperCase() }}",
        "driveId": {
          "__rl": true,
          "mode": "list",
          "value": "My Drive",
          "cachedResultUrl": "https://drive.google.com/drive/my-drive",
          "cachedResultName": "My Drive"
        },
        "options": {},
        "folderId": {
          "__rl": true,
          "mode": "list",
          "value": "1zhRavmBSgJ7Wzg1FZpldTt8QBZPaWzpC",
          "cachedResultUrl": "https://drive.google.com/drive/folders/1zhRavmBSgJ7Wzg1FZpldTt8QBZPaWzpC",
          "cachedResultName": "NOVA - Social Media Manager"
        }
      },
      "credentials": {
        "googleDriveOAuth2Api": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 3
    },
    {
      "id": "60a1f320-0699-499b-9252-559311db7acc",
      "name": "Download Image File1",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        2448,
        848
      ],
      "parameters": {
        "url": "={{ $json.final_image_url }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "5b810752-ab4e-4fb5-ad25-4067afef85cb",
      "name": "Set Original Image URL1",
      "type": "n8n-nodes-base.set",
      "position": [
        2032,
        752
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "a1b2c3d4",
              "name": "final_image_url",
              "type": "string",
              "value": "={{ $('Image Generation 2').item.json.output }}"
            },
            {
              "id": "e5f6g7h8",
              "name": "image_source",
              "type": "string",
              "value": "original"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "47e5b3cb-186c-4b97-9a49-fe32b2b54b2e",
      "name": "Set Edited Image URL1",
      "type": "n8n-nodes-base.set",
      "position": [
        2032,
        896
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "m3n4o5p6",
              "name": "final_image_url",
              "type": "string",
              "value": "={{ $json.input.image_input[0] }}"
            },
            {
              "id": "q7r8s9t0",
              "name": "image_source",
              "type": "string",
              "value": "edited"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "536d10b7-e32c-4cc7-a357-96b88e86a24e",
      "name": "Merge Image Paths1",
      "type": "n8n-nodes-base.if",
      "position": [
        2224,
        848
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "a70485e0-a61f-4e64-b65a-79a733438ed5",
              "operator": {
                "name": "filter.operator.equals",
                "type": "string",
                "operation": "equals"
              },
              "leftValue": "={{ $json.image_source }}",
              "rightValue": "original"
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "0871b562-1164-45a2-bcd7-0193cdaa2459",
      "name": "Image Generation",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        544,
        416
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/models/google/imagen-4-ultra/predictions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": {\n    \"prompt\":\"{{ $json['output.posts'].image_prompt }}; Style:{{ $json['output.posts'].style }}; Overlay Text:{{ $json['output.posts'].overlay_text }}\",\n    \"aspect_ratio\": \"{{ $json['output.posts'].aspect_ratio }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Prefer",
              "value": "wait"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "5430501e-f48e-4ebd-9852-3f740ff83b4a",
      "name": "Image Generation 2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        544,
        848
      ],
      "parameters": {
        "url": "https://api.replicate.com/v1/models/google/imagen-4-ultra/predictions",
        "method": "POST",
        "options": {},
        "jsonBody": "={\n  \"input\": {\n    \"prompt\":\"{{ $json['output.posts'].image_prompt }}; Style:{{ $json['output.posts'].style }}; Overlay Text:{{ $json['output.posts'].overlay_text }}\",\n    \"aspect_ratio\": \"{{ $json['output.posts'].aspect_ratio }}\"\n  }\n}",
        "sendBody": true,
        "sendHeaders": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "headerParameters": {
          "parameters": [
            {
              "name": "Prefer",
              "value": "wait"
            }
          ]
        }
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "aeb854ea-e1cf-41d3-935d-63af20de3841",
      "name": "Download Image 1st 2",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        752,
        848
      ],
      "parameters": {
        "url": "={{ $json.output }}",
        "options": {}
      },
      "typeVersion": 4.2
    },
    {
      "id": "135e9ef8-8ab7-4c17-997f-e9a2fe598b85",
      "name": "Sticky Note10",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2848,
        208
      ],
      "parameters": {
        "color": 4,
        "width": 224,
        "height": 432,
        "content": "## Save Data in spreadsheet"
      },
      "typeVersion": 1
    },
    {
      "id": "862266e4-7a1a-4fd8-96c7-c66e0ac9033f",
      "name": "Append or update row in sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        2912,
        848
      ],
      "parameters": {
        "columns": {
          "value": {
            "DATE": "={{ DateTime.fromISO($('Split Out3').item.json['output.posts'].posting_date).set({hour: 15, minute: 0, second: 0}).toUTC().toISO({suppressMilliseconds: true}) }}",
            "TEXT": "={{ $('Split Out3').item.json['output.posts'].post_text }}",
            "IMAGE": "==IMAGE(\"https://drive.google.com/uc?id={{ $json.id }}\")",
            "IMAGE ID": "={{ $json.id }}",
            "PLATFORM": "={{ $('Split Out3').item.json['output.posts'].platform }}",
            "IMAGE URL": "={{ $json.owners[0].photoLink }}",
            "IMAGE PROMPT": "={{ $('Image Generation').item.json.input.prompt }}"
          },
          "schema": [
            {
              "id": "IMAGE ID",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "IMAGE ID",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "DATE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "DATE",
              "defaultMatch": false,
              "can

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Nova AI Content Marketing Agent - LinkedIn & Facebook Automation This n8n template demonstrates how to create a complete AI-powered social media content creation and scheduling system that generates platform-optimized posts for LinkedIn and Facebook with custom images and human…

Source: https://n8n.io/workflows/8398/ — original creator credit. Request a take-down →

More Social Media workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Social Media

This workflow is ideal for individuals, marketers, agencies, and brands who want to effortlessly automate the entire blogging and social media process—from idea generation to promotion. Its primary go

Execute Workflow Trigger, Notion, OpenAI Chat +13
Social Media

This workflow is built for creators, solopreneurs, SaaS founders, and agencies looking to automate their social media content process from idea to publication. It combines the power of OpenAI, Google

OpenAI Chat, Tool Workflow, Agent +15
Social Media

This workflow contains community nodes that are only compatible with the self-hosted version of n8n.

@Blotato/N8N Nodes Blotato, Google Sheets, OpenAI +8
Social Media

How it works

Agent, Output Parser Structured, Anthropic Chat +7
Social Media

OneTimeFlowMedia. Uses lmChatOpenRouter, outputParserStructured, agent, airtable. Event-driven trigger; 60 nodes.

OpenRouter Chat, Output Parser Structured, Agent +6