This workflow corresponds to n8n.io template #7581 — we link there as the canonical source.
This workflow follows the HTTP Request → 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 →
{
"nodes": [
{
"id": "37f90234-8233-495a-b9e5-394de7c76852",
"name": "When clicking \u2018Execute workflow\u2019",
"type": "n8n-nodes-base.manualTrigger",
"position": [
64,
96
],
"parameters": {},
"typeVersion": 1
},
{
"id": "3b725892-b48f-42b1-b76f-13222f146ade",
"name": "Sticky Note2",
"type": "n8n-nodes-base.stickyNote",
"position": [
16,
-48
],
"parameters": {
"color": 5,
"width": 1776,
"height": 320,
"content": "## Article Content Enhancer with AI Summary\n\nThis workflow enhances existing articles by adding an AI-generated heading and a short summary paragraph at the end. It retrieves the article content, processes it for the AI prompt, and updates the post with the new section.\n\n"
},
"typeVersion": 1
},
{
"id": "13591b8e-c2e3-45f3-b841-2e26c7ebe54c",
"name": "Fetch Article Content (API)",
"type": "n8n-nodes-base.httpRequest",
"position": [
288,
96
],
"parameters": {
"url": "=https://example.com/wp-json/wp/v2/posts?per_page=100",
"options": {
"batching": {
"batch": {}
}
},
"authentication": "genericCredentialType",
"genericAuthType": "httpBasicAuth"
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
},
{
"id": "bbb1b9e0-83ae-4145-8b28-989e10051fea",
"name": "Prepare Article Content Fields",
"type": "n8n-nodes-base.set",
"position": [
544,
96
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "2f9c26a8-4c05-4719-8027-d99943ec8a4c",
"name": "id",
"type": "string",
"value": "={{$json[\"id\"]}}"
},
{
"id": "f1fce4f9-7125-4c48-98f8-fa8ca9933714",
"name": "=title",
"type": "string",
"value": "={{$json[\"title\"][\"rendered\"]}}"
},
{
"id": "facdf038-65a1-408c-bdd6-fce4c73011db",
"name": "content",
"type": "string",
"value": "={{$json[\"content\"][\"rendered\"]}}"
},
{
"id": "0566adcc-82f7-4967-9d9a-d4a08c9c5c8d",
"name": "plainContent",
"type": "string",
"value": "={{ $json[\"content\"][\"rendered\"] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "65ba1acf-a99f-455b-8583-09e43799d7c2",
"name": "Format Article Content for Prompt",
"type": "n8n-nodes-base.code",
"position": [
784,
96
],
"parameters": {
"jsCode": "return items.map(item => {\n const rawHtml = item.json.content;\n const plainText = rawHtml.replace(/<[^>]+>/g, ' ').replace(/\\s+/g, ' ').trim();\n return {\n json: {\n id: item.json.id,\n title: item.json.title,\n content: plainText\n }\n }\n});\n"
},
"typeVersion": 2
},
{
"id": "5c58ac22-c58b-48e3-a164-a977b8e61ce2",
"name": "Generate Heading & Summary Paragraph (AI)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1024,
96
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Acting as a specialized content writer for a [Your Topic] website,\n\nThis is the text of a website article. Please write a suitable heading and a 3-line concluding paragraph (useful, experience-based, user-friendly content with high engagement) to add at the end of the article. \nArticle text: \n{{ $json.content }}\n\nPlease strictly follow these guidelines: \n- The information must be accurate, reliable, specialized, up-to-date, and original. \n- Pay special attention to user satisfaction and addressing their needs and questions. \n- The content should be useful and practical; it must offer significant value compared to other web content and be trustworthy and citable. It should also go beyond obvious facts. \n- Try to use copywriting and advertising techniques in the content; the brand name is [Your Brand] . \n- The content should be structured with a clear outline, headings, paragraphs, etc., and must be clear and simple, not complicated. \n- Include detailed and precise information as much as possible. \n- The content must be comprehensive, covering various aspects of the user's questions and the topic, including points competitors have missed. \n- Preferably, include the content\u2019s keyword (such as the article title) in the produced text. \n- The content aims to: \n 1. Attract organic traffic \n 2. Build branding \n 3. Be visible in chatbots \n 4. Increase conversion rate through copywriting \n- The tone should match the rest of the website\u2019s content.\n"
}
]
}
},
"credentials": {
"openAiApi": {
"name": "<your credential>"
}
},
"typeVersion": 1.8
},
{
"id": "386099a2-583c-48ad-bdc3-d91d691cf385",
"name": "Format AI Output for Update",
"type": "n8n-nodes-base.code",
"position": [
1376,
96
],
"parameters": {
"jsCode": "return items.map(item => {\n const id = item.json.id;\n const htmlContent = item.json.content; \n const summary = item.json.message?.content || \"\";\n\n \n const newContent = htmlContent + \"<hr />\" + summary; \n\n return {\n json: {\n id,\n content: newContent\n }\n };\n});\n"
},
"typeVersion": 2
},
{
"id": "bd7f690c-ac97-4c5a-8db5-524e4f8b2186",
"name": "Update Article in WordPress",
"type": "n8n-nodes-base.httpRequest",
"position": [
1616,
96
],
"parameters": {
"url": "=https://example.com/wp-json/wp/v2/posts",
"method": "PATCH",
"options": {
"batching": {
"batch": {}
}
},
"sendBody": true,
"authentication": "genericCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "content",
"value": "={{ $json.content }}"
},
{
"name": "post_id",
"value": "={{ $('Fetch Article Content (API)').item.json.id }}"
}
]
},
"genericAuthType": "httpBasicAuth"
},
"credentials": {
"httpBasicAuth": {
"name": "<your credential>"
}
},
"typeVersion": 4.2
}
],
"connections": {
"Fetch Article Content (API)": {
"main": [
[
{
"node": "Prepare Article Content Fields",
"type": "main",
"index": 0
}
]
]
},
"Format AI Output for Update": {
"main": [
[
{
"node": "Update Article in WordPress",
"type": "main",
"index": 0
}
]
]
},
"Prepare Article Content Fields": {
"main": [
[
{
"node": "Format Article Content for Prompt",
"type": "main",
"index": 0
}
]
]
},
"Format Article Content for Prompt": {
"main": [
[
{
"node": "Generate Heading & Summary Paragraph (AI)",
"type": "main",
"index": 0
}
]
]
},
"When clicking \u2018Execute workflow\u2019": {
"main": [
[
{
"node": "Fetch Article Content (API)",
"type": "main",
"index": 0
}
]
]
},
"Generate Heading & Summary Paragraph (AI)": {
"main": [
[
{
"node": "Format AI Output for Update",
"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.
httpBasicAuthopenAiApi
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
This workflow enriches your WordPress articles by automatically adding an AI-generated heading and a short concluding paragraph. It ensures each post ends with valuable, engaging content to improve user satisfaction, branding, and SEO.
Source: https://n8n.io/workflows/7581/ — 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
The best content automation in the market! This advanced workflow not only creates and publishes SEO-optimized blog posts to your WordPress website but also backs up all content and images to a design
WP. Uses openAi, outputParserStructured, chainLlm, httpRequest. Event-driven trigger; 63 nodes.
This workflow automates the end-to-end process of creating, optimizing, and publishing content on WordPress.
This template is ideal for creators, bloggers, and automation enthusiasts who want to auto-generate blog posts from AI-generated content — without lifting a finger. Whether you're running a tech blog,