{ "id": "yPIST7l13huQEjY5", "meta": { "instanceId": "workflow-83e69afb", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:43.937110", "updatedAt": "2025-09-29T07:07:43.937116", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production" }, "name": "Use XMLRPC via HttpRequest-node to post on Wordpress.com", "tags": [ "automation", "n8n", "production-ready", "excellent", "optimized" ], "nodes": [ { "id": "8a64ffca-804a-4793-a721-3cb670aec22f", "name": "Settings", "type": "n8n-nodes-base.set", "position": [ -380, -700 ], "parameters": { "options": {}, "assignments": { "assignments": [ { "id": "1be018c7-51fe-4ea2-967d-ce47a2e8795c", "name": "wordpressUrl", "type": "string", "value": "YOURBLOG.wordpress.com" }, { "id": "95377f4f-184b-46a7-94c7-b2313c314cb2", "name": "wordpressUsername", "type": "string", "value": "YourUserName" }, { "id": "fdc99dc6-d9b0-4d2f-b770-1d8b6b360cad", "name": "wordpressApplicationPassword", "type": "string", "value": "your 4app pass word" }, { "id": "5aee5eef-9ad2-4dfb-a63f-1b5228c47e31", "name": "contentTitle", "type": "string", "value": "This is a demo title" }, { "id": "2abf516c-2910-4cd0-89fe-119cd0e616c8", "name": "contentText", "type": "string", "value": "This is the main text." } ] } }, "typeVersion": 3.4, "notes": "This set node performs automated tasks as part of the workflow." }, { "id": "157b9656-5d90-44f4-aa3c-1285cda698d8", "name": "ManualTrigger", "type": "n8n-nodes-base.manualTrigger", "position": [ -580, -700 ], "parameters": {}, "typeVersion": 1, "notes": "This manualTrigger node performs automated tasks as part of the workflow." }, { "id": "1d2f6916-e5bd-497b-9843-8bb5a48e9866", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [ -420, -820 ], "parameters": { "width": 180, "height": 360, "content": "## Settings" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "1306446a-f628-44ba-9ca5-751b634bd5dd", "name": "Sticky Note2", "type": "n8n-nodes-base.stickyNote", "position": [ 140, -820 ], "parameters": { "color": 5, "width": 720, "height": 360, "content": "## Response Handling" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "ec3006aa-34c8-4522-8c37-980f68f168b5", "name": "Sticky Note5", "type": "n8n-nodes-base.stickyNote", "position": [ -220, -820 ], "parameters": { "color": 3, "width": 340, "height": 360, "content": "## Request Sending" }, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow." }, { "id": "bc918075-bea5-4a27-90d9-874b0917a958", "name": "Success", "type": "n8n-nodes-base.noOp", "position": [ 660, -780 ], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow." }, { "id": "3ea541b7-080e-4694-b865-d7d04f69ea0c", "name": "Error", "type": "n8n-nodes-base.noOp", "position": [ 660, -620 ], "parameters": {}, "typeVersion": 1, "notes": "This noOp node performs automated tasks as part of the workflow." }, { "id": "457c0687-ac1d-49e2-b434-6e1de9acb3a3", "name": "PrepareXML", "type": "n8n-nodes-base.code", "notes": "(request payload, escaping)", "position": [ -180, -700 ], "parameters": { "mode": "runOnceForEachItem", "jsCode": "const input = $json; // If other nodes are in between: $('Settings').item.json;\n\nconst username = input.wordpressUsername;\nconst password = input.wordpressApplicationPassword;\nconst title = input.contentTitle;\nconst text = input.contentText;\n\nconst blogId = 0;\nconst published = 1; // 0 = draft, 1 = published\n\n\n// Helper function to escape XML special characters\nfunction escapeXml(unsafe) {\n return unsafe.replace(/[<>&'\"]/g, (c) => {\n switch (c) {\n case '<': return '<';\n case '>': return '>';\n case '&': return '&';\n case '\\'': return ''';\n case '\"': return '"';\n default: return c;\n }\n });\n}\n\n// Your actual post text, which may contain characters needing escaping\nconst titleEscaped = escapeXml(title);\nconst textEscaped = escapeXml(text);\n\n// Build the XML payload\nconst xmlData = `\n\n wp.newPost\n \n \n ${blogId}\n \n \n ${username}\n \n \n ${password}\n \n \n \n \n \n post_title\n ${titleEscaped}\n \n \n post_content\n ${textEscaped}\n \n \n \n \n \n ${published}\n \n \n`;\n\n\n// Add a new field called 'myNewField' to the JSON of the item\n$input.item.json.xmlRequestBody = xmlData;\n\nreturn $input.item;" }, "notesInFlow": true, "typeVersion": 2 }, { "id": "3f29f3ed-f7ae-475b-bce3-04d3eeeacee9", "name": "PostRequest", "type": "n8n-nodes-base.httpRequest", "position": [ -20, -700 ], "parameters": { "url": "{{ $env.BASE_URL }}", "body": "={{ $json.xmlRequestBody }}", "method": "POST", "options": {}, "sendBody": true, "contentType": "raw", "sendHeaders": true, "rawContentType": "text/xml", "headerParameters": { "parameters": [ { "name": "Content-Type", "value": "text/xml" } ] } }, "typeVersion": 4.2, "notes": "This httpRequest node performs automated tasks as part of the workflow." }, { "id": "5f320d9b-8aa9-4d13-83db-86acaf444e92", "name": "IsSuccessful", "type": "n8n-nodes-base.if", "position": [ 420, -700 ], "parameters": { "options": {}, "conditions": { "options": { "version": 2, "leftValue": "", "caseSensitive": true, "typeValidation": "loose" }, "combinator": "and", "conditions": [ { "id": "815d85a1-8f91-4338-977f-503f02c53ea2", "operator": { "type": "string", "operation": "exists", "singleValue": true }, "leftValue": "={{ $json.methodResponse.params.param.value }}", "rightValue": "" } ] }, "looseTypeValidation": true }, "typeVersion": 2.2, "notes": "This if node performs automated tasks as part of the workflow." }, { "id": "3a37d19a-12d3-474b-840f-c09342eecca9", "name": "HandleResponse", "type": "n8n-nodes-base.xml", "position": [ 220, -700 ], "parameters": { "options": {} }, "typeVersion": 1, "notes": "This xml node performs automated tasks as part of the workflow." } ], "active": false, "pinData": {}, "settings": { "executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000 }, "versionId": "78f90dc5-6209-4db0-b6c6-9f2324488605", "connections": { "3f29f3ed-f7ae-475b-bce3-04d3eeeacee9": { "main": [ [ { "node": "error-handler-3f29f3ed-f7ae-475b-bce3-04d3eeeacee9", "type": "main", "index": 0 } ], [ { "node": "error-handler-3f29f3ed-f7ae-475b-bce3-04d3eeeacee9-a561b73f", "type": "main", "index": 0 } ], [ { "node": "error-handler-3f29f3ed-f7ae-475b-bce3-04d3eeeacee9-edb969bb", "type": "main", "index": 0 } ], [ { "node": "error-handler-3f29f3ed-f7ae-475b-bce3-04d3eeeacee9-c2eeb9ed", "type": "main", "index": 0 } ], [ { "node": "error-handler-3f29f3ed-f7ae-475b-bce3-04d3eeeacee9-f33f7eea", "type": "main", "index": 0 } ] ] } }, "description": "Automated workflow: Use XMLRPC via HttpRequest-node to post on Wordpress.com. This workflow integrates 9 different services: stickyNote, httpRequest, code, set, stopAndError. It contains 13 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Use XMLRPC via HttpRequest-node to post on Wordpress.com. This workflow has been optimized for production use with comprehensive error handling, security, and documentation." }