Das Setup für n8n:
Docker-Image heruntergeladen: n8n Docker Hub (https://hub.docker.com/r/n8nio/n8n)
Umgebungsvariable angepasst (N8N_SECURE_COOKIE=false) für lokale Tests ohne HTTPS
Workflow gefunden: n8n Workflow für SEO-Blogs (https://n8n.io/workflows/11762-generate-e-e-a-t-seo-blog-drafts-for-wordpress-with-openai/)
Prompt und Workflow angepasst, getestet – und fertig.

Die bearbeitet Version des Workflows als JSON
{
"name": "Generate E-E-A-T SEO blog drafts for WordPress with OpenAI",
"nodes": [
{
"parameters": {
"path": "plots-eeat-blog",
"formTitle": "Create E-E-A-T WordPress Blog (Example)",
"formDescription": "Fill this form to generate an SEO + E-E-A-T optimized blog post for example.com.",
"formFields": {
"values": [
{
"fieldLabel": "Topic / Working Title",
"requiredField": true
},
{
"fieldLabel": "Primary (Focus) Keyword",
"requiredField": true
},
{
"fieldLabel": "Secondary Keywords (comma-separated)"
},
{
"fieldLabel": "Target Audience (who is this for?)",
"requiredField": true
},
{
"fieldLabel": "Search Intent",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Informational"
},
{
"option": "Commercial"
},
{
"option": "Transactional"
},
{
"option": "Local"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Tone of Voice",
"fieldType": "dropdown",
"fieldOptions": {
"values": [
{
"option": "Friendly expert"
},
{
"option": "Professional"
},
{
"option": "Investor focused"
},
{
"option": "Sales-driven"
}
]
},
"requiredField": true
},
{
"fieldLabel": "Preferred Word Count (e.g. 1500)",
"fieldType": "number",
"requiredField": true
},
{
"fieldLabel": "Author / Brand Name",
"requiredField": true
},
{
"fieldLabel": "Author Credentials / Experience (for E-E-A-T)",
"fieldType": "textarea",
"requiredField": true
},
{
"fieldLabel": "Real Experience / Project Notes (bullet style)",
"fieldType": "textarea"
}
]
},
"responseMode": "responseNode",
"options": {}
},
"id": "45607d74-1a8a-41ab-9186-2432311c15e9",
"name": "Form",
"type": "n8n-nodes-base.formTrigger",
"position": [
944,
512
],
"webhookId": "5f177de8-2e23-42e5-8b76-9ea2097eaa83",
"typeVersion": 2
},
{
"parameters": {
"assignments": {
"assignments": [
{
"name": "WP_URL",
"type": "string",
"value": "https://update-heroes.de/",
"id": "bc2699ee-7ba0-4275-9922-0587e0f42645"
},
{
"name": "topic",
"type": "string",
"value": "={{ $json['Topic / Working Title'] }}",
"id": "79089615-13aa-4b75-9cc3-d8f94449277b"
},
{
"name": "focus_keyword",
"type": "string",
"value": "={{ $json['Primary (Focus) Keyword'] }}",
"id": "dd5b8dee-8455-4f16-a283-bfda10f6cb65"
},
{
"name": "secondary_keywords",
"type": "string",
"value": "={{ $json['Secondary Keywords (comma-separated)'] }}",
"id": "24700192-de5c-4ee0-98c1-00af205422d8"
},
{
"name": "target_audience",
"type": "string",
"value": "={{ $json['Target Audience (who is this for?)'] }}",
"id": "b8860bee-011b-41b0-aaf9-90d945ccc39a"
},
{
"name": "search_intent",
"type": "string",
"value": "={{ $json['Search Intent'] }}",
"id": "456de7de-3e4a-4298-abd5-f099ff956a6a"
},
{
"name": "tone",
"type": "string",
"value": "={{ $json['Tone of Voice'] }}",
"id": "5e404836-32a1-4e24-9c48-fce13a906054"
},
{
"name": "word_count",
"type": "number",
"value": "={{ $json['Preferred Word Count (e.g. 1500)'] }}",
"id": "dd5a60dc-5d62-4268-8bda-504656a91c95"
},
{
"name": "author_name",
"type": "string",
"value": "={{ $json['Author / Brand Name'] }}",
"id": "578d965e-fe3d-421f-88b4-c28cc157bf98"
},
{
"name": "author_experience",
"type": "string",
"value": "={{ $json['Author Credentials / Experience (for E-E-A-T)'] }}",
"id": "ada9e5cd-1b7e-4602-be59-4e7cf1930463"
},
{
"name": "experience_notes",
"type": "string",
"value": "={{ $json['Real Experience / Project Notes (bullet style)'] }}",
"id": "0b15c8ea-244b-410d-9108-8098332e7f99"
}
]
},
"options": {}
},
"id": "4b11a1e4-defe-4ccb-8b8b-c6c0303a7c55",
"name": "Store Values",
"type": "n8n-nodes-base.set",
"position": [
1232,
512
],
"typeVersion": 3.3
},
{
"parameters": {
"modelId": "gpt-4o-mini",
"messages": {
"values": [
{
"content": "=Sie sind SEO- und WordPress-Sicherheits-Content-Stratege.\nSie MÜSSEN AUSSCHLIESSLICH gültige JSON-Daten zurückgeben. Keine Markdown-Tags, keine Erklärungen.\nWenn etwas fehlt, verwenden Sie eine leere Zeichenfolge oder ein leeres Array.\n\nGehen Sie davon aus, dass der Artikel auf update-heroes.de veröffentlicht wird, einer Website, die von Update Heroes – Ihre Plattform für WordPress-Updates und -Optimierungen erstellt wurde.\n\nINPUT DATA (from form):\n{\n \"topic\": \"{{ $json.topic }}\",\n \"focus_keyword\": \"{{ $json.focus_keyword }}\",\n \"secondary_keywords_raw\": \"{{ $json.secondary_keywords }}\",\n \"target_audience\": \"{{ $json.target_audience }}\",\n \"search_intent\": \"{{ $json.search_intent }}\",\n \"tone\": \"{{ $json.tone }}\",\n \"word_count\": {{ $json.word_count }},\n \"author_name\": \"{{ $json.author_name }}\",\n \"author_experience\": \"{{ $json.author_experience }}\",\n \"experience_notes\": \"{{ $json.experience_notes }}\"\n}\n\nReturn JSON with this exact structure:\n{\n \"metaTitle\": \"\", // <= 60 characters, include focus keyword, clicky but natural\n \"metaDescription\": \"\", // <= 160 characters, include focus keyword once, natural\n \"focusKeyword\": \"\", // cleaned primary keyword\n \"secondaryKeywords\": [], // cleaned array, max 6\n \"h1\": \"\", // main page H1\n \"slug\": \"\", // SEO slug, lowercase, hyphenated\n \"outline\": [\n {\n \"id\": \"intro\", // string id\n \"heading\": \"\", // H2 heading\n \"purpose\": \"\", // what this section does for reader\n \"estimatedWordCount\": 0\n }\n ],\n \"faqQuestions\": [], // 3-7 long-tail questions\n \"eeatNotes\": {\n \"authorBio\": \"\", // 1–2 sentence bio\n \"trustSignals\": [], // 3–6 short strings (e.g., years of experience, project count)\n \"experienceToHighlight\": [] // 3–6 bullet-style points from notes\n }\n}\n\nGuidelines:\n– Der Entwurf sollte in etwa der Gesamtwortzahl entsprechen.\n– Konzentrieren Sie sich auf Update Heroes – Ihre Plattform für WordPress-Updates und -Optimierungen und WordPress Wartung für eine sichere und leistungsstarke Website.\n– Die JSON-Datei MUSS direkt parsbar sein."
}
]
},
"jsonOutput": true,
"options": {
"maxTokens": 2048
}
},
"id": "256ee1bd-caba-4d42-bf77-ceefb5e99243",
"name": "AI: Create Metadata + Outline",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1520,
512
],
"typeVersion": 1,
"credentials": {
"openAiApi": {
"id": "niU9h36RbxUyRfXF",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"conditions": {
"options": {
"version": 1,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "c1",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.message.content.metaTitle }}",
"rightValue": ""
},
{
"id": "c2",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json.message.content.metaDescription }}",
"rightValue": ""
},
{
"id": "c3",
"operator": {
"type": "array",
"operation": "lengthGte",
"rightType": "number"
},
"leftValue": "={{ $json.message.content.outline }}",
"rightValue": "={{ 1 }}"
}
]
},
"options": {}
},
"id": "038597a2-cfe1-46f2-8d72-00975c1d4ab3",
"name": "Validate Output",
"type": "n8n-nodes-base.if",
"position": [
1872,
512
],
"typeVersion": 2
},
{
"parameters": {
"modelId": "gpt-4o",
"messages": {
"values": [
{
"content": "=You are a senior SEO content writer specialized in Bangalore real estate.\nWrite the full blog post body in clean HTML only (no <html>, <head>, <body> tags).\n\nUse this metadata JSON:\n{{ $json.message.content | json }}\n\nContext:\n- Website: update-heroes.de (Update Heroes – Ihre Plattform für WordPress-Updates und -Optimierungen)\n- Target audience: {{ $('Store Values').first().json.target_audience }}\n- Search intent: {{ $('Store Values').first().json.search_intent }}\n- Tone: {{ $('Store Values').first().json.tone }}\n- Desired word count: {{ $('Store Values').first().json.word_count }}\n- Author: {{ $('Store Values').first().json.author_name }} with experience: {{ $('Store Values').first().json.author_experience }}\n- Real notes: {{ $('Store Values').first().json.experience_notes }}\nArticle Structure Requirements\n\nTitle Format:\nKeyword + Power Word + Zahl\n\nMeta Description:\nDas Haupt-Keyword muss direkt nach dem Titel enthalten sein\n\nOutline Requirements:\n- Mindestens 15 Überschriften/Sub-Überschriften\n- Hierarchische Struktur H1–H6\n- Nur ein H1 pro Artikel\n- Umfassende Abdeckung des WordPress-Themas\n- Natürliche Integration von LSI-Keywords\n\nContent Specifications:\n- Mindestlänge: 2500 Wörter\n- Lesbarkeit: Schulniveau 7\n- Tonfall: Formal, informativ, optimistisch\n- Keyword-Dichte: ca. 1,3%\n\nKeyword Placement:\n- Innerhalb der ersten 10 % des Textes\n- Mindestens einmal in einer Subüberschrift\n- 2–3 Mal im gesamten Artikeltext\n\nWriting Style Requirements:\n- Verwenden Sie Kontraktionen, wo sinnvoll\n- Übergangsphrasen einfügen\n- Satzstruktur variieren\n- Umgangssprachliche Wendungen dezent einbinden\n- Prinzipien von E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) beachten\n\nRequired Elements:\n- Umfassende Outline in Tabellenform\n- Mindestens 6 FAQs mit Antworten, **vor dem Fazit**\n- Mindestens ein relevanter externer Link\n- 700–800 Wörter pro Hauptüberschrift\n- Markdown-Formatierung für alle Überschriften\n- Mischung aus Absätzen, Listen und Tabellen\n- 100 % Originalinhalt\n\nExecution Instructions:\n- Zeigen Sie die Einleitungsnachricht\n- Generieren Sie die umfassende Outline\n- Schreiben Sie den kompletten Artikel gemäß den Vorgaben\n- Fügen Sie die Abschlussnachricht an\n- For each item in outline[], create an <h2> with that heading and detailed paragraphs underneath.\n- You may use <h3> subheadings where helpful.\n- At the end, add a section \"FAQ\" with each faqQuestions[] item as an <h3> question and a helpful answer.\n- Use only <p>, <h2>, <h3>, <ul>, <li>, <strong>, <em> tags.\n- Do NOT include meta title/description or JSON in the output.\n- Return ONLY the HTML body."
}
]
},
"options": {
"maxTokens": 4096
}
},
"id": "54668a31-ed14-4f77-a107-0ef0792c3091",
"name": "AI: Write Full Article",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2432,
112
],
"typeVersion": 1,
"credentials": {
"openAiApi": {
"id": "niU9h36RbxUyRfXF",
"name": "OpenAi account"
}
}
},
{
"parameters": {
"jsCode": "const meta = $('AI: Create Metadata + Outline').first().json.message.content;\nconst body = $('AI: Write Full Article').first().json.message.content;\n\nreturn [\n {\n title: meta.metaTitle,\n h1: meta.h1 || meta.metaTitle,\n slug: meta.slug,\n metaDescription: meta.metaDescription,\n focusKeyword: meta.focusKeyword,\n secondaryKeywords: meta.secondaryKeywords,\n imagePrompt: meta.imagePrompt,\n bodyHtml: body\n }\n];"
},
"id": "5dbdcfcf-e41f-4aae-ad9a-8827afe095f3",
"name": "Compile Post",
"type": "n8n-nodes-base.code",
"position": [
2272,
320
],
"typeVersion": 1
},
{
"parameters": {
"title": "={{ $json.h1 }}",
"additionalFields": {
"content": "={{ $json.bodyHtml }}",
"slug": "={{ $json.slug }}",
"status": "draft"
}
},
"id": "6d663829-0954-4f94-a2e8-6ef2f5fb9a26",
"name": "Create WP Draft",
"type": "n8n-nodes-base.wordpress",
"position": [
2528,
320
],
"typeVersion": 1,
"credentials": {
"wordpressApi": {
"id": "LKuyAmHH18VmrEM7",
"name": "Wordpress account"
}
}
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={ \"message\": \"✅ Draft created on example.com with AI content and featured image.\" }",
"options": {}
},
"id": "2903269e-5180-4e1a-80b0-0149074b5884",
"name": "Respond: Success",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2768,
320
],
"typeVersion": 1
},
{
"parameters": {
"respondWith": "json",
"responseBody": "={ \"message\": \"❌ There was a problem generating metadata / outline. Please tweak the inputs and try again.\" }",
"options": {}
},
"id": "f9fa7511-d20d-40aa-b233-e401bfd8ffe3",
"name": "Respond: Error",
"type": "n8n-nodes-base.respondToWebhook",
"position": [
2240,
960
],
"typeVersion": 1
},
{
"parameters": {
"content": "## About the Workflow\n\nThis workflow automatically creates a complete, SEO-ready WordPress blog post using AI from idea to published draft.\n\nYou fill out a simple form with your topic, keywords, audience, tone, word count, and author details. The workflow then plans the article, generates SEO metadata, writes the content in clean HTML, creates a featured image, and publishes everything as a WordPress draft.\n\nIts goal is to save time while maintaining high standards for SEO quality, structure, and E-E-A-T. The result is a fully packaged blog post ready for review and publishing.\n\nIdeal for:\n• SEO teams \n• Content writers and agencies \n• Real estate and local business websites \n• Website owners scaling content production \n\nBefore running the workflow, generate a WordPress Application Password for an administrator user and store it in the WordPress credentials in n8n. Once set up, the process runs end-to-end with no manual publishing steps.\n",
"height": 512,
"width": 480
},
"id": "7498fee1-eafb-4f88-9920-7174c892170c",
"name": "📝 Blog Form",
"type": "n8n-nodes-base.stickyNote",
"position": [
368,
240
],
"typeVersion": 1
},
{
"parameters": {
"content": "## 1.Form & Input Handling\n\nThe workflow starts with a form that collects the topic, keywords, audience, tone, and author experience. The Store Values node standardises this data so every following step receives clean and predictable input.\n",
"height": 368,
"width": 512,
"color": 7
},
"id": "c4b99eae-df38-4e05-8a5d-c8ac4a7599ef",
"name": "Sticky Note10",
"type": "n8n-nodes-base.stickyNote",
"position": [
896,
304
],
"typeVersion": 1
},
{
"parameters": {
"content": "## 2.SEO Planning & Structure\n\nThis section builds the SEO foundation: metadata, headings, article outline, trust signals, and validation checks. The workflow stops early if essential SEO elements are missing.\n",
"height": 368,
"width": 576,
"color": 7
},
"id": "6945c8a2-453b-4444-901e-7032a23501fb",
"name": "Sticky Note17",
"type": "n8n-nodes-base.stickyNote",
"position": [
1472,
304
],
"typeVersion": 1
},
{
"parameters": {
"content": "## 3.Write → Package → Create Draft → Generate Image\n\nUsing the approved structure, the workflow writes the full article, packages all post data, creates a WordPress draft, and generates a featured image so the post is content-complete.\n\n## IMPORTANT\n\nGenerate an Application Password in WordPress for an administrator user.\n\nName your application: n8n-auto-blog \nClick Generate.\n\nYou will receive a password like:\nABCD EFGH IJKL MNOP\n\nSave this password and add it to the WordPress credentials in n8n for this workflow to function correctly.\n",
"height": 736,
"width": 832,
"color": 7
},
"id": "63d0a0ec-51a9-4430-8fbf-246018596c91",
"name": "Sticky Note18",
"type": "n8n-nodes-base.stickyNote",
"position": [
2144,
-288
],
"typeVersion": 1
},
{
"parameters": {
"content": "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n## Final Response\n\nA clear success or error response is returned so the user always knows the final result.\n",
"height": 640,
"width": 864,
"color": 7
},
"id": "48fef7d4-1f5c-43da-88ad-fac14c97675f",
"name": "Sticky Note11",
"type": "n8n-nodes-base.stickyNote",
"position": [
2128,
528
],
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"Form": {
"main": [
[
{
"node": "Store Values",
"type": "main",
"index": 0
}
]
]
},
"Compile Post": {
"main": [
[
{
"node": "Create WP Draft",
"type": "main",
"index": 0
}
]
]
},
"Store Values": {
"main": [
[
{
"node": "AI: Create Metadata + Outline",
"type": "main",
"index": 0
}
]
]
},
"Create WP Draft": {
"main": [
[
{
"node": "Respond: Success",
"type": "main",
"index": 0
}
]
]
},
"Validate Output": {
"main": [
[
{
"node": "AI: Write Full Article",
"type": "main",
"index": 0
}
],
[
{
"node": "Respond: Error",
"type": "main",
"index": 0
}
]
]
},
"AI: Write Full Article": {
"main": [
[
{
"node": "Compile Post",
"type": "main",
"index": 0
}
]
]
},
"AI: Create Metadata + Outline": {
"main": [
[
{
"node": "Validate Output",
"type": "main",
"index": 0
}
]
]
}
},
"active": true,
"settings": {
"executionOrder": "v1",
"availableInMCP": false
},
"versionId": "97d9ca5c-63ed-4eef-b2ad-0dcc6bf5964b",
"meta": {
"templateId": "11762",
"templateCredsSetupCompleted": true,
"instanceId": "8b48860cd2f249c6b1cc30d678a5f1a3688eaf8f3357ef531dd99ca7eea0e0f4"
},
"id": "-8EkBBYy6vQDiYq16F3z8",
"tags": []
}



Schreibe einen Kommentar