This workflow follows the Airtable → HTTP Request 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": "92ffb384-849f-411b-981f-e324190eaae4",
"name": "Post on Wordpress",
"type": "n8n-nodes-base.wordpress",
"position": [
1340,
700
],
"parameters": {
"title": "={{ $json.Title }}",
"additionalFields": {
"status": "draft",
"content": "={{ $json['Blog Body'] }}"
}
},
"typeVersion": 1
},
{
"id": "b3148c02-8088-4b81-afa8-1d57bef570e5",
"name": "Upload Media",
"type": "n8n-nodes-base.httpRequest",
"position": [
1840,
700
],
"parameters": {
"url": "=https://effibotics.com/wp-json/wp/v2/media",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "content-disposition",
"value": "=attachment; filename={{ $binary.data.fileName }}.{{ $binary.data.fileExtension }}"
},
{
"name": "content-type",
"value": "={{ $binary.data.mimeType }}"
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "wordpressApi"
},
"typeVersion": 4.1
},
{
"id": "d81ab003-fb36-4570-ab58-65b9a5db38be",
"name": "Set Featured Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
2000,
700
],
"parameters": {
"url": "={{ $('Settings').item.json.wordpress_url }}wp-json/wp/v2/posts/{{ $('Post on Wordpress').item.json.id }}",
"method": "POST",
"options": {},
"sendBody": true,
"authentication": "predefinedCredentialType",
"bodyParameters": {
"parameters": [
{
"name": "featured_media",
"value": "={{ $json.id }}"
}
]
},
"nodeCredentialType": "wordpressApi"
},
"typeVersion": 4.1
},
{
"id": "176ed2b0-2e27-4c04-a3fb-94842a82d3ab",
"name": "Edit Fields",
"type": "n8n-nodes-base.set",
"position": [
1040,
700
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "66db867d-e056-4713-8877-14c60775738a",
"name": "id",
"type": "string",
"value": "={{ $json.id }}"
},
{
"id": "c2e3724a-1406-48a7-b15c-1cda06dd44e9",
"name": "Title",
"type": "string",
"value": "={{ $json.Title }}"
},
{
"id": "d47d0436-ae61-4c68-a57f-273e77354050",
"name": "Keyword",
"type": "string",
"value": "={{ $json.Keyword }}"
},
{
"id": "34d8bc1f-77f6-496e-a36f-faa06d5cd6dd",
"name": "Blog Body",
"type": "string",
"value": "={{ $json[\"Blog Post\"].replace($json[\"Title\"],'') }}"
}
]
}
},
"typeVersion": 3.3
},
{
"id": "ff8d11c0-a604-4959-8dbd-56a5265a0559",
"name": "Get content to post",
"type": "n8n-nodes-base.airtable",
"position": [
680,
700
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appEanjsKFnMPZZz3",
"cachedResultUrl": "https://airtable.com/appEanjsKFnMPZZz3",
"cachedResultName": "SEO Doctor"
},
"limit": 3,
"table": {
"__rl": true,
"mode": "list",
"value": "tblkWGFcUJ2WVyL9f",
"cachedResultUrl": "https://airtable.com/appEanjsKFnMPZZz3/tblkWGFcUJ2WVyL9f",
"cachedResultName": "AI Generated Blog Posts"
},
"options": {},
"operation": "search",
"returnAll": false,
"filterByFormula": "SEARCH(\"To Post\", {Status})"
},
"typeVersion": 2
},
{
"id": "43f99839-2690-4324-8d26-201fc55f7b02",
"name": "Filter by existing Blogs",
"type": "n8n-nodes-base.filter",
"position": [
860,
700
],
"parameters": {
"options": {},
"conditions": {
"options": {
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d31b3381-dc99-41ae-b309-40e270ebf714",
"operator": {
"type": "string",
"operation": "exists",
"singleValue": true
},
"leftValue": "={{ $json['Blog Post'] }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2
},
{
"id": "924eeb0a-ee5d-40f1-915c-19e34018c619",
"name": "Markdown to HTML",
"type": "n8n-nodes-base.markdown",
"position": [
1180,
700
],
"parameters": {
"mode": "markdownToHtml",
"options": {},
"markdown": "={{ $json['Blog Body'] }} {{ $json['Blog Body'] }} {{ $json['Blog Body'] }}",
"destinationKey": "Blog Body"
},
"typeVersion": 1
},
{
"id": "3aed566c-04bc-4164-85d7-1f13a7862f5a",
"name": "Get Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
1500,
700
],
"parameters": {
"url": "=https://api.pexels.com/v1/search?query= {{ $('Edit Fields').item.json.Keyword }}&per_page=1&width=1200&height=675&format=webp",
"options": {},
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "lFlHMbYfTkSZ2HupBHDggMucIq38GQ5QICPstDPVdaHVxn9afY983qnS"
},
{
"name": "content",
"value": "= {{ $('Edit Fields').item.json.Keyword }}"
}
]
}
},
"typeVersion": 4.1
},
{
"id": "2729c11b-0c94-4e05-9d98-80d70eac1c2d",
"name": "Download the image",
"type": "n8n-nodes-base.httpRequest",
"position": [
1660,
700
],
"parameters": {
"url": "={{ $json.photos[0].src.landscape }}",
"options": {},
"responseFormat": "file"
},
"typeVersion": 2
},
{
"id": "9b31f00c-dad3-403c-953e-21df2cd3af65",
"name": "Sticky Note",
"type": "n8n-nodes-base.stickyNote",
"position": [
760,
340
],
"parameters": {
"color": 7,
"width": 662.5970350404314,
"height": 321.75,
"content": "## Automating Posting content to WordPress and setting up the featured Image\nThis workflow aims to simplify the process by which we share content on Wordpress sites with n8n from airtable\n\n### Usage\n1. Get the content from AirTable. SInce we have this as a markdown, we will have to convert it to a html format to make it easier to publish and manage on WordPress\n2. Upload the blog post with the content, title and all other relevant information needed for an optimized blog\n3. Once the post is posted, we need to upload the image and set it as a features image for the blogs"
},
"typeVersion": 1
},
{
"id": "ca838f99-39f7-4641-9293-502a7e0be912",
"name": "Schedule Trigger",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
520,
700
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "7eb92d69-3815-45d3-9da9-63a28b15f661",
"name": "Update POST on Airtable",
"type": "n8n-nodes-base.airtable",
"position": [
2180,
700
],
"parameters": {
"base": {
"__rl": true,
"mode": "list",
"value": "appEanjsKFnMPZZz3",
"cachedResultUrl": "https://airtable.com/appEanjsKFnMPZZz3",
"cachedResultName": "SEO Doctor"
},
"table": {
"__rl": true,
"mode": "list",
"value": "tblkWGFcUJ2WVyL9f",
"cachedResultUrl": "https://airtable.com/appEanjsKFnMPZZz3/tblkWGFcUJ2WVyL9f",
"cachedResultName": "AI Generated Blog Posts"
},
"columns": {
"value": {
"id": "={{ $('Edit Fields').item.json.id }}",
"Status": "Posted"
},
"schema": [
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "id",
"defaultMatch": true
},
{
"id": "Title",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Blog Post",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Blog Post",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Star",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Star",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Intent",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Intent",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status",
"type": "options",
"display": true,
"options": [
{
"name": "Draft",
"value": "Draft"
},
{
"name": "First Copy",
"value": "First Copy"
},
{
"name": "Second Copy",
"value": "Second Copy"
},
{
"name": "To Post",
"value": "To Post"
},
{
"name": "Posted",
"value": "Posted"
},
{
"name": "Review",
"value": "Review"
},
{
"name": "Tracking",
"value": "Tracking"
}
],
"removed": false,
"readOnly": false,
"required": false,
"displayName": "Status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Keyword",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Keyword",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "count",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "count",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Word count",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Word count",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Last Modified",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "Last Modified",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Image",
"type": "array",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Image",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Images",
"type": "string",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Images",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "All keyword Data and Tracking",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "All keyword Data and Tracking",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Search Volume",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Search Volume",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Frequency",
"type": "number",
"display": true,
"removed": true,
"readOnly": false,
"required": false,
"displayName": "Frequency",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
]
},
"options": {},
"operation": "update"
},
"typeVersion": 2
},
{
"id": "536659ab-ca94-420f-8110-e277676b939a",
"name": "Sticky Note1",
"type": "n8n-nodes-base.stickyNote",
"position": [
500,
340
],
"parameters": {
"height": 323,
"content": "## SETUP\n1. Create a wordpress application and set up the password\n\n2. Have an airtable with the columns \nKeyword | Title | Blog content\n\n3. The blog content in this canse is a markdown format generated by AI"
},
"typeVersion": 1
}
],
"connections": {
"Get Image": {
"main": [
[
{
"node": "Download the image",
"type": "main",
"index": 0
}
]
]
},
"Edit Fields": {
"main": [
[
{
"node": "Markdown to HTML",
"type": "main",
"index": 0
}
]
]
},
"Upload Media": {
"main": [
[
{
"node": "Set Featured Image",
"type": "main",
"index": 0
}
]
]
},
"Markdown to HTML": {
"main": [
[
{
"node": "Post on Wordpress",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get content to post",
"type": "main",
"index": 0
}
]
]
},
"Post on Wordpress": {
"main": [
[
{
"node": "Get Image",
"type": "main",
"index": 0
}
]
]
},
"Download the image": {
"main": [
[
{
"node": "Upload Media",
"type": "main",
"index": 0
}
]
]
},
"Set Featured Image": {
"main": [
[
{
"node": "Update POST on Airtable",
"type": "main",
"index": 0
}
]
]
},
"Get content to post": {
"main": [
[
{
"node": "Filter by existing Blogs",
"type": "main",
"index": 0
}
]
]
},
"Filter by existing Blogs": {
"main": [
[
{
"node": "Edit Fields",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
How this works
This workflow automates the curation and publishing of blog content from Airtable to WordPress, saving hours of manual data entry and ensuring consistent formatting for your online presence. It's ideal for content managers, bloggers, or marketing teams who maintain a library of drafts in Airtable and want to schedule regular updates to their WordPress site without repetitive tasks. The key step involves filtering existing posts to avoid duplicates, then converting Markdown content to HTML before posting, complete with featured images fetched via HTTP requests.
Use this workflow when you have a scheduled content calendar and need to batch-publish filtered entries from Airtable to WordPress, such as weekly blog roundups. Avoid it for one-off posts or sites requiring heavy customisation beyond basic fields and media uploads, as it assumes structured data. Common variations include adding email notifications after publishing or integrating with social media APIs to share new posts automatically.
About this workflow
Wordpress Filter. Uses wordpress, httpRequest, airtable, markdown. Scheduled trigger; 13 nodes.
Source: https://github.com/Zie619/n8n-workflows — 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.
2281. Uses wordpress, httpRequest, airtable. Scheduled trigger; 13 nodes.
Workflow 2281. Uses wordpress, httpRequest, airtable. Scheduled trigger; 13 nodes.
Youtube Instalation Instructions
🤖 Gemini × 自動ブログ生成フロー. Uses rssFeedRead, httpRequest, wordpress. Scheduled trigger; 6 nodes.
This workflow automates the end-to-end process of creating, optimizing, and publishing content on WordPress.