This workflow corresponds to n8n.io template #6550 — we link there as the canonical source.
This workflow follows the Agent → OpenAI Chat 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 →
{
"id": "JjMWwStuPbtjBfyk",
"name": "Content Generator",
"tags": [
{
"id": "TOmp11D0RTZnlXKe",
"name": "Creator Hub",
"createdAt": "2025-07-27T06:39:31.509Z",
"updatedAt": "2025-07-27T06:39:31.509Z"
}
],
"nodes": [
{
"id": "54370848-f544-4e92-a669-ed3d77832a8a",
"name": "Generate Content",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1872,
1056
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o",
"cachedResultName": "GPT-4O"
},
"options": {
"topP": 0.9,
"temperature": 0.6,
"presence_penalty": 0.6,
"frequency_penalty": 0.3
},
"messages": {
"values": [
{
"role": "system",
"content": "=# System Prompt for Generate Content Block\n\n## Context\nYou are an elite AI content strategist specializing in both social media and blog content creation for creators, coaches, solopreneurs, and small business owners. Your users struggle with limited time, creative blocks, and posting confidence. They depend on you to produce ONE emotionally resonant, platform-native piece of content that feels authentic, engaging, and ready to publish without any editing required.\n\n## Role\nYou are not a template generator or draft creator. You are a seasoned digital content creator who understands:\n- Human psychology and emotional triggers\n- Platform-specific best practices and engagement patterns\n- Current social media trends and content rhythm\n- Authentic storytelling that builds audience trust\n- What makes content perform well and drive meaningful reactions\n\n## Task\nUsing the structured inputs provided, generate **ONE complete, fully polished piece of content** that matches the specified platform requirements:\n\n**For Social Media Platforms** (Instagram, LinkedIn, X, Facebook, TikTok):\n- Create a ready-to-publish social media post\n- Follow platform-specific word count guidelines\n- Include engaging hook, narrative, value, and CTA\n- Add relevant hashtags\n\n**For Blog Posts**:\n- Create a complete blog article with proper structure\n- Include compelling headline, introduction, body sections, and conclusion\n- Follow blog word count guidelines (700-1,500 words standard)\n- Maintain educational and engaging tone throughout\n\n### Input Variables:\n- **Intent**: `{{ $json.intent }}`\n- **Strategic Reasoning**: `{{ $json.strategicreasioning }}`\n- **Emotional Framing**: `{{ $json.emotional_summary }}`\n- **Platform**: `{{ $json.Platform }}`\n- **Niche**: `{{ $json.Niche }}`\n- **Tone**: `{{ $json.Tone }}`\n- **Objective**: '{{ $json.objective }}',\n- **key_details**: '{{ $json.key_details }}'\n\n**Content Outline Components:**\n- **Hook Idea**: `{{ $json.HookIdea }}`\n- **Story/Idea Summary**: `{{ $json.IdeaSummary }}`\n- **Pivot/Punchline**: `{{ $json.Punchline }}`\n- **CTA Idea**: `{{ $json.cta_idea }}`\n\n### Output Requirements:\n\n**Platform-Specific Word Count Guidelines:**\n- **Instagram**: 125-150 words (optimal engagement), max 2,200 characters\n- **LinkedIn**: 150-300 words (professional posts), max 3,000 characters \n- **X (Twitter)**: 40-50 words, max 280 characters\n- **Facebook**: 40-80 words (highest engagement), up to 500 words acceptable\n- **TikTok**: 100-150 characters (brief and punchy)\n- **YouTube**: 125-175 words (video descriptions)\n- **Blog Posts**: 700-1,500 words (standard), 300-600 words (short-form), 1,500+ words (long-form)\n\n**Content Creation Strategy:**\n1. **Use the Hook Idea** as your opening to immediately capture attention\n2. **Build from the Story/Idea Summary** to develop your main content body\n3. **Incorporate the Pivot/Punchline** as your key insight or turning point\n4. **End with the CTA Idea** to drive engagement and interaction\n5. **Match the Platform, Niche, and Tone** specifications exactly\n\n**Quality Standards:**\n- Deliver ONE polished, publication-ready piece of content\n- Sound human, not AI-generated\n- Be platform-optimized and engaging\n- Include natural flow and proper formatting\n- Use emojis only when they enhance readability (social media only)\n- Avoid generic filler phrases or overly academic tone\n- No section labels in final output - deliver seamless content\n- For social media: Include 3-5 trending, niche-relevant hashtags\n- For blogs: Use proper headings, subheadings, and paragraph structure\n\n**Hashtag Guidelines:**\n- Use smart, trending hashtags relevant to the niche\n- Avoid overused tags like #love, #instagood, #followme\n- Simulate current trends if specific tags aren't provided\n- Add tags {{ $json.HashtagThemes }}, but **DO NOT** duplicate\n\n**Tone Matching:**\n- **Raw & Relatable**: Unfiltered, personal, authentically messy\n- **Fun & Bold**: Confident, witty, rebellious energy\n- **Inspirational**: Uplifting, purpose-driven, emotional\n- **Professional**: Polished, value-rich, LinkedIn-appropriate\n- **Educational**: Informative, clear, helpful guidance\n\n## Format Rules\n- Output ONE complete, polished piece of content ready for immediate publication\n- No explanatory text, section headers, or multiple options in your response\n- Match the exact Platform, Niche, and Tone specifications from inputs\n- Use the provided outline components strategically in your content structure\n- Ensure the content delivers maximum engagement potential for the specified platform\n- Include strategic emotional elements from the framing provided\n- Content should be copy-paste ready with perfect formatting\n- For blogs: Include proper markdown formatting with headers and structure\n- For social media: Follow platform-specific formatting conventions\n\n## Example Output Structure:\n\n**For Social Media Posts:**\n```\n[Hook from hook_idea - attention-grabbing opener]\n\n[Content body inspired by story_or_idea_summary - 2-5 lines of narrative/insight]\n\n[Pivot/punchline integration - key takeaway that delivers value]\n\n[CTA from cta_idea - encouraging interaction]\n\n#RelevantHashtag #NicheTrend #EngagementTag\n```\n\n**For Blog Posts:**\n```\n# [Compelling Headline Based on Hook Idea]\n\n[Opening paragraph using hook_idea to draw readers in]\n\n[Main content sections developing the story_or_idea_summary with proper subheadings and detailed explanations]\n\n[Integration of pivot_or_punchline as key insight]\n\n[Conclusion incorporating cta_idea for reader engagement]\n```\n\nTransform the provided strategic inputs and outline components into ONE compelling, authentic, fully polished piece of content that your target audience will engage with, share, and remember. This should be publication-ready content that requires no further editing."
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "b0a2fc7d-7e0f-4cb8-8560-2147a4d9fe29",
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"position": [
16,
576
],
"parameters": {
"path": "4a5295e0-b881-4696-8b06-00c97eb12c7a",
"options": {
"ignoreBots": true,
"allowedOrigins": "*"
},
"httpMethod": "POST",
"responseMode": "responseNode"
},
"typeVersion": 2
},
{
"id": "2c3bce39-d35b-4ebd-9656-3c491b82bbdb",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
352,
576
],
"parameters": {
"options": {
"ignoreConversionErrors": true
},
"assignments": {
"assignments": [
{
"id": "94334cd1-6a44-4a0d-9c00-bd59e57b8081",
"name": "webInput",
"type": "array",
"value": "={{ $item(\"0\").$node[\"Webhook\"].json[\"body\"][\"webInput\"]}}"
},
{
"id": "975005e9-b372-422e-a84d-97e992d930cb",
"name": "sessionId",
"type": "string",
"value": "={{ Date.now() + Math.random().toString(36).substring(2, 15) }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "f4f61a04-93e5-44c0-b1bd-88462edc2d02",
"name": "Outline",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2864,
512
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {
"topP": 0.9,
"maxTokens": 400,
"temperature": 0.7,
"presence_penalty": 0.3,
"frequency_penalty": 0.1
},
"messages": {
"values": [
{
"content": "={{ $('Generate Intent').item.json.output.intent }}\n{{ $('Format Emotional Data').item.json.emotional_summary }}\n{{ $json.objective }}\n{{ $json.key_details }}"
},
{
"role": "system",
"content": "=You are a copy strategist planning the structure of a high-performing post.\n\nUsing the intent and emotional framing, create a post outline with:\n- Hook idea (short, scroll-stopping)\n- Story or idea summary\n- Pivot or punchline\n- CTA idea (engagement-driven)\n- Hashtag themes or inspiration, only when the platform requested is for X or LinkedIn. Or, unless specifically asked for.\n\n{{ $('Generate Intent').item.json.output.intent }}\n{{ $('Format Emotional Data').item.json.emotional_summary }}\n\n\n**DO NOT** generate the full content\n** DO NOT** hallucinate\n\nAdd the below fields to the JSON response\n\nsessionId: {{ $json.sessionId }}\nPlatform: {{ $json.platform }}\nNiche: {{ $json.niche }}\nTone: {{ $json.tone }}\n\nUse below JSON key names when outputing the data\n\n\"Hook idea\"\n\"Story or idea summary\"\n\"Pivot or punchline\"\n\"CTA idea\"\n\"Hashtag themes\"\n\"Key Phrases\"\n\"Emotional Journey\"\n\"Core Emotion\"\n\n\n\n \n\n\n\n\n"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "7f06f9bb-d850-4691-b579-136ee318bb15",
"name": "Emotional Framing",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2112,
560
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {
"topP": 0.9,
"temperature": 0.3
},
"messages": {
"values": [
{
"role": "system",
"content": "=You are a copywriter skilled in emotional marketing. Given the reasoning below, define how the post should emotionally connect with the reader.\n\n\n\nUse the below parameters when creating the emotional framing\n{{ $json.message.content }}\n\n\nUsing the user\u2019s prompt and reasoning, define:\n- Core emotion to evoke (e.g. hope, frustration, courage, belonging)\n- Emotional arc (e.g. pain \u2192 relief, stuck \u2192 empowered)\n- Tone modifiers (e.g. raw, bold, warm, sarcastic)\n- A few emotionally charged phrases that match this feeling\n\nThis framing will help shape the voice and depth of the post.\n\n\nAdd the below fields to the response output\n\nplatform: {{ $json.message.content.platform }}\nniche: {{ $json.message.content.niche }}\ntone: {{ $json.message.content.tone }}\nobjective: {{ $json.message.content.objective }}\ndurations: {{ $json.message.content.durations }}\nkey_details: {{ $json.message.content.key_details }}\nsessionId: {{ $json.message.content.sessionId }}\n\n"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "fddb6445-c98c-483d-aee5-9ed7ffcf828b",
"name": "Respond to Webhook",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2640,
1056
],
"parameters": {
"options": {}
},
"typeVersion": 1.4
},
{
"id": "56fa1304-59ff-4468-bc2e-47e62aea60b4",
"name": "stringifyJSON",
"type": "n8n-nodes-base.code",
"position": [
2336,
1056
],
"parameters": {
"jsCode": "// Loop over input items and stringify the JSON of each one\nfor (const item of $input.all()) {\n item.json.myStringifiedField = JSON.stringify(item.json.someObject);\n}\nreturn $input.all();"
},
"typeVersion": 2
},
{
"id": "8400cde3-f59b-4eec-bb07-6347fd85aef8",
"name": "Information Extractor",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
672,
560
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {
"topP": 0.8,
"maxTokens": 300,
"temperature": 0.4,
"presence_penalty": 0.1,
"frequency_penalty": 0.1
},
"messages": {
"values": [
{
"content": "={{ $json.webInput }}"
},
{
"role": "system",
"content": "=You are a brand strategist helping clarify a user's content goal.\n\nFrom the input, extract the following clearly:\n- Platform (Instagram, LinkedIn, X, etc.)\n- Niche or industry (e.g. fitness coach, skincare, SaaS)\n- Type of post (e.g. story, tip, motivation, carousel)\n- Brand tone (e.g. raw, witty, bold, inspirational)\n- Audience type (e.g. solopreneurs, moms, Gen Z, founders)\n- Objective (e.g. engagement, trust, relatability, sales)\n- durations (e.g. 2 minutes, 1 week, 1 month, 1 year)\n- key details (e.g. scroll-stopping, eye-catching, high-tech)\n\nInclude the original user prompt\nInclude the sessionId = {{ $json.sessionId || Date.now() + Math.random().toString(36).substring(2, 15)}} in the response\n\n\nOutput example:\n\n{\n\n \"original_prompt\": \"generate a linkedin post about n8n workflow I just created on How to generate content using AI\",\n \"sessionId\": \"{{ $json.sessionId }}\",\n \"platform\": \"LinkedIn\",\n \"niche_or_industry\": \"Technology / Automation / AI Content Creation\",\n \"type_of_post\": \"Informative / Educational\",\n \"brand_tone\": \"Professional\",\n \"audience_type\": \"Professionals, Marketers, Content Creators, Automation Enthusiasts\",\n \"objective\": \"Engagement and Trust Building\"\n\n}\n\n\n"
},
{
"role": "assistant",
"content": "Tone:Raw & Relatable\t\t\t\nWriting Style: Unfiltered, personal, messy-in-a-good-way\n\nTone: Fun & Bold\t\t\nWriting Style: Confident, witty, rebellious\n\nTone: Inspirational\t\nWriting Style: Uplifting, purpose-driven, emotional\n\nTone: Professional\nWriting Style: Polished, value-rich, LinkedIn-style\n\nTone: Educational \nWriting Style: Informative, clear, helpful"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "50849995-f5f1-419d-8a6a-506408fab2af",
"name": "OpenAI Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
1152,
896
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "gpt-4.1"
},
"options": {
"topP": 0.7,
"maxRetries": 2,
"temperature": 0.2,
"presencePenalty": 0,
"frequencyPenalty": 0
}
},
"typeVersion": 1.2
},
{
"id": "5527e9da-4415-4295-a90a-2990640d7272",
"name": "Generate Intent",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1168,
560
],
"parameters": {
"text": "={{ $json.message.content.original_prompt }}",
"options": {
"systemMessage": "=You are a helpful assistant who can create the **intent** from the prompt into a paragraph format. Use platform, niche, type of post, audience, objective when creating the intent.\n\nUse the following parameters when generating the intent\n\n{{ $json.message.content.platform }}\n{{ $json.message.content.niche_or_industry }}\n{{ $json.message.content.type_of_post }}\n{{ $json.message.content.brand_tone }}\n{{ $json.message.content.audience_type }}\n{{ $json.message.content.objective }}\n{{ $json.message.content.durations || ''}}\n{{ $json.message.content.key_details || ''}}\n\nconstraints:\nDO NOT change the context\nDO NOT hallucinate\nDo Not generate the content\n**ONLY** create the intent and return. \n**USE** the structured output to respond\n\nsessionID = {{ $json.message.content.sessionId }}\noriginal_prompt = {{ $json.message.content.original_prompt }}\n\naudience_type = {{ $json.message.content.audience_type }}\nobjective = {{ $json.message.content.objective }}",
"returnIntermediateSteps": true
},
"promptType": "define",
"hasOutputParser": true
},
"typeVersion": 2.1
},
{
"id": "1ba2ef19-bc82-40fe-9b9d-dd34a9bcce1c",
"name": "Structured Output Parser",
"type": "@n8n/n8n-nodes-langchain.outputParserStructured",
"position": [
1344,
880
],
"parameters": {
"jsonSchemaExample": "{\n\t\"intent\": \"<paragraph generated by AI>\",\n \"platform\": \"<include from original message>\",\n \"niche\": \"<include from original message>\",\n \"tone\": \"<Include from original message>\",\n\t\"user_prompt\": \"<original user prompt>\",\n \"objective\": \"<objective>\",\n \"durations\": \"<durations>\",\n \"key_details\": \"<key details>\",\n \"audience_type\": \"<audience_type>\",\n \"sessionId\": \"<include the sessionId>\"\n}"
},
"typeVersion": 1.3
},
{
"id": "f4a93ee4-6220-4aa7-81f0-202ec7a896b3",
"name": "Strategy",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1664,
560
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {
"topP": 0.9,
"maxTokens": 400,
"temperature": 0.6,
"presence_penalty": 0.3,
"frequency_penalty": 0.2
},
"messages": {
"values": [
{
"content": "={{ $json.output.intent }}"
},
{
"role": "system",
"content": "=You are a content strategist thinking through the \"why\" behind a post.\n\nUse the below parameters when creating the reasoning\n\n{{ $json.output.intent }}\n{{ $json.output.user_prompt }}\n{{ $json.output.objective }}\n{{ $json.output.key_details }}\n\nUsing the user prompt and intent, answer:\n- What key belief or pain point are we addressing?\n- What myth or limiting mindset can we challenge?\n- What takeaway should the reader walk away with?\n- What shift in thinking will make this valuable?\n\nBe strategic and reflective \u2014 like a seasoned creator planning a meaningful post.\n**DO NOT** output the questions and answers type format.\n**THINK** and compile your response into a meaningful paragraph\n**Remember** the key details like dates, times, durations\n\n\noutput format:\n\n{\n \"strategicreasioning\": \"<reasoning generated by AI>\",\n \"platform\": '{{ $json.output.platform }}',\n \"niche\": '{{ $json.output.niche }}',\n \"tone\": '{{ $json.output.tone }}',\n \"audience_type\": '{{ $json.output.audience_type }}',\n \"objective\": '{{ $json.output.objective }}',\n \"durations\": '{{ $json.output.durations }}',\n \"key_details\": '{{ $json.output.key_details }}',\n \"sessionId\": '{{ $json.output.sessionId }}'\n}\n\n\n\n\n\n\n"
}
]
},
"jsonOutput": true
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "506e960c-b879-4517-927b-e4d7a390566b",
"name": "Format Emotional Data",
"type": "n8n-nodes-base.set",
"position": [
2576,
336
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "27e62464-f696-40f7-a972-3a69749fd851",
"name": "emotional_summary",
"type": "string",
"value": "=Core Emotion: {{ $json.message.content.emotional_framing.core_emotion_to_evoke }}\nEmotional Journey: {{ $json.message.content.emotional_framing.emotional_arc }}\nTone Style: {{ $json.message.content.emotional_framing.tone_modifiers }}\nKey Phrases: {{ $json.message.content.emotional_framing.emotionally_charged_phrases }}"
},
{
"id": "6ff43031-b3a8-4151-a4b8-cb6ec4817957",
"name": "platform",
"type": "string",
"value": "={{ $json.message.content.platform }}"
},
{
"id": "ed335b84-923a-41b8-9f42-dbcb2b8e845e",
"name": "niche",
"type": "string",
"value": "={{ $json.message.content.niche }}"
},
{
"id": "63b4614a-8dc2-4d41-9438-6557a5b7e58f",
"name": "tone",
"type": "string",
"value": "={{ $json.message.content.tone }}"
},
{
"id": "b6c88f76-0649-4d89-a8c3-07a40c521dc9",
"name": "sessionId",
"type": "string",
"value": "={{ $json.message.content.sessionId }}"
},
{
"id": "5e939d19-f5b1-4aa6-89b8-465279c0ccd6",
"name": "durations",
"type": "string",
"value": "={{ $json.message.content.durations }}"
},
{
"id": "6f7a87f8-2a3e-43d8-9303-c4de98ee2f2e",
"name": "objective",
"type": "string",
"value": "={{ $json.message.content.objective }}"
},
{
"id": "8fe107c5-043b-4b9f-9c74-587d930eb5fc",
"name": "key_details",
"type": "string",
"value": "={{ $json.message.content.key_details }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "241984c1-83a1-464c-af39-c362f94d8567",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
0
],
"parameters": {
"width": 576,
"height": 192,
"content": "## \ud83c\udfaf **WORKFLOW OVERVIEW**\n**Purpose**: AI-powered content creation pipeline that transforms user prompts into polished, platform-optimized content \n**Output**: Ready-to-publish social media posts or blog articles \n**Users**: Creators, coaches, solopreneurs, small business owners"
},
"typeVersion": 1
},
{
"id": "dd3a2415-3ae0-4e6b-b5cc-6fddf6dacd64",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
240
],
"parameters": {
"width": 576,
"height": 496,
"content": "### \ud83d\udd17 **Webhook Node**\n\n- **Purpose**: Receives content requests via HTTP POST\n- **Path**: 4a5295e0-b881-4696-8b06-00c97eb12c7a\n- **Method**: POST\n- **Response**: Use \"Respond to Webhook\" node\n- Input variables expected\n```\n{\n \"webInput\": \"generate a LinkedIn post about n8n workflow I just created on How to generate content using AI\",\n}\n```\n\n\n\n\n\n"
},
"typeVersion": 1
},
{
"id": "6e72012a-0a33-44e9-9471-7b795c74be9b",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
608,
240
],
"parameters": {
"width": 400,
"height": 496,
"content": "### \ud83d\udd0d **Information Extractor Node**\n\n- **Model**: GPT-4.1-Mini (cost-effective for extraction)\n- **Temperature**: 0.4 (balanced accuracy/creativity)\n- **JSON Output**: \u2705 Enabled\n\n**Extracts**:\n- Platform (Instagram, LinkedIn, X, etc.)\n- Niche/Industry \n- Post Type\n- Brand Tone\n- Audience Type\n- Objective"
},
"typeVersion": 1
},
{
"id": "22f12aad-7291-4016-ac03-87fec2f16882",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
1104,
240
],
"parameters": {
"color": 5,
"width": 416,
"height": 496,
"content": "### \ud83c\udfaf **Generate Intent Node**\n\n- **Type**: AI Agent with Structured Output Parser\n- **Model**: OpenAI Chat Model (GPT-4.1)\n- **Temperature**: 0.2 (high accuracy)\n"
},
"typeVersion": 1
},
{
"id": "b05a1287-c940-45d3-af3e-8c38a34cae27",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1552,
240
],
"parameters": {
"width": 464,
"height": 496,
"content": "### \ud83d\udccb **Strategy Node**\n\n\n- **Model**: Choose a model suitable for you\n- **Temperature**: 0.6 (balanced reasoning)\n- **JSON Output**: \u2705 Enabled\n\n\n**Purpose**: Develops strategic reasoning for content approach \n**Key Questions Addressed**:\n- What belief/pain point to address?\n- What myth to challenge?\n- What takeaway for reader?\n- What mindset shift needed?"
},
"typeVersion": 1
},
{
"id": "03fb8828-50a5-4c88-b01f-ebc5124960c4",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
2048,
240
],
"parameters": {
"color": 4,
"width": 448,
"height": 496,
"content": "### \u2764\ufe0f **Emotional Framing Node**\n\n- **Model**: Choose a model suitable for you \n- **Temperature**: 0.3 (consistent emotional tone)\n- **JSON Output**: \u2705 Enabled\n\n\n\n**Output Structure**:\n- Core emotion to evoke\n- Emotional arc (journey)\n- Tone modifiers (array)\n- Emotionally charged phrases (array)"
},
"typeVersion": 1
},
{
"id": "666a5f26-9075-41db-8393-7e614a41d8db",
"name": "Sticky Note6",
"type": "n8n-nodes-base.stickyNote",
"position": [
2768,
192
],
"parameters": {
"width": 464,
"height": 512,
"content": "### \ud83d\udcdd **Outline Node**\n\n\n- **Model**: Choose a model suitable for you\n- **Temperature**: 0.7 (creative structure)\n- **JSON Output**: \u2705 Enabled\n\n**Output Components**:\n- `hook_idea`: Attention-grabbing opener\n- `story_or_idea_summary`: Main content guide\n- `pivot_or_punchline`: Key insight\n- `cta_idea`: Engagement driver"
},
"typeVersion": 1
},
{
"id": "968c0fee-7789-4b0c-ac8a-96ef4c6423a0",
"name": "Sticky Note7",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
800
],
"parameters": {
"color": 2,
"width": 384,
"height": 400,
"content": "### \u2728 **Generate Content Node**\n\n\n- **Model**: GPT-4O or higher (premium for final output)\n- **Temperature: 0.9 (high creativity)\n- **Frequency Penalty**: 0.3\n- **Presence Penalty**: 0.6\n\n\n**Purpose**: Creates final polished content using all previous inputs"
},
"typeVersion": 1
},
{
"id": "451adeb0-95b5-4f71-b879-81d9e869cbff",
"name": "Format Input",
"type": "n8n-nodes-base.set",
"position": [
1632,
1056
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "e580d4b9-0429-4c83-ac53-cf925218a454",
"name": "HookIdea",
"type": "string",
"value": "={{ $json.message.content[\"Hook idea\"] }}"
},
{
"id": "729f509c-e787-4671-8830-d027c8fef03a",
"name": "IdeaSummary",
"type": "string",
"value": "={{ $json.message.content[\"Story or idea summary\"] }}"
},
{
"id": "5cfce3a1-29a8-42dc-bd79-35ff3d17949a",
"name": "Punchline",
"type": "string",
"value": "={{ $json.message.content[\"Pivot or punchline\"] }}"
},
{
"id": "d5bca11c-2bbd-4d5a-9809-625616602369",
"name": "HashtagThemes",
"type": "array",
"value": "={{ $json.message.content[\"Hashtag themes\"] || [] }}"
},
{
"id": "ad379413-d7b9-459d-958d-8f22fe543713",
"name": "cta_idea",
"type": "string",
"value": "={{ $json.message.content[\"CTA idea\"] }}"
},
{
"id": "ae2dba2d-9f44-4117-8135-0a2d7baa70b4",
"name": "sessionId",
"type": "string",
"value": "={{ $json.message.content.sessionId }}"
},
{
"id": "2b490195-bc94-4aad-a414-34e5c4d2b671",
"name": "Platform",
"type": "string",
"value": "={{ $json.message.content.Platform }}"
},
{
"id": "5ec56c08-1e99-4c10-b59d-74ced53bdf8d",
"name": "Niche",
"type": "string",
"value": "={{ $json.message.content.Niche }}"
},
{
"id": "e0e2b1dd-8a11-4137-8df5-a4975f9436a7",
"name": "Tone",
"type": "string",
"value": "={{ $json.message.content.Tone }}"
},
{
"id": "5e9be033-08c3-4825-b1de-da40016bea8c",
"name": "intent",
"type": "string",
"value": "={{ $('Generate Intent').item.json.output.intent }}"
},
{
"id": "12a1022e-11c4-4ca1-8bb7-52c7a2529812",
"name": "strategicreasioning",
"type": "string",
"value": "={{ $('Strategy').item.json.message.content.strategicreasioning }}"
},
{
"id": "aad96887-5c45-481e-85e1-cbc1ec652377",
"name": "emotional_summary",
"type": "string",
"value": "={{ $('Format Emotional Data').item.json.emotional_summary }}"
},
{
"id": "05348e56-7a68-4e75-9c62-9e8c2143b36e",
"name": "objective",
"type": "string",
"value": "={{ $('Format Emotional Data').item.json.objective }}"
},
{
"id": "ad76add3-0b5f-47bf-881e-189a019372fc",
"name": "key_details",
"type": "string",
"value": "={{ $('Format Emotional Data').item.json.key_details }}"
},
{
"id": "1c2913a7-ec68-44f8-9f21-0a21056e17e9",
"name": "durations",
"type": "string",
"value": "={{ $('Format Emotional Data').item.json.durations }}"
}
]
}
},
"typeVersion": 3.4
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "d60a5d1c-5e30-4f61-b463-87f443840199",
"connections": {
"Outline": {
"main": [
[
{
"node": "Format Input",
"type": "main",
"index": 0
}
]
]
},
"Webhook": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
},
"Strategy": {
"main": [
[
{
"node": "Emotional Framing",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Information Extractor",
"type": "main",
"index": 0
}
]
]
},
"Format Input": {
"main": [
[
{
"node": "Generate Content",
"type": "main",
"index": 0
}
]
]
},
"stringifyJSON": {
"main": [
[
{
"node": "Respond to Webhook",
"type": "main",
"index": 0
}
]
]
},
"Generate Intent": {
"main": [
[
{
"node": "Strategy",
"type": "main",
"index": 0
}
]
]
},
"Generate Content": {
"main": [
[
{
"node": "stringifyJSON",
"type": "main",
"index": 0
}
]
]
},
"Emotional Framing": {
"main": [
[
{
"node": "Format Emotional Data",
"type": "main",
"index": 0
}
]
]
},
"OpenAI Chat Model": {
"ai_languageModel": [
[
{
"node": "Generate Intent",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Format Emotional Data": {
"main": [
[
{
"node": "Outline",
"type": "main",
"index": 0
}
]
]
},
"Information Extractor": {
"main": [
[
{
"node": "Generate Intent",
"type": "main",
"index": 0
}
]
]
},
"Structured Output Parser": {
"ai_outputParser": [
[
{
"node": "Generate Intent",
"type": "ai_outputParser",
"index": 0
}
]
]
}
}
}
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.
openAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow contains community nodes that are only compatible with the self-hosted version of n8n.
Source: https://n8n.io/workflows/6550/ — original creator credit. Request a take-down →
Related workflows
Workflows that share integrations, category, or trigger type with this one. All free to copy and import.
leads. Uses supabase, gmail, formTrigger, httpRequest. Webhook trigger; 62 nodes.
Build an intelligent WhatsApp assistant that automatically responds to customer messages using AI. This template uses the Evolution API community node for WhatsApp integration and OpenAI for natural l
This workflow automatically processes new free-trial / lead sign-ups in real time: Catches a webhook from any source (Webflow form, Intercom, custom agent, etc.) Filters out personal / disposable / .e
This workflow turns raw product inputs into a complete, launch-ready AI-generated social media campaign package. It accepts product details via webhook, sanitizes messy fields, generates a strategic c
Logo Animator - Supabase. Uses postgres, openAi, agent, toolThink. Webhook trigger; 26 nodes.