KI-gesteuerter WordPress-Inhaltsarbeitsablauf

Fortgeschritten

Dies ist ein Content Creation, Multimodal AI-Bereich Automatisierungsworkflow mit 12 Nodes. Hauptsächlich werden If, Code, Postgres, Wordpress, Agent und andere Nodes verwendet. Automatisierung der Blog-Veröffentlichung von PostgreSQL nach WordPress mit OpenAI GPT

Voraussetzungen
  • PostgreSQL-Datenbankverbindungsdaten
  • OpenAI API Key
Workflow-Vorschau
Visualisierung der Node-Verbindungen, mit Zoom und Pan
Workflow exportieren
Kopieren Sie die folgende JSON-Konfiguration und importieren Sie sie in n8n
{
  "id": "ai-wordpress-blog-automation",
  "meta": {
    "templateCredsSetupCompleted": false
  },
  "name": "AI-Powered WordPress Content Workflow",
  "tags": [],
  "nodes": [
    {
      "id": "291e2ca0-6eb2-4e69-a147-2369e7f27257",
      "name": "🗄️ PostgreSQL Trigger",
      "type": "n8n-nodes-base.postgres",
      "position": [
        -672,
        80
      ],
      "parameters": {
        "query": "SELECT *\nFROM \"your_table_name\"\nWHERE \"Processed\" = FALSE OR \"Processed\" IS NULL\nORDER BY \"Created_At\" DESC\nLIMIT 1;",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "id": "YOUR_POSTGRES_CREDENTIALS_ID",
          "name": "PostgreSQL Database Connection"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "7fbc5898-0f88-46e8-96ce-e4e215122974",
      "name": "⏰ Zeitplan-Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -896,
        80
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "057ddc57-2019-4cad-acdd-a3a69976512d",
      "name": "📝 Blogdaten formatieren",
      "type": "n8n-nodes-base.code",
      "position": [
        128,
        80
      ],
      "parameters": {
        "jsCode": "// Parse the AI response safely\nconst input = $input.first().json;\n\n// Handle payload structure: sometimes response, sometimes output\nconst aiResponse = input.response || input.output || JSON.stringify(input);\n\n// Try to parse JSON from AI response\nlet blogData;\ntry {\n  const jsonMatch =\n    aiResponse.match(/```json\\s*([\\s\\S]*?)\\s*```/) ||\n    aiResponse.match(/{[\\s\\S]*}/);\n\n  if (jsonMatch) {\n    blogData = JSON.parse(jsonMatch[1] || jsonMatch[0]);\n  } else {\n    throw new Error(\"No JSON structure found\");\n  }\n} catch (error) {\n  const safeText = aiResponse || \"AI did not return text.\";\n  blogData = {\n    title: safeText.split(\"\\n\")[0] || \"Generated Blog Post\",\n    content: safeText,\n    excerpt: safeText.substring(0, 200) + \"...\",\n    meta_description: safeText.substring(0, 160),\n  };\n}\n\n// Ensure fallback values\nconst safeTitle = blogData.title || \"AI Generated Marketing Content\";\nconst safeContent = blogData.content || \"No content generated.\";\nconst safeExcerpt =\n  blogData.excerpt || safeContent.substring(0, 200) + \"...\";\nconst safeMeta =\n  blogData.meta_description || safeContent.substring(0, 160);\n\n// Get the original database record\nlet dbRecord = {};\ntry {\n  dbRecord = $('🗄️ PostgreSQL Trigger').item.json || {};\n} catch (e) {\n  dbRecord = { id: \"unknown\", source: \"no-db-record\" };\n}\n\n// Return structured data for WordPress\nreturn {\n  json: {\n    title: safeTitle,\n    content: safeContent,\n    excerpt: safeExcerpt,\n    status: \"publish\",\n    categories: [\"Marketing\"],\n    tags: [\"AI\", \"PostgreSQL\", \"WordPress\", \"Marketing\", \"Automation\"],\n    meta_description: safeMeta,\n    original_record_id: dbRecord.id || \"no-id\",\n    source_data: dbRecord,\n  },\n};"
      },
      "typeVersion": 2
    },
    {
      "id": "a2eeca41-110d-4c61-856d-409e8ce0661f",
      "name": "✍️ WordPress Publisher",
      "type": "n8n-nodes-base.wordpress",
      "position": [
        352,
        80
      ],
      "parameters": {
        "tags": {
          "tags": [
            "AI",
            "PostgreSQL",
            "WordPress",
            "Marketing",
            "Automation"
          ]
        },
        "title": "={{ $json.title }}",
        "status": "publish",
        "content": "={{ $json.content }}",
        "excerpt": "={{ $json.excerpt }}",
        "categories": {
          "categories": [
            "Marketing"
          ]
        },
        "additionalFields": {
          "meta": {
            "metaProperties": [
              {
                "key": "meta_description",
                "value": "={{ $json.meta_description }}"
              }
            ]
          }
        }
      },
      "credentials": {
        "wordpressApi": {
          "id": "YOUR_WORDPRESS_CREDENTIALS_ID",
          "name": "WordPress API Connection"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "946b27ee-37ea-4b82-867b-624f281727d3",
      "name": "💾 Datenbank aktualisieren",
      "type": "n8n-nodes-base.postgres",
      "position": [
        576,
        80
      ],
      "parameters": {
        "query": "UPDATE \"your_table_name\"\nSET \n    \"Processed\" = TRUE,\n    \"Wordpress_Post_Id\" = $1,\n    \"Wordpress_Post_Url\" = $2,\n    \"Blog_Title\" = $3,\n    \"Processed_At\" = NOW()\nWHERE \"id\" = $4;",
        "options": {},
        "operation": "executeQuery",
        "additionalFields": {
          "queryParameters": {
            "parameters": [
              {
                "value": "={{ $json.id }}"
              },
              {
                "value": "={{ $json.link }}"
              },
              {
                "value": "={{ $json.title.rendered }}"
              },
              {
                "value": "={{ $('📝 Format Blog Data').item.json.original_record_id }}"
              }
            ]
          }
        }
      },
      "credentials": {
        "postgres": {
          "id": "YOUR_POSTGRES_CREDENTIALS_ID",
          "name": "PostgreSQL Database Connection"
        }
      },
      "typeVersion": 2.4
    },
    {
      "id": "3254f143-fe85-49c8-a454-bb9729fd77dc",
      "name": "OpenAI Chat Model",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -176,
        288
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "YOUR_OPENAI_CREDENTIALS_ID",
          "name": "OpenAI API Connection"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "dde2cc13-b8a2-4771-beb6-09e7fc31a352",
      "name": "🔍 Datensatzprüfung",
      "type": "n8n-nodes-base.if",
      "position": [
        -448,
        80
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 1,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "condition_1",
              "operator": {
                "type": "number",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.id }}",
              "rightValue": 0
            },
            {
              "id": "c9785b0c-f86c-4293-a5b3-8825e74ad0c4",
              "operator": {
                "type": "string",
                "operation": "exists",
                "singleValue": true
              },
              "leftValue": "={{ $json.Blog_Title }}",
              "rightValue": ""
            }
          ]
        }
      },
      "typeVersion": 2
    },
    {
      "id": "cdacc933-4448-40b8-a9c5-242bf766d62a",
      "name": "🤖 Blogbeitrag generieren",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -224,
        80
      ],
      "parameters": {
        "text": "=You are an expert marketing content writer. Create engaging, SEO-optimized blog posts that convert readers into customers.\n\nUser Message:\nCreate a comprehensive marketing blog post based on this title: \n{{ $json.Blog_Title }}\n\nThe blog post should include:\n1. A catchy, SEO-friendly title\n2. An engaging introduction that hooks the reader\n3. Well-structured body content with subheadings\n4. A compelling conclusion with a call-to-action\n5. Optimize for marketing and conversion\n\nFormat the response as JSON with these fields:\n- title: The blog post title\n- content: The full HTML content of the blog post\n- excerpt: A brief excerpt (150-200 characters)\n- meta_description: SEO meta description (150-160 characters)",
        "options": {},
        "promptType": "define"
      },
      "typeVersion": 2.2
    },
    {
      "id": "d2941310-5f0a-43fa-a232-f68f0b990f78",
      "name": "Notizzettel",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -944,
        -320
      ],
      "parameters": {
        "width": 432,
        "height": 720,
        "content": "## 1. Trigger & Data Fetch\n\n**Schedule Trigger (⏰ Schedule Trigger)**: Initiates the workflow at regular intervals.\n\n**PostgreSQL Query (🗄️ PostgreSQL Trigger)**: Fetches the latest unprocessed record from your database table.\n\n**Record Existence Check (🔍 Check Record Exists)**: Ensures only valid, non-empty records are processed."
      },
      "typeVersion": 1
    },
    {
      "id": "539c0737-da51-4e7f-8127-fefd690f75d5",
      "name": "Notizzettel1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -496,
        -320
      ],
      "parameters": {
        "color": 4,
        "width": 560,
        "height": 720,
        "content": "## 2. AI Content Generation\n\n**OpenAI Chat Model (OpenAI Chat Model)**: Receives record input and generates blog content based on the title.\n\n**Blog Post Agent (🤖 Generates Blog Post)**: Structures AI output into a JSON format with:\n- Title\n- Content (HTML)\n- Excerpt (150–200 characters)\n- Meta description (SEO, 150–160 characters)"
      },
      "typeVersion": 1
    },
    {
      "id": "252aa9dd-5b44-4ba2-8621-19895689f740",
      "name": "Notizzettel2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        80,
        -320
      ],
      "parameters": {
        "color": 3,
        "width": 208,
        "height": 720,
        "content": "## 3. Data Formatting & Safety\n\n**Code Node (📝 Format Blog Data)**:\nPrepares a structured payload for WordPress, including:\n- Categories and tags\n- Original database record reference\n- Error handling for malformed AI responses"
      },
      "typeVersion": 1
    },
    {
      "id": "af0ac8f3-d7e9-4546-8b27-02c1d9629d23",
      "name": "Notizzettel3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        304,
        -320
      ],
      "parameters": {
        "color": 5,
        "width": 432,
        "height": 720,
        "content": "## 4. Publishing & Database Update\n\n**WordPress Publisher (✍️ WordPress Publisher)**: Publishes the formatted blog content to WordPress with proper categories, tags, and meta data.\n\n**Database Update (💾 Update Database)**: After successful publishing, updates the original record to:\n- Mark it as processed\n- Store WordPress post ID and URL\n- Record processing timestamp\n\n**Purpose**: Ensures content is live and database stays synchronized."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "00000000-0000-0000-0000-000000000000",
  "connections": {
    "3254f143-fe85-49c8-a454-bb9729fd77dc": {
      "ai_languageModel": [
        [
          {
            "node": "cdacc933-4448-40b8-a9c5-242bf766d62a",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "7fbc5898-0f88-46e8-96ce-e4e215122974": {
      "main": [
        [
          {
            "node": "291e2ca0-6eb2-4e69-a147-2369e7f27257",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "946b27ee-37ea-4b82-867b-624f281727d3": {
      "main": [
        []
      ]
    },
    "057ddc57-2019-4cad-acdd-a3a69976512d": {
      "main": [
        [
          {
            "node": "a2eeca41-110d-4c61-856d-409e8ce0661f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "dde2cc13-b8a2-4771-beb6-09e7fc31a352": {
      "main": [
        [
          {
            "node": "cdacc933-4448-40b8-a9c5-242bf766d62a",
            "type": "main",
            "index": 0
          }
        ],
        []
      ]
    },
    "cdacc933-4448-40b8-a9c5-242bf766d62a": {
      "main": [
        [
          {
            "node": "057ddc57-2019-4cad-acdd-a3a69976512d",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "a2eeca41-110d-4c61-856d-409e8ce0661f": {
      "main": [
        [
          {
            "node": "946b27ee-37ea-4b82-867b-624f281727d3",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "291e2ca0-6eb2-4e69-a147-2369e7f27257": {
      "main": [
        [
          {
            "node": "dde2cc13-b8a2-4771-beb6-09e7fc31a352",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
Häufig gestellte Fragen

Wie verwende ich diesen Workflow?

Kopieren Sie den obigen JSON-Code, erstellen Sie einen neuen Workflow in Ihrer n8n-Instanz und wählen Sie "Aus JSON importieren". Fügen Sie die Konfiguration ein und passen Sie die Anmeldedaten nach Bedarf an.

Für welche Szenarien ist dieser Workflow geeignet?

Fortgeschritten - Content-Erstellung, Multimodales KI

Ist es kostenpflichtig?

Dieser Workflow ist völlig kostenlos. Beachten Sie jedoch, dass Drittanbieterdienste (wie OpenAI API), die im Workflow verwendet werden, möglicherweise kostenpflichtig sind.

Workflow-Informationen
Schwierigkeitsgrad
Fortgeschritten
Anzahl der Nodes12
Kategorie2
Node-Typen8
Schwierigkeitsbeschreibung

Für erfahrene Benutzer, mittelkomplexe Workflows mit 6-15 Nodes

Autor
Avkash Kakdiya

Avkash Kakdiya

@itechnotion

🚀 Founder of iTechNotion — we build custom AI-powered automation workflows for startups, agencies, and founders. 💡 Specializing in agentic AI systems, content automation, sales funnels, and digital workers. 🔧 14+ years in tech | Building scalable no-code/low-code solutions using n8n, OpenAI, and other API-first tools. 📬 Let’s automate what slows you down.

Externe Links
Auf n8n.io ansehen

Diesen Workflow teilen

Kategorien

Kategorien: 34