Workflow de contenu WordPress piloté par l'IA
Ceci est unContent Creation, Multimodal AIworkflow d'automatisation du domainecontenant 12 nœuds.Utilise principalement des nœuds comme If, Code, Postgres, Wordpress, Agent. Utiliser OpenAI GPT pour automatiser la publication de blog de PostgreSQL à WordPress
- •Informations de connexion à la base de données PostgreSQL
- •Clé API OpenAI
Nœuds utilisés (12)
Catégorie
{
"id": "ai-wordpress-blog-automation",
"meta": {
"templateCredsSetupCompleted": false
},
"name": "AI-Powered WordPress Content Workflow",
"tags": [],
"nodes": [
{
"id": "291e2ca0-6eb2-4e69-a147-2369e7f27257",
"name": "🗄️ PostgreSQL Déclencheur",
"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": "⏰ Déclencheur Programmé",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-896,
80
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.1
},
{
"id": "057ddc57-2019-4cad-acdd-a3a69976512d",
"name": "📝 Formater les Données du Blog",
"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 Éditeur",
"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": "💾 Mettre à Jour la Base de Données",
"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 Modèle de Chat",
"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": "🔍 Vérifier l'Existence de l'Enregistrement",
"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": "🤖 Générer l'Article de Blog",
"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": "Note Adhésive",
"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": "Note Adhésive1",
"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": "Note Adhésive2",
"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": "Note Adhésive3",
"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
}
]
]
}
}
}Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Intermédiaire - Création de contenu, IA Multimodale
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
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.
Partager ce workflow