This workflow corresponds to n8n.io template #13005 — 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": "5b1148da-46a5-430a-908b-8e95dc7dfab1",
"name": "RSS Feed Trigger - Note.com",
"type": "n8n-nodes-base.rssFeedReadTrigger",
"position": [
-352,
368
],
"parameters": {
"feedUrl": "={{ $parameter.noteRssFeedUrl }}",
"pollTimes": {
"item": [
{
"mode": "everyHour"
}
]
}
},
"typeVersion": 1
},
{
"id": "f0d7156f-f03e-42e6-a61e-76a27dd203bc",
"name": "Extract Note ID",
"type": "n8n-nodes-base.set",
"position": [
-128,
368
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "b69236d8-1673-403b-8ea7-a706d72037ba",
"name": "note_id",
"type": "string",
"value": "={{ $json.link.split('/').pop() }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "6247674e-c752-4964-92e0-ef5ea4bdfefc",
"name": "Get Article from Note.com API",
"type": "n8n-nodes-base.httpRequest",
"position": [
96,
368
],
"parameters": {
"url": "=https://note.com/api/v3/notes/{{ $json.note_id }}",
"options": {}
},
"typeVersion": 4.3
},
{
"id": "3a6d7c51-c683-40bc-9ca4-255ca546fdc1",
"name": "AI Categorization (OpenAI)",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
256,
368
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"responses": {
"values": [
{
"role": "system",
"content": "You are a professional blog editor. Analyze the provided note article data and determine the optimal category ID and tag IDs for WordPress posting.\n\n## Task\n1. Read the article content and select the most appropriate category from the \"Category ID List\" below (select exactly 1).\n2. From the \"Tag ID List\" below, select all relevant tags.\n\n## Category ID List (select exactly 1)\n- 23 : School & Training Guide\n- 5 : Career & Work Style\n- 4 : Technical Skills & Marketing\n- 3 : Real Experience Stories\n\n## Tag ID List (select all that apply)\n- 46 : Beginner\n- 35 : School\n- 43 : First Year\n- 47 : 2-5 Years\n- 48 : 6+ Years\n- 40 : Legal\n- 49 : Contract\n- 39 : Rules\n- 50 : Tax\n- 44 : Money\n- 51 : Side Business\n- 42 : Partnership/Independence\n- 41 : Clinic\n- 53 : Work Style\n- 54 : Marketing\n- 55 : SNS\n- 56 : Branding\n- 57 : Booking\n- 58 : Advertising\n- 59 : Supplies\n- 37 : Preparation\n- 60 : Customer Service\n- 61 : Hospitality\n- 38 : Troubleshooting\n- 62 : Mindset\n- 36 : Experience\n- 63 : Family Relations\n- 64 : Relationships\n\n## Constraints\n- Output ONLY in the JSON format below.\n- Do not include any explanations or greetings.\n- IDs must be numbers.\n\n## Output Format\n{\n \"category_id\": number,\n \"tag_ids\": [number, number]\n}"
},
{
"content": "=Title: {{ $json.data.name }} Body (first 2000 chars): {{ $json.data.body.substring(0, 2000) }}"
}
]
},
"builtInTools": {}
},
"typeVersion": 2.1
},
{
"id": "afcfa166-ec32-4bb5-b14b-38136e9171d6",
"name": "Parse AI Response",
"type": "n8n-nodes-base.code",
"position": [
528,
368
],
"parameters": {
"jsCode": "// 1. Get OpenAI response string\nlet rawText = $json.output[0].content[0].text;\n\n// 2. Remove markdown formatting (```json ... ```) and whitespace\nconst cleanJson = rawText.replace(/```json|```/g, \"\").trim();\n\n// 3. Parse and return\ntry {\n const parsedData = JSON.parse(cleanJson);\n return parsedData;\n} catch (error) {\n return {\n error: \"JSON parsing failed\",\n raw: rawText,\n cleaned: cleanJson\n };\n}"
},
"typeVersion": 2
},
{
"id": "82ec0f58-35b0-4322-8bf7-9838ada971c8",
"name": "Download Featured Image",
"type": "n8n-nodes-base.httpRequest",
"position": [
752,
368
],
"parameters": {
"url": "={{ $('Get Article from Note.com API').item.json.data.eyecatch }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "26560c4d-8fcc-40c8-bf07-179236470b7c",
"name": "Upload Featured Image to WordPress",
"type": "n8n-nodes-base.httpRequest",
"position": [
976,
368
],
"parameters": {
"url": "={{ $parameter.wordpressSiteUrl }}/wp-json/wp/v2/media",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Disposition",
"value": "attachment; filename=\"eyecatch.png\""
},
{
"name": "Content-Type",
"value": "image/png"
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "wordpressApi"
},
"typeVersion": 4.3
},
{
"id": "5e74a9b7-ef16-4f96-87f0-487c72ba8a73",
"name": "Prepare Image Array",
"type": "n8n-nodes-base.set",
"position": [
1200,
368
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "39c2ff39-2a11-489b-bff4-1f72e20fc08b",
"name": "temp_pictures",
"type": "array",
"value": "={{ $node[\"Get Article from Note.com API\"].json.data.pictures }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d51124e4-8d69-4c64-be20-521680922ced",
"name": "Split Images",
"type": "n8n-nodes-base.splitOut",
"position": [
1408,
368
],
"parameters": {
"options": {},
"fieldToSplitOut": "temp_pictures"
},
"typeVersion": 1
},
{
"id": "fba9b363-88dc-4a60-b060-96924188d863",
"name": "Download Article Images",
"type": "n8n-nodes-base.httpRequest",
"position": [
1632,
368
],
"parameters": {
"url": "={{ $json.url }}",
"options": {
"response": {
"response": {
"responseFormat": "file"
}
}
}
},
"typeVersion": 4.3
},
{
"id": "8c0ca64f-ba98-4001-84a4-fa4cab2b07c8",
"name": "Upload Article Images to WordPress",
"type": "n8n-nodes-base.httpRequest",
"position": [
1856,
368
],
"parameters": {
"url": "={{ $parameter.wordpressSiteUrl }}/wp-json/wp/v2/media",
"method": "POST",
"options": {
"response": {
"response": {
"responseFormat": "json"
}
}
},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"authentication": "predefinedCredentialType",
"headerParameters": {
"parameters": [
{
"name": "Content-Disposition",
"value": "=attachment; filename=\"image_{{ $json.index }}.png\""
},
{
"name": "Content-Type",
"value": "image/png"
}
]
},
"inputDataFieldName": "data",
"nodeCredentialType": "wordpressApi"
},
"typeVersion": 4.3
},
{
"id": "ae800ca0-a2ba-404d-954a-d98d3df1cb18",
"name": "Create URL Mapping",
"type": "n8n-nodes-base.set",
"position": [
2080,
368
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "0fae4f63-af05-4e87-8e9c-034b1ff3e543",
"name": "old_url",
"type": "string",
"value": "={{ $node[\"Split Images\"].json.url }}"
},
{
"id": "a503eb23-816f-48a3-b7a4-712b8d544014",
"name": "new_url",
"type": "string",
"value": "={{ $json.source_url }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "a168a2d7-0c60-47b8-a8aa-19500579d550",
"name": "Aggregate URL Mappings",
"type": "n8n-nodes-base.aggregate",
"position": [
2288,
368
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "url_map"
},
"typeVersion": 1
},
{
"id": "cd7b90b6-d23e-4752-984f-a92c9509e974",
"name": "Replace Image URLs in Content",
"type": "n8n-nodes-base.code",
"position": [
2512,
368
],
"parameters": {
"jsCode": "// 1. Get original article HTML body from note.com\nlet bodyHtml = $node[\"Get Article from Note.com API\"].json.data.body;\n\n// 2. Get the array of old/new URL pairs from Aggregate node\nconst urlPairs = $json.url_map;\n\n// 3. Replace all note.com image URLs with WordPress URLs\nfor (const pair of urlPairs) {\n if (pair.old_url && pair.new_url) {\n // Replace assets.st-note.com URLs with nurse-katekyo.jp URLs\n // Using split/join to replace ALL occurrences\n bodyHtml = bodyHtml.split(pair.old_url).join(pair.new_url);\n }\n}\n\n// 4. Return the updated body HTML\nreturn {\n final_body: bodyHtml\n};"
},
"typeVersion": 2
},
{
"id": "9b9b5ce0-d197-4951-9786-33d3d0d41467",
"name": "Create WordPress Post",
"type": "n8n-nodes-base.wordpress",
"position": [
2736,
368
],
"parameters": {
"title": "={{ $node[\"Get Article from Note.com API\"].json.data.name }}",
"additionalFields": {
"tags": "={{ $('Parse AI Response').item.json.tag_ids }}",
"status": "publish",
"content": "={{ $json.final_body }}",
"categories": "={{ $('Parse AI Response').item.json.category_id }}",
"pingStatus": "open"
}
},
"typeVersion": 1
},
{
"id": "36516bd8-2fa3-45a3-8340-73c92525a2c1",
"name": "Set Featured Image on Post",
"type": "n8n-nodes-base.httpRequest",
"position": [
2960,
368
],
"parameters": {
"url": "={{ $parameter.wordpressSiteUrl }}/wp-json/wp/v2/posts/{{ $json.id }}",
"method": "POST",
"options": {},
"sendQuery": true,
"authentication": "predefinedCredentialType",
"queryParameters": {
"parameters": [
{
"name": "featured_media",
"value": "={{ $('Upload Featured Image to WordPress').item.json.id }}"
}
]
},
"nodeCredentialType": "wordpressApi"
},
"typeVersion": 4.3
},
{
"id": "e86e6085-9a5d-4446-9afb-ed3d915cfcd1",
"name": "Sticky Note - Introduction",
"type": "n8n-nodes-base.stickyNote",
"position": [
-880,
192
],
"parameters": {
"width": 400,
"height": 540,
"content": "## Note.com to WordPress Auto-Publisher\n\nThis workflow automatically syndicates articles from note.com to your WordPress site.\n\n### How it works:\n1. **RSS Trigger** - Monitors your note.com RSS feed hourly\n2. **Article Fetch** - Gets full article via note.com API\n3. **AI Categorization** - Uses OpenAI to assign categories & tags\n4. **Image Migration** - Downloads all images and re-uploads to WordPress\n5. **URL Replacement** - Updates image URLs in the article content\n6. **Post Creation** - Publishes to WordPress with featured image\n\n### Prerequisites:\n- OpenAI API credentials\n- WordPress API credentials (Application Password)\n- Your note.com RSS feed URL"
},
"typeVersion": 1
},
{
"id": "8cf4491a-08a9-4f5b-82f1-89fac91c631c",
"name": "Sticky Note - AI",
"type": "n8n-nodes-base.stickyNote",
"position": [
256,
112
],
"parameters": {
"color": 7,
"width": 376,
"height": 216,
"content": "### AI Categorization\n\nOpenAI analyzes the article title and first 2000 characters to determine:\n- Best matching category (single)\n- Relevant tags (multiple)\n\n**Customize the system prompt** to match your WordPress taxonomy!"
},
"typeVersion": 1
},
{
"id": "cc2123bd-17cd-467d-aae3-2e693846d016",
"name": "Sticky Note - Images",
"type": "n8n-nodes-base.stickyNote",
"position": [
1616,
96
],
"parameters": {
"color": 3,
"width": 328,
"height": 244,
"content": "### Image Processing\n\nAll images are:\n1. Downloaded from note.com\n2. Uploaded to WordPress media library\n3. URLs replaced in article content\n\nThis ensures images are hosted on YOUR server."
},
"typeVersion": 1
},
{
"id": "950ad1e0-c3d5-4b8a-8ad8-e64361ee109e",
"name": "Sticky Note - Config",
"type": "n8n-nodes-base.stickyNote",
"position": [
-368,
144
],
"parameters": {
"color": 7,
"width": 376,
"height": 180,
"content": "### Configuration Required\n\n1. **Replace RSS URL** with your note.com feed\n2. **Update WordPress URL** in HTTP nodes\n3. **Customize categories/tags** in AI prompt\n4. **Set credentials** for OpenAI and WordPress"
},
"typeVersion": 1
}
],
"connections": {
"Split Images": {
"main": [
[
{
"node": "Download Article Images",
"type": "main",
"index": 0
}
]
]
},
"Extract Note ID": {
"main": [
[
{
"node": "Get Article from Note.com API",
"type": "main",
"index": 0
}
]
]
},
"Parse AI Response": {
"main": [
[
{
"node": "Download Featured Image",
"type": "main",
"index": 0
}
]
]
},
"Create URL Mapping": {
"main": [
[
{
"node": "Aggregate URL Mappings",
"type": "main",
"index": 0
}
]
]
},
"Prepare Image Array": {
"main": [
[
{
"node": "Split Images",
"type": "main",
"index": 0
}
]
]
},
"Create WordPress Post": {
"main": [
[
{
"node": "Set Featured Image on Post",
"type": "main",
"index": 0
}
]
]
},
"Aggregate URL Mappings": {
"main": [
[
{
"node": "Replace Image URLs in Content",
"type": "main",
"index": 0
}
]
]
},
"Download Article Images": {
"main": [
[
{
"node": "Upload Article Images to WordPress",
"type": "main",
"index": 0
}
]
]
},
"Download Featured Image": {
"main": [
[
{
"node": "Upload Featured Image to WordPress",
"type": "main",
"index": 0
}
]
]
},
"AI Categorization (OpenAI)": {
"main": [
[
{
"node": "Parse AI Response",
"type": "main",
"index": 0
}
]
]
},
"RSS Feed Trigger - Note.com": {
"main": [
[
{
"node": "Extract Note ID",
"type": "main",
"index": 0
}
]
]
},
"Get Article from Note.com API": {
"main": [
[
{
"node": "AI Categorization (OpenAI)",
"type": "main",
"index": 0
}
]
]
},
"Replace Image URLs in Content": {
"main": [
[
{
"node": "Create WordPress Post",
"type": "main",
"index": 0
}
]
]
},
"Upload Article Images to WordPress": {
"main": [
[
{
"node": "Create URL Mapping",
"type": "main",
"index": 0
}
]
]
},
"Upload Featured Image to WordPress": {
"main": [
[
{
"node": "Prepare Image Array",
"type": "main",
"index": 0
}
]
]
}
}
}
For the full experience including quality scoring and batch install features for each workflow upgrade to Pro
About this workflow
Automatically publish your Note.com articles to WordPress with intelligent category and tag assignment powered by OpenAI.
Source: https://n8n.io/workflows/13005/ — 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.
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,
This workflow automatically pulls articles from an RSS feed, translates the content and title from English to Hindi using OpenAI, extracts the featured image from the HTML content, and publishes the t
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.