This workflow corresponds to n8n.io template #7509 — we link there as the canonical source.
This workflow follows the Google Sheets → OpenAI 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": "BiNh8JxMmZIiZpsm",
"meta": {
"templateCredsSetupCompleted": true
},
"name": "blog writing",
"tags": [
{
"id": "7BojOmmMRVlQ2HTb",
"name": "marketing-automation",
"createdAt": "2025-06-27T06:20:05.850Z",
"updatedAt": "2025-06-27T06:20:05.850Z"
},
{
"id": "swzaSPoEEgYr5voN",
"name": "steroids blof poster",
"createdAt": "2025-07-16T14:19:12.046Z",
"updatedAt": "2025-07-16T14:19:12.046Z"
}
],
"nodes": [
{
"id": "779adb30-2bc6-43dd-9610-0a2c692efb2a",
"name": "Set KWs and Insights fields",
"type": "n8n-nodes-base.set",
"position": [
1400,
-160
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "ab756373-0186-454a-8e98-d5a5f96cba87",
"name": "search_intent",
"type": "string",
"value": "= {{ $('Get row(s) in sheet1').item.json['search intent'] }}"
},
{
"id": "a14b7657-038a-4b08-911d-314336261a0c",
"name": "hidden_insight",
"type": "string",
"value": "= {{ $json.hidden_insight }}"
},
{
"id": "19ef4221-5a5d-4321-8a07-4e04f5dcaf44",
"name": "target_audience",
"type": "string",
"value": "={{ $json.target_audience }} "
},
{
"id": "84e7f6a4-48b2-43b2-92cc-7e0337311661",
"name": "semantic_analysis",
"type": "string",
"value": "= {{ $json.semantic_content_structure.introduction }}"
},
{
"id": "5e943a46-bb03-438d-b6da-2a6ec414f5af",
"name": "primary keywords",
"type": "string",
"value": "= {{ $json.keyword_categories.primary_keywords[0] }}"
},
{
"id": "c7bf49a6-d2bb-4c16-92bd-49f7e3c857b6",
"name": "writing style",
"type": "string",
"value": "= {{ $json.writing_style }}"
},
{
"id": "ac5a7035-173f-4c14-b52c-40d79518b721",
"name": "related_keywords",
"type": "string",
"value": "= {{ $json.keyword_categories.related_keywords }}"
},
{
"id": "e4895185-6bbb-40bd-bddd-a3ac9b7da6af",
"name": "conclusion",
"type": "string",
"value": "= {{ $json.semantic_content_structure.conclusion }}"
},
{
"id": "5ccb6796-a06e-41b2-868f-47ec4fba5432",
"name": "section 1",
"type": "string",
"value": "={{ $json.semantic_content_structure.section_1.toJsonString() }}"
},
{
"id": "28a82a46-4dc1-45e9-bfb2-4080590ebafa",
"name": " section_2",
"type": "string",
"value": "={{ $json.semantic_content_structure.section_2 }}"
},
{
"id": "e1882c74-8cd6-46fb-b6d9-73a234a106f4",
"name": " section_3",
"type": "string",
"value": "={{ $json.semantic_content_structure.section_3 }}"
},
{
"id": "e9258d80-749d-436e-b864-2689b7315412",
"name": "semantic_content_structure.introduction",
"type": "string",
"value": "={{ $json.semantic_content_structure.introduction }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d255fdb2-b45f-4c2e-b7ea-877c42334c51",
"name": "When clicking \u2018Test workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
-540,
-160
],
"parameters": {},
"typeVersion": 1
},
{
"id": "84376f73-fddd-47ca-b793-488c78155f93",
"name": "Edit Fields2",
"type": "n8n-nodes-base.set",
"position": [
-100,
-160
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b0a3b264-be5b-43c0-bb0b-7e624bcafe62",
"name": "keyword",
"type": "string",
"value": "={{ $json.keyword }}"
},
{
"id": "74fbbcca-b462-4331-8bce-9f5d9044f236",
"name": "search intent",
"type": "string",
"value": "={{ $json['search intent'] }}"
},
{
"id": "52dba4be-f937-4b21-bda6-3a7ff7b1c3c0",
"name": "related keyword",
"type": "string",
"value": "={{ $json['related keyword'] }}"
},
{
"id": "06f44901-7ebd-49f0-9532-75443bf24f86",
"name": "suggested keyword",
"type": "string",
"value": "={{ $json['suggested keyword'] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e0a6cd7e-b2a8-4231-b4f8-5c153f473499",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
1160,
-160
],
"parameters": {
"jsCode": "const raw = $json.message.content;\nconst parsed = JSON.parse(raw);\n\nreturn [{ json: parsed }];\n"
},
"typeVersion": 2
},
{
"id": "3bf0fd26-a184-4442-b86c-b9cb29afa1de",
"name": "genrate key takeaways",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-200,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-2024-11-20",
"cachedResultName": "GPT-4O-2024-11-20"
},
"options": {},
"messages": {
"values": [
{
"content": "=Generate key takeaways for this article using the context below:\n\nTitle:{{ $json.message.content }}\nPrimary Keyword: {{ $('Set KWs and Insights fields').item.json['primary keywords'] }}\nrelated keyword:{{ $('Set KWs and Insights fields').item.json.related_keywords }}\nSearch Intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\nsection1:{{ $('Set KWs and Insights fields').item.json['section 1'] }} \nHidden Insight: {{ $('Set KWs and Insights fields').item.json.hidden_insight }} \nintroduction: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }} \nWriting Tone and style: {{ $('Set KWs and Insights fields').item.json['writing style'] }}\nsection2:{{ $('Set KWs and Insights fields').item.json[' section_2'] }}\nsection3:{{ $('Set KWs and Insights fields').item.json[' section_3'] }}"
},
{
"role": "system",
"content": "=You are an expert content strategist skilled at creating structured, insightful, and engaging key takeaways for blog articles.\n\nYour goal is to distill the most valuable information into concise, impactful, and easy-to-digest takeaways, following the format rules exactly.\n\nOutput Requirements:\n\nUse pure Markdown (no code fences, no triple backticks, no extra labels or formatting).\n\nDo not include section headings, meta explanations, or labels.\n\nYour Task:\n\nWrite a compelling intro paragraph that previews the value readers will get from the article.\n\nIdentify and summarize the most valuable takeaways from the provided content:\n\nCore concepts and main ideas\n\nRelevant subtopics and common related questions\n\nHidden or unique insights (if any)\n\nPresent each takeaway as a Markdown bullet:\n\nStart with a bold, action-driven heading followed by a short, substantial explanation.\n\nExample:\n\nStreamline operations with AI: Automate repetitive business processes with speed and precision.\n\nEnd with a brief outro paragraph that flows naturally into the article body.\n\nStyle Guide:\n\u2705 Use clear, engaging, and informative headings\n\u2705 Keep explanations short but meaningful\n\u2705 Avoid fluff, repetition, or vague phrasing\n\u2705 Include hidden insights as their own takeaways or integrated into others if relevant\n"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "bbe807db-3677-4edf-9ad4-595e4aa7c80d",
"name": "introduction",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
240,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "anthropic/claude-3.5-sonnet",
"cachedResultName": "ANTHROPIC/CLAUDE-3.5-SONNET"
},
"options": {},
"messages": {
"values": [
{
"content": "=Write an engaging introduction for a blog post using the following details:\n\n- Title: {{ $('blog tittle').item.json.message.content }}\n- Key Takeaways: {{ $json.message.content }}\n- Primary Keyword: {{ $('Set KWs and Insights fields').item.json['primary keywords'] }}\nrelevent keyword:{{ $('Set KWs and Insights fields').item.json.related_keywords }}\n - Search Intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\n-introduction: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\n - Writing Tone and style: {{ $('Set KWs and Insights fields').item.json['writing style'] }}\nsection1:{{ $('Set KWs and Insights fields').item.json['section 1'] }}\nsection2:{{ $('Set KWs and Insights fields').item.json[' section_2'] }}\nsection3:{{ $('Set KWs and Insights fields').item.json[' section_3'] }}\nThe introduction should:\n- Hook the reader with a surprising fact, question, or compelling statement.\n- Explain why the topic matters and how it benefits the reader.\n- Transition naturally into the main article.\n- Use the primary and secondary keywords naturally and sparingly.\n\nFormat the output strictly in Markdown. Do NOT include any explanations, commentary, or extra text."
},
{
"role": "system",
"content": "=You are an expert blog copywriter who crafts engaging, clear, and value-driven introductions for articles. Your goal is to hook the reader, establish the topic\u2019s importance, and preview the value they\u2019ll gain from reading.\n\nOutput Requirements:\n\nWrite in pure Markdown (no code fences, no triple backticks, no extra formatting).\n\nOutput only the introduction paragraph \u2014 no titles, headings, or meta text.\n\nYour Task:\n\nCapture attention in the first sentence with a relatable hook, surprising fact, or compelling question.\n\nBriefly set the context for the article\u2019s topic.\n\nClearly state the benefit or insight the reader will gain.\n\nMaintain a natural flow that transitions smoothly into the main body of the article.\n\nStyle Guidelines:\n\nKeep the tone engaging, confident, and reader-focused.\n\nUse concise yet vivid language.\n\nAvoid fluff, overused clich\u00e9s, and generic statements.\n\nReturn only the clean Markdown result with the introduction paragraph..\n\n"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "5aa7c8e3-06c5-4439-8e82-3786e6e40359",
"name": "conclusion",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-560,
440
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "openai/chatgpt-4o-latest",
"cachedResultName": "OPENAI/CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "=Use the main body content of an article to write a conclusion and faqs. Output markdown format.\n\nMain Body\n {{ $json.message.content }}"
},
{
"role": "system",
"content": "You are an expert writing assistant specializing in crafting concise, insightful, and impactful conclusions for articles across various topics. Your goal is to summarize the key takeaways, reinforce the article\u2019s value, and leave the reader with a lasting impression.\n\nGuidelines for Generating the Conclusion:\n\n\u2705 Summarize Key Takeaways Without Repetition\n\nIdentify the most essential points from the article without repeating entire sentences from the main body.\n\nHighlight core insights, trends, or findings in a concise manner.\n\n\u2705 Reinforce the Article\u2019s Value & Relevance\n\nEmphasize why the information matters in the broader context of the topic.\n\nAlign with the article\u2019s purpose\u2014whether it\u2019s to educate, inform, persuade, or provide solutions.\n\n\u2705 Deliver a Strong Final Thought\n\nEnd with a compelling, forward-looking, or actionable statement.\n\nConsider:\n\nA thought-provoking question\n\nA call to action (if relevant)\n\nA statement on future implications or ongoing developments\n\nAvoid generic phrases (e.g., \u201cThis is just the beginning\u201d or \u201cThe future looks bright\u201d).\n\nFormatting & Style:\n\nKeep it concise\u2014the conclusion should be around 100-150 words.\n\nUse clear, authoritative, and engaging language.\n\nAdapt tone and style to match the article (technical, business, educational, etc.).\n\nInput:\n\nThe main body of the article (excluding introduction & key takeaways)\n\nThe article's title (for context)\n\nOutput:A well-structured conclusion that effectively summarizes key points, reinforces relevance, and ends with a compelling thought.\n\nExample Conclusion for a Business Article\n\n(Title: \"The Rise of Agentic AI in Workflow Automation\")\n\nAs businesses seek greater efficiency and adaptability, agentic AI automation is emerging as a transformative force in workflow management. By reducing cognitive load, managing complexity, and enabling continuous improvement, these systems empower organizations to operate with unprecedented precision and scalability.\n\nHowever, successful implementation requires a strategic approach\u2014ensuring seamless integration, robust governance, and continuous refinement. Organizations that embrace this shift will gain a significant competitive edge, optimizing operations while driving innovation.\n\nFor businesses evaluating their automation strategies, the key question is no longer if agentic AI will play a role\u2014but how soon they will adopt it to stay ahead in a rapidly evolving digital landscape.\n\nExample Conclusion for a Consumer Guide\n\n(Title: \"How to Choose the Best Electric Bike for Your Needs\")\n\nChoosing the right electric bike depends on your lifestyle, terrain, and riding preferences. Whether you need a powerful e-bike for commuting or a lightweight model for weekend adventures, understanding motor types, battery life, and key features ensures a smarter purchase.\n\nBy evaluating your specific needs and budget, you can invest in an e-bike that enhances both convenience and sustainability. As technology continues to improve, e-bikes are becoming more affordable, efficient, and accessible\u2014making now an excellent time to explore your options.\n\nBefore making a final decision, test ride different models, compare specifications, and consider long-term factors like maintenance and warranty coverage. The right e-bike isn\u2019t just about performance\u2014it\u2019s about finding the perfect balance between comfort, power, and practicality for your everyday life.\n\nOutput Requirements\nFormat the output in Markdown using ## for the conclusion heading.\nDo not include triple backticks (''') or any additional spaces or text outside of the conclusion itself.\nEnsure clean and structured formatting without unnecessary dividers or extra line breaks."
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "ffcb55f3-8751-49c7-ad3a-67d251793b42",
"name": "structure",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
760,
-160
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=You are an advanced AI content strategist tasked with generating structured SEO writing briefs for blog articles based solely on provided keyword and metadata inputs. Each brief must be optimized to align perfectly with search intent, semantic relevance, keyword hierarchy, and the target audience.\n\nInput provided:\n\nPrimary keyword\n\nSearch intent classification\n\nRelated keyword\n\nSuggested keyword\n\nYour task:\nInfer the ideal writing approach from the input by performing the following:\n\nDetermine the optimal writing style and tone.\n\nIdentify and articulate any hidden insights or unique angles.\n\nDefine the precise target audience.\n\nOutline a semantic content structure including common subtopics and relevant user questions.\n\nGenerate a list of relevant FAQs that readers might have.\n\nCategorize keywords into meaningful groups reflecting their use and relationship.\n\nConstraints and instructions:\n\nUse only the input data; do not access or reference any external sources or search results.\n\nApply your pretrained semantic understanding to infer relationships and angles.\n\nIf no unique insights are found, set \"hidden_insight\": \"No significant insights detected beyond existing content trends.\"\n\nReturn your output strictly as a valid JSON object without markdown, commentary, or line breaks.\n"
},
{
"content": "=Use the following input data to generate a complete SEO content strategy brief:\n\n \nPrimary Keyword: {{ $('Edit Fields2').item.json.keyword }}\nSearch Intent: {{ $('Edit Fields2').item.json['search intent'] }}\nRelated Keyword: {{ $('Edit Fields2').item.json['related keyword'] }}\nSuggested Keyword: {{ $('Edit Fields2').item.json['suggested keyword'] }}\n\nRespond with a valid JSON object "
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "1f02fa44-825f-4468-83a3-7a3d78a9fbd4",
"name": "blog tittle",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-540,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini-2024-07-18",
"cachedResultName": "GPT-4O-MINI-2024-07-18"
},
"options": {},
"messages": {
"values": [
{
"content": "=Revise the blog post title. Consider:\nPrimary Keyword: {{ $json['primary keywords'] }}\nrelevent keyword: {{ $json.related_keywords }}\nwriting style:{{ $json['writing style'] }}\nsection1:{{ $json['section 1'] }}\nsection2:{{ $json[' section_2'] }}\nsection3:{{ $json[' section_3'] }}\n \n\nOutput only JSON\nIMPORTANT: Do not add extra spaces, extra characters or include any additional text.\n"
},
{
"role": "system",
"content": "=You are an expert in crafting highly engaging, SEO-optimized article titles that drive clicks and rank well in search engines.\n\nYour goal is to refine the initial working title into a clear, compelling, and search-friendly title that aligns with:\n- Primary and related_keywords Keywords\n- Writing Style & Tone\n- section1,section2,section3,\n\nTitle Guidelines:\n- Keep it between 50\u201360 characters\n- Use power words or numbers when appropriate (e.g., \u201c10 Proven Ways,\u201d \u201cUltimate Guide\u201d)\n- Avoid unnecessary words or fluff\n- Ensure it reads naturally and appeals to human curiosity\n\nYour Task:\n1. Analyze the input data\n2. Refine the title to be more SEO-friendly, engaging, and aligned with search intent\n3. Incorporate relevant keywords naturally\n4. Ensure clarity and readability\n5. Return only the final refined title as a plain text string in standard JSON. Do not include triple backticks or line breaks.\n"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "a7b3003b-ee1e-469e-abbd-4a6bc5437acf",
"name": "outline",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
580,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Generate a detailed outline for a blog post with the following details:\n\n- **Title**:{{ $('blog tittle').item.json.message.content }} \n- **Key Takeaways**: {{ $('genrate key takeaways').item.json.message.content }}\n- **Introduction**: {{ $json.message.content }}\nPrimary Keyword: {{ $('Set KWs and Insights fields').item.json['primary keywords'] }}\nrelated keyword:{{ $('Set KWs and Insights fields').item.json.related_keywords }}\nSearch intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\nSemantic analysis: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\nWriting tone and style:{{ $('Set KWs and Insights fields').item.json['writing style'] }} \nsection1:{{ $('Set KWs and Insights fields').item.json['section 1'] }}\nsection2:{{ $('Set KWs and Insights fields').item.json[' section_2'] }}\nsection3:{{ $('Set KWs and Insights fields').item.json[' section_3'] }}\nFormatting Instructions:\n\nOutput must be in Markdown format and structured correctly.\nDo NOT add any commentary, explanations, or extra text about what the agent did.\nDo NOT include dividers (---), line breaks (\\n), or unnecessary whitespace.\nOnly return the required Markdown content\u2014nothing more."
},
{
"role": "system",
"content": "=You are an expert content strategist specializing in structuring articles for clarity, engagement, and SEO performance. Your task is to create a detailed, logical outline that ensures smooth reading flow, aligns with search intent, and maximizes keyword relevance.\n\nYour Responsibilities:\n\nReview the provided inputs:\n\nArticle title\n\nPrimary keyword\n\nRelated keyword(s)\n\nsection1\n\nsection2\n\nsection3\n\nCreate an optimized article outline that:\n\nFollows a clear, logical hierarchy\n\nIncorporates SEO best practices and aligns with search intent\n\nNaturally integrates secondary and semantic keywords in headings/subheadings\n\nBreaks complex ideas into well-structured main sections and sub-sections\n\nIncludes hidden or unique insights if they improve depth and relevance\n\nFormatting Rules:\n\nUse ## for main sections\n\nUse ### for sub-sections\n\nDo not include the article title, introduction, or conclusion\n\nOutput strictly in pure Markdown\n\nNo explanations, comments, code blocks, or extra labels\n\nStyle Guidelines:\n\nKeep headings concise but descriptive, including relevant keywords naturally\n\nEnsure a logical progression from start to finish\n\nAvoid unnecessary or filler headings\n\nMatch the tone and structure to the article\u2019s search intent (informational, commercial, etc.)\n\nHighlight value, transformation, or action in each section\n\nFinal Output: Only the clean Markdown outline, following the above rules exactly.\n\n"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "321881b4-793f-4a83-b278-2568678bcadb",
"name": "blog prompet",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
940,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Create a comprehensive, SEO-optimized prompt for an AI article writer using the data below.\n\n- **Title**: {{ $('blog tittle').item.json.message.content }} \n- **Key Takeaways**: {{ $('genrate key takeaways').item.json.message.content }} \n- **Introduction**: {{ $('introduction').item.json.message.content }} \nPrimary Keyword: {{ $('Set KWs and Insights fields').item.json['primary keywords'] }}\nrelated keyword:{{ $('Set KWs and Insights fields').item.json.related_keywords }}\nSearch intent: {{ $('Set KWs and Insights fields').item.json.search_intent }}\nintroduction: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\nWriting style and tone:{{ $('Set KWs and Insights fields').item.json['writing style'] }} \nArticle goal: {{ $('Set KWs and Insights fields').item.json.semantic_analysis }}\noutline:{{ $json.message.content }}\nsection1:{{ $('Set KWs and Insights fields').item.json['section 1'] }}\nsection2:{{ $('Set KWs and Insights fields').item.json[' section_2'] }}\nsection3:{{ $('Set KWs and Insights fields').item.json[' section_3'] }}\n "
},
{
"role": "system",
"content": "You are an expert AI writing assistant trained to generate high-quality, structured, SEO-optimized article bodies based on a detailed outline and content strategy. Your task is to write only the main body sections of a blog article. Do not include the introduction, key takeaways, or conclusion\u2014those are handled separately.\n\nYour output must:\n- Follow the provided outline exactly, treating each section and subsection as a content block to expand with depth, clarity, and coherence.\n- Use a logical, engaging flow between sections and subsections.\n- Adapt the content tone, style, and depth based on the target audience and search intent.\n- Incorporate primary and secondary keywords naturally\u2014prioritize clarity and usefulness over keyword stuffing.\n- Use semantic subtopics and related questions to enrich the content and improve topical relevance.\n- Evaluate whether the hidden insight enhances the article. If valuable, use it as a supporting argument; if not, exclude it.\n\nWriting Instructions:\n\n1. Structure & Flow\n- Write the content section-by-section, using the outline as the backbone.\n- Maintain logical transitions and ensure each section provides actionable, valuable information.\n- Use bullet points, subheadings, examples, or tips where appropriate to aid readability.\n\n2. Keywords & SEO\n- Use the primary keyword prominently but naturally where it fits best.\n- Integrate secondary keywords and semantic terms (from common subtopics and related questions) in context\u2014do not over-optimize.\n- Address related user questions to improve relevance and value.\n\n3. Tone & Style\n- Match the desired tone and writing style based on the topic:\n - Business or technical content \u2192 Professional, informative, and authoritative.\n - Consumer, travel, or lifestyle \u2192 Conversational, engaging, and experience-driven.\n- Use clear, concise sentences while maintaining depth and insight.\n\n4. Use of Hidden Insight\n- If a hidden insight is included and enhances the section's argument, weave it in organically.\n- If the insight is not relevant to the section\u2019s context, omit it.\n\n5. Real-World Value\n- Where appropriate, include:\n - Practical examples or case studies\n - Steps, tips, comparisons, or expert insights\n - Clarifying analogies or metaphors\n\n6. Formatting\n- Use short paragraphs, bullet points, and clear headings for easy scanning.\n- Avoid unnecessary filler\u2014prioritize useful, substantial content.\n\nDo Not Include:\n- Introduction\n- Key Takeaways\n- Conclusion\n- Code fences, extra line breaks, or explanation about your output\n\nReturn only the clean Markdown-formatted content for the main body sections as defined in the outline.\n\n"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "ff404260-fc5c-4067-9376-36d0d14a9ae9",
"name": "assemble",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-200,
440
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "openai/chatgpt-4o-latest",
"cachedResultName": "OPENAI/CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "=Assemble the article from the following components into a single cohesive output, formatted in Markdown, and embed both internal and external links naturally into relevant keywords or phrases.\n\n- **Introduction**: {{ $('introduction').item.json.message.content }} \n- **Key Takeaways**: {{ $('genrate key takeaways').item.json.message.content }} \n- **Main Content**: {{ $('body of article').item.json.message.content }}\n- **Conclusion**: {{ $('conclusion').item.json.message.content }}\n\nOutput Requirements:\n- Use `##` for main section headings like Key Takeaways, Introduction, FAQs, and Conclusion.\n- Use `##` for primary headings (H2s) in the main content.\n- Use `###` for subheadings (H3s) under those primary headings.\n- Format lists as bulleted lists using `-`.\n- Place internal link ({{ $('Get row(s) in sheet').item.json.URL }}) on the first relevant keyword or phrase.\n- Place 2\u20134 external links from {{ $('research data').item.json.search_results.map(item => item.url) }} on authoritative keywords, stats, or references.\n- Ensure links appear as part of the sentence flow, e.g., Learn more in our [enterprise automation guide]({{ $('Get row(s) in sheet').item.json.URL }}) and this [market analysis report]({{ $('research data').item.json.search_results[0].url }}).\n"
},
{
"role": "system",
"content": "=Assemble the article from the following components into a single cohesive output, formatted in Markdown, and embed both internal and external links naturally into relevant keywords or phrases.\n\n- **Introduction**: {{ $('introduction').item.json.message.content }} \n- **Key Takeaways**: {{ $('genrate key takeaways').item.json.message.content }} \n- **Main Content**: {{ $('body of article').item.json.message.content }}\n- **Conclusion**: {{ $('conclusion').item.json.message.content }}\n\nOutput Requirements:\n- Use `##` for main section headings like Key Takeaways, Introduction, FAQs, and Conclusion.\n- Use `##` for primary headings (H2s) in the main content.\n- Use `###` for subheadings (H3s) under those primary headings.\n- Format lists as bulleted lists using `-`.\n- Place internal link ({{ $('Get row(s) in sheet').item.json.URL }}) on the first relevant keyword or phrase.\n- Place 2\u20134 external links from {{ $('research data').item.json.search_results.map(item => item.url) }} on authoritative keywords, stats, or references.\n- Ensure links appear as part of the sentence flow, e.g., Learn more in our [enterprise automation guide]({{ $('Get row(s) in sheet').item.json.URL }}) and this [market analysis report]({{ $('research data').item.json.search_results[0].url }}).\n"
}
]
},
"jsonOutput": "={{ false }}"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "239fccd0-48bb-42d1-b498-bd4781bdde55",
"name": "Get row(s) in sheet1",
"type": "n8n-nodes-base.googleSheets",
"position": [
-320,
-160
],
"parameters": {
"options": {
"returnFirstMatch": true
},
"filtersUI": {
"values": [
{
"lookupValue": "no",
"lookupColumn": "blog"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1932135411,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1rVr-iEbZGtLlmnfkMHhcPVKY_S5xvRGl-1UZtSvkMvU/edit#gid=1932135411",
"cachedResultName": "analyzed_keywords_with_volume.csv"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1rVr-iEbZGtLlmnfkMHhcPVKY_S5xvRGl-1UZtSvkMvU",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1rVr-iEbZGtLlmnfkMHhcPVKY_S5xvRGl-1UZtSvkMvU/edit?usp=drivesdk",
"cachedResultName": "analyzed_keywords_with_volume"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.5
},
{
"id": "bf6b7413-e82d-49b9-818b-4b79f4901bf0",
"name": "Research",
"type": "n8n-nodes-base.perplexity",
"position": [
120,
-160
],
"parameters": {
"model": "sonar-deep-research",
"options": {},
"messages": {
"message": [
{
"content": "=Act as a professional news researcher who is capable of finding detailed summaries about a news topic from highly reputable sources \n {{ $json.toJsonString() }}"
}
]
},
"requestOptions": {}
},
"credentials": {
"perplexityApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "a4274b30-af49-42b6-9f52-676f0b7cb32c",
"name": "research data",
"type": "n8n-nodes-base.code",
"position": [
320,
-160
],
"parameters": {
"jsCode": "const data = $json;\n\n// Limit to first 5 search results\nconst limitedSearchResults = (data.search_results || []).slice(0, 5).map(item => {\n return {\n title: item.title || null,\n url: item.url || null,\n date: item.date || null,\n last_updated: item.last_updated || null\n };\n});\n\n// Limit to first 5 citations\nconst limitedCitations = (data.citations || []).slice(0, 5);\n\n// Return single item to OpenAI with trimmed content\nreturn [\n {\n json: {\n search_results: limitedSearchResults,\n citations: limitedCitations,\n message: data.choices?.[0]?.message?.content || null\n }\n }\n];\n"
},
"typeVersion": 2
},
{
"id": "ba6103b7-56a0-4a4f-859a-74e7e910f57f",
"name": "body of article",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1340,
80
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-5-mini",
"cachedResultName": "GPT-5-MINI"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=You are an expert AI content writer tasked with generating only the main body of a blog article, strictly following a structured outline and research provided. Your output must be insightful, fact-driven, and well-formatted in Markdown for web publication.\n\nFormatting Rules\nHeadings:\n\nUse H2 (##) for main sections\n\nUse H3 (###) for subsections\n\nStyling:\n\nUse bold for emphasis\n\nUse bullet points (-) and numbered lists (1. 2. 3.) where useful, but keep them concise\n\nConvert overly long lists into short, digestible paragraphs\n\nFlow:\n\nEnsure smooth transitions between sections\n\nEnd each section with a lead-in sentence to the next topic\n\nAvoid abrupt shifts or repetitive ideas\n\nContent Requirements\nFollow the outline exactly \u2014 no extra sections, no missing points\n\nEnhance depth with:\n\nReal-world case studies and examples\n\nQuantifiable outcomes (e.g., \u201cBoosted retention by 15%, generating $1.2M in additional revenue\u201d)\n\nChallenges faced, solutions applied, and business results achieved\n\nMaintain clarity & readability:\n\nMix paragraphs with occasional lists for variety\n\nAvoid jargon unless essential, and explain it when used\n\nKeyword Optimization:\n\nNaturally integrate primary and secondary keywords\n\nAvoid keyword stuffing\u2014prioritize natural readability\n\nLogical Structure:\n\nEach section should bring unique insights\n\nAvoid overlapping or rephrasing points from earlier sections\n\nImportant\nDo not include the introduction or conclusion\u2014focus entirely on the main body content.\n\nKeep tone engaging yet authoritative, suited to the target audience.\n\n"
},
{
"content": "=use these as a research write bades on that \noutline:{{ $json.message.content}}\nintroduction:{{ $('introduction').item.json.message.content }}\nkey takeaways:{{ $('genrate key takeaways').item.json.message.content }}\nblog tittle:{{ $('blog tittle').item.json.message.content }}\nprompet:{{ $json.message.content }}"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "4b844043-9510-4fe5-886a-e414d843d8eb",
"name": "Get row(s) in sheet",
"type": "n8n-nodes-base.googleSheets",
"position": [
500,
-160
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1720712249,
"cachedResultUrl": "https://docs.google.com/YOUR_AWS_SECRET_KEY_HERE-mMUZ8tVa9uD5ov7NcI/edit#gid=1720712249",
"cachedResultName": "Sheet1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1y2pnFt6plcMtjz1CMQl7o4LO-mMUZ8tVa9uD5ov7NcI",
"cachedResultUrl": "https://docs.google.com/YOUR_AWS_SECRET_KEY_HERE-mMUZ8tVa9uD5ov7NcI/edit?usp=drivesdk",
"cachedResultName": "completed blogs"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"name": "<your credential>"
}
},
"typeVersion": 4.6
},
{
"id": "22c56222-0db8-4e06-813a-a8b5c1d3d7aa",
"name": "Create a post",
"type": "n8n-nodes-base.wordpress",
"position": [
1060,
440
],
"parameters": {
"title": "={{ $('blog tittle').item.json.message.content }}",
"additionalFields": {
"status": "draft",
"content": "={{ $json.html }}",
"authorId": 1,
"postTemplate": {
"values": {}
},
"commentStatus": "closed"
}
},
"credentials": {
"wordpressApi": {
"name": "<your credential>"
}
},
"typeVersion": 1
},
{
"id": "93320a2a-6651-439c-8f32-10e6456ad458",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
-420,
-300
],
"parameters": {
"width": 340,
"height": 100,
"content": "#add a google sheet with keyword +related keyword+search intent \nalso create google sheet cerdentiols\n**Double click** to edit me. [Guide](https://docs.n8n.io/workflows/sticky-notes/)"
},
"typeVersion": 1
},
{
"id": "39ab91b2-c4b5-48fe-a311-d747bbe35a8c",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
60,
-340
],
"parameters": {
"content": "## this perpelexity node will search the top ten article \n**Double click** to edit me. [Guide](https://docs.n8n.io/workflows/sticky-notes/)"
},
"typeVersion": 1
},
{
"id": "75a296e6-eb8e-497b-a835-a8b821d3f822",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
460,
-340
],
"parameters": {
"width": 300,
"content": "## add sheet with your completed blogs url its for internal linking\n**Double click** to edit me. [Guide](https://docs.n8n.io/workflows/sticky-notes/)"
},
"typeVersion": 1
},
{
"id": "62c05318-a51e-40ff-847c-721e82ebfd37",
"name": "HTML",
"type": "n8n-nodes-base.code",
"position": [
580,
440
],
"parameters": {
"jsCode": "// Get markdown content\nlet md = $input.first().json.message.content || \"\";\n\n// Markdown to HTML conversion (no external libs)\nfunction mdToHtml(markdown) {\n return markdown\n // H6 to H1 (strip # and wrap in correct tag)\n .replace(/^###### (.*$)/gim, '<h6>$1</h6>')\n .replace(/^##### (.*$)/gim, '<h5>$1</h5>')\n .replace(/^#### (.*$)/gim, '<h4>$1</h4>')\n .replace(/^### (.*$)/gim, '<h3>$1</h3>')\n .replace(/^## (.*$)/gim, '<h2>$1</h2>')\n .replace(/^# (.*$)/gim, '<h1>$1</h1>')\n // Bold\n .replace(/\\*\\*(.*?)\\*\\*/gim, '<strong>$1</strong>')\n // Italic\n .replace(/\\*(.*?)\\*/gim, '<em>$1</em>')\n // Links\n .replace(/\\[(.*?)\\]\\((.*?)\\)/gim, '<a href=\"$2\" target=\"_blank\">$1</a>')\n // Lists\n .replace(/^\\s*[-*] (.*$)/gim, '<li>$1</li>')\n // Paragraphs (only if not already in block tags)\n .replace(/^(?!<h\\d>|<li>|<strong>|<em>|<a)(.+)$/gim, '<p>$1</p>')\n // Wrap list items in <ul>\n .replace(/(<li>.*<\\/li>)/gims, '<ul>$1</ul>');\n}\n\nlet html = mdToHtml(md);\n\n// Styling wrapper\nlet finalHtml = `<div style=\"font-family: Nunito, sans-serif; line-height: 1.6;\">${html}</div>`;\n\nreturn [{ html: finalHtml }];\n\n"
},
"typeVersion": 2
},
{
"id": "675fa5f0-8baf-47fc-aaf3-3868249822e2",
"name": "Sticky Note3",
"type": "n8n-nodes-base.stickyNote",
"position": [
520,
620
],
"parameters": {
"width": 300,
"content": "## this will convert your article into html that will posted on wordpress\n**Double click** to edit me. [Guide](https://docs.n8n.io/workflows/sticky-notes/)"
},
"typeVersion": 1
},
{
"id": "f0b93ada-d152-43d4-88cf-bc909ad64ec6",
"name": "Sticky Note4",
"type": "n8n-nodes-base.stickyNote",
"position": [
1000,
620
],
"parameters": {
"width": 320,
"content": "## just create the wordpress user cerdentiols and select create post\n**Double click** to edit me. [Guide](https://docs.n8n.io/workflows/sticky-notes/)"
},
"typeVersion": 1
},
{
"id": "4e27b0e2-3940-41e9-83e7-313a3f779d1e",
"name": "edit",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
180,
440
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "openai/chatgpt-4o-latest",
"cachedResultName": "OPENAI/CHATGPT-4O-LATEST"
},
"options": {},
"messages": {
"values": [
{
"content": "= Perform the final edit on:\n {{ $json.message.content }}"
},
{
"role": "system",
"content": "You are an expert SEO-optimized content final editor.\n\nYour task is to enhance and expand the provided article to near-perfect quality (9.5+/10) while maintaining clarity, logical flow, and readability. The final article should be well-structured, engaging, and adaptable to any topic, including (but not limited to) business, healthcare, technology, education, finance, environmental science, legal, consumer guides, and marketing.\n\n\u2705 General Refinement Guidelines\n\n1\ufe0f\u20e3 Expand, Don\u2019t Cut\nPreserve all valuable content while adding depth where necessary.\nDo not shorten or remove sections unless redundant or unclear.\nIf something feels incomplete, expand rather than delete it.\n\n2\ufe0f\u20e3 Strengthen Section Transitions for Seamless Flow\nEnsure smooth transitions between sections by adding brief lead-ins before introducing a new concept.\nEach section should naturally build on the previous one\u2014avoiding abrupt shifts.\nImplementation:\nIf a new section introduces a major topic, insert a transition sentence summarizing why the previous section matters.\nExample:\nBefore: \"While automation improves efficiency, its true power emerges when integrated with existing systems.\"\nAfter: \"Efficiency gains are only part of the equation\u2014true business impact comes from seamlessly integrating automation with existing workflows to ensure sustainable improvements.\"\n\n3\ufe0f\u20e3 Diversify Real-World Applications Across More Industries\nDo NOT over-focus on one industry or domain (e.g., AI, tech, or automation).\nWhere applicable, ensure varied examples in fields like:\n\nHealthcare (diagnostic automation, patient management)\n\nFinance (risk assessment, fraud detection, portfolio management)\n\nEducation (personalized learning, curriculum adaptation)\n\nLegal (contract automation, compliance monitoring)\n\nMarketing (data-driven campaigns, customer behavior analysis)\n\nRetail & E-commerce (inventory optimization, demand forecasting)\n\nConsumer Behavior (product recommendations, pricing strategies)\n\nEnvironmental Science (climate impact modeling, resource allocation)\nImplementation:\nIf the article lacks industry diversity, add 1\u20132 additional sector applications.\nExample:\nBefore: \"Predictive analytics is transforming logistics and finance.\"\nAfter: \"Predictive analytics is transforming industries beyond logistics and finance. In healthcare, it enhances diagnostic accuracy; in education, it customizes learning paths; in marketing, it optimizes ad spend by predicting customer behavior.\"\n\n4\ufe0f\u20e3 Strengthen the Conclusion with a Future-Focused Perspective\nAvoid generic wrap-ups\u2014end with a compelling strategic takeaway or challenge.\nEnsure future trends, competitive implications, and thought-provoking insights are included.\nExample:\nBefore: \"The question remains: How will businesses use this technology to redefine operations? The time to act is now.\"\nAfter: \"Looking ahead, businesses that embrace adaptable strategies and data-driven decision-making will lead in an increasingly competitive landscape. Whether through emerging technologies, customer-first innovation, or operational agility, the next era of success will belong to those who can not just adapt\u2014but anticipate change. The real question isn\u2019t if you\u2019ll adopt these advancements\u2014but how effectively you\u2019ll use them to gain a competitive edge.\"\n\n5\ufe0f\u20e3 Expand Instead of Reduce Content\nDo not cut content unless it is redundant or weakens clarity.\nIf a section feels too brief or lacks depth, expand it by:\n\nProviding real-world examples\n\nAdding practical applications\n\nElaborating on key insights\n\nStrengthening data-backed statements\n\nExample:\nBefore: \"Sustainable practices benefit businesses.\"\nAfter: \"Sustainable practices provide both environmental and financial advantages. Businesses that invest in renewable energy, reduce waste, and optimize resource consumption see long-term cost savings and increased brand loyalty.\"\n\n6\ufe0f\u20e3 Internal and External Linking Optimization\nEmbed both internal and external links strategically to enhance SEO and reader experience:\n\nInternal Links: Link relevant keywords or phrases to other articles, guides, or resources within the same website. Prioritize linking to cornerstone content and related in-depth resources to guide users deeper into the site.\n\nExternal Links: Link authoritative, reputable sources to support facts, statistics, and claims. Prefer .gov, .edu, and high-authority .com sites in the relevant industry.\n\nEnsure links are naturally embedded within sentences rather than placed awkwardly.\n\nUse descriptive anchor text (e.g., \u201cAI automation case studies\u201d instead of \u201cclick here\u201d).\n\nAvoid overlinking\u2014balance SEO benefits with readability.\n\n7\ufe0f\u20e3 Do Not Add Commentary on What Was Improved\nOnly output the refined final article without explanations.\n\n8\ufe0f\u20e3 No Unnecessary Formatting Changes\nDo not insert horizontal lines, extra blank lines, or irrelevant styling changes.\n\n"
}
]
},
"jsonOutput": "={{ false }}"
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "058bf082-0b54-4a72-be98-ff516cc85266",
"name": "Sticky Note5",
"type": "n8n-nodes-base.stickyNote",
"position": [
180,
620
],
"parameters": {
"width": 300,
"content": "## this is edit model for article you can change it prompet on your gauidlines\n**Double click** to edit me. [Guide](https://docs.n8n.io/workflows/sticky-notes/)"
},
"typeVersion": 1
}
],
"active": false,
"settings": {
"executionOrder": "v1"
},
"versionId": "007206c1-f110-485d-acb6-02a81092a36c",
"connections": {
"Code": {
"main": [
[
{
"node": "Set KWs and Insights fields",
"type": "main",
"index": 0
}
]
]
},
"HTML": {
"main": [
[
{
"node": "Create a post",
"type": "main",
"index": 0
}
]
]
},
"edit": {
"main": [
[
{
"node": "HTML",
"type": "main",
"index": 0
}
]
]
},
"outline": {
"main": [
[
{
"node": "blog prompet",
"type": "main",
"index": 0
}
]
]
},
"Research": {
"main": [
[
{
"node": "research data",
"type": "main",
"index": 0
}
]
]
},
"assemble": {
"main": [
[
{
"node": "edit",
"type": "main",
"index": 0
}
]
]
},
"structure": {
"main": [
[
{
"node": "Code",
"type": "main",
"index": 0
}
]
]
},
"conclusion": {
"main": [
[
{
"node": "assemble",
"type": "main",
"index": 0
}
]
]
},
"blog tittle": {
"main": [
[
{
"node": "genrate key takeaways",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields2": {
"main": [
[
{
"node": "Research",
"type": "main",
"index": 0
}
]
]
},
"blog prompet": {
"main": [
[
{
"node": "body of article",
"type": "main",
"index": 0
}
]
]
},
"introduction": {
"main": [
[
{
"node": "outline",
"type": "main",
"index": 0
}
]
]
},
"research data": {
"main": [
[
{
"node": "Get row(s) in sheet",
"type": "main",
"index": 0
}
]
]
},
"body of article": {
"main": [
[
{
"node": "conclusion",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet": {
"main": [
[
{
"node": "structure",
"type": "main",
"index": 0
}
]
]
},
"Get row(s) in sheet1": {
"main": [
[
{
"node": "Edit Fields2",
"type": "main",
"index": 0
}
]
]
},
"genrate key takeaways": {
"main": [
[
{
"node": "introduction",
"type": "main",
"index": 0
}
]
]
},
"Set KWs and Insights fields": {
"main": [
[
{
"node": "blog tittle",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Test workflow\u2019": {
"main": [
[
{
"node": "Get row(s) in sheet1",
"type": "main",
"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.
googleSheetsOAuth2ApiopenAiApiperplexityApiwordpressApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This n8n workflow automates the creation of high-quality, SEO-optimized blog posts using AI. It pulls keyword data from Google Sheets, conducts research via Perplexity AI, generates structured content (title, introduction, key takeaways, body, conclusion, and FAQs) with OpenAI…
Source: https://n8n.io/workflows/7509/ — 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.
100% autonomous workflow that transforms YouTube videos into unique, high-quality, SEO-optimized blog articles and automatically publishes them to WordPress. No human intervention required: it uses Yo
AI-Generated Summary Block for WordPress Posts - with OpenAI, WordPress, Google Sheets & Slack. Uses manualTrigger, textClassifier, lmChatOpenAi, splitInBatches. Event-driven trigger; 32 nodes.
AI-Generated Summary Block for WordPress Posts - with OpenAI, WordPress, Google Sheets & Slack. Uses manualTrigger, textClassifier, lmChatOpenAi, splitInBatches. Event-driven trigger; 32 nodes.
This n8n template automates the process of adding an AI-generated summary at the top of your WordPress posts. It retrieves, processes, and updates your posts dynamically, ensuring efficiency and flexi
The Ultimate Guide to Optimize WordPress Blog Posts with AI. Uses manualTrigger, googleSheets, openAi, wordpress. Event-driven trigger; 21 nodes.