Auto-build SEO blog drafts with n8n: keyword → AI article + branded visuals → WordPress draft
Submit a target keyword via n8n form → OpenAI writes an SEO article with summary → Canvora generates featured & OG images → poll until ready → embed image and create WordPress draft
- Who
- Content operators, SEO specialists, teams that need batch blog draft generation
- You get
- After submitting one keyword, get a WordPress draft with on-brand featured image and OG card, ready for review and publish
Constraints
Requires: n8n Cloud or self-hosted instance; OpenAI API key (or Claude/Gemini alternative); free Canvora account with API key (vd_… format); WordPress site credentials with draft-create permission. Cost: about 20 Canvora credits per article for 2 visuals. Model can be switched in the OpenAI node to gpt-5-mini or another compatible model.
What they did
Author marketer-360 published this workflow in the n8n official template library. The template collects a target keyword via the built-in n8n form, calls OpenAI to generate an SEO article (strict JSON output), then uses the Canvora API to produce on-brand featured and OG images, polls until completion, embeds the image into the article HTML, and creates a WordPress draft. The template provides complete node wiring, code, and prompt configuration.
How it went
The source displays a real run example: after processing a keyword, the workflow generated a blog featured image and OG card (image URLs attached in the template description). The author reports support for 100+ output formats, brand-kit locking via brandId, and automatic credit refunds on Canvora failure. (author_report)
Worth knowing
1. This site has not imported or run the template; reproduction=not_tested. 2. The template defaults to gpt-5-mini, but the description mentions Claude/Gemini as alternatives; actual switching requires changing the node type or model parameter. 3. Canvora charges about 20 credits per article for 2 visuals; verify account balance. 4. WordPress credentials need draft-create permission; for self-hosted WordPress, ensure the REST API is enabled and not blocked by security plugins. 5. The form's Brand ID is optional and binds to a Canvora brand kit; without brandId, default styling applies. 6. Polling limit is 20 × 30s = ~10 minutes; slow Canvora generation may time out. 7. The form trigger can be swapped for Google Sheets or Airtable triggers to run a keyword queue on a schedule.
n8n workflow template
Structure checked · Not run-testedUse “Import from File” in n8n, or copy the JSON and paste it into the editor. Connect your own accounts, then try test data. The template is inactive by default.
Setup and test checklist
Credentials to connect
- After import, connect your own credentials on auth-required nodes; author secrets are not included.
Configuration to replace
- Source template is n8n public workflow #17737 (~18 nodes). Keep inactive after import; verify triggers, expressions and external API endpoints.
- Sticky-note guidance is informational; replace placeholders with your own accounts, sheet schemas or channel IDs.
Test input and expected output
- Manually run the main path once in a test workspace and confirm credentialed nodes authenticate without errors.
- Drive one synthetic/redacted sample through and check output fields and downstream writes before enabling in production.
Template changes
- Author credential bindings, webhookId and execution data are removed; the workflow is inactive. Nodes, connections and original prompts are preserved. Not run-tested in n8n.
- No business-logic edits; verify keys, quotas and privacy compliance before use.
Template retrieved: 2026-10-24
Steps
Configure form trigger and base credentials
Import template 17737 in n8n. Open the 'When Keyword Submitted' node (Form Trigger) and confirm the form title is 'Generate an SEO article' with fields 'Target keyword' (required) and 'Brand ID (optional)' (optional). Save and copy the form URL for later testing. Ensure your n8n instance can reach OpenAI, Canvora (api.canvora.ai), and your WordPress site.
Configure the OpenAI article generation node
Open the 'Write SEO Article' node and add your OpenAI API credential. Select model gpt-5-mini (or swap to Claude/Gemini, which requires changing the node type). Keep the following prompt in the Messages field to ensure strict JSON output:
Execution prompt · Source text。OpenAI node Messages → values[0].content field; n8n expression resolves to the actual keyword at runtime
=You are an SEO content writer. Write a complete, publish-ready blog article optimized for the keyword "{{ $('When Keyword Submitted').item.json['Target keyword'] }}". Return STRICT JSON only: {"title": "...", "body_html": "<p>...</p>", "summary": "one-sentence summary for the featured image"}. No preamble, no markdown fences.Parse JSON and call Canvora to generate visuals
The 'Parse Article JSON' node uses JS to extract JSON from the OpenAI response. No changes needed, but test with a sample first to ensure stable parsing. Then the 'Post Article to Canvora' node sends a POST to https://api.canvora.ai/api/generations. Configure HTTP Header Auth credential: header name X-API-Key, value your Canvora API key (vd_… format). The body includes inputType='text', inputContent (from summary or title), title, outputFormats=['blog_featured','og_image'], and optional brandId.
Poll generation status and handle timeout or failure
The 'Wait 30s' node pauses 30 seconds, then 'Fetch Generation Status' queries Canvora (GET /api/generations/{generation.id}) with the same X-API-Key. 'If Generation Done' checks for completed/failed/partial/cancelled; if not done and fewer than 20 polls, loop back to Wait. 'If Timed Out' triggers after 20 iterations and routes to 'Generation Failed'. On success (completed/partial), proceed; on failure, Canvora auto-refunds credits.
Assemble content and create WordPress draft
The 'Build WordPress Post' node runs JS to pick the blog_featured image URL from Canvora outputs, embeds it at the top of the article HTML (figure/img tag), and appends body_html. The 'Create WordPress Draft' node uses WordPress credentials to create a post with status=draft, title and content from the previous step. After execution, check WordPress admin for a draft with the featured image embedded.
Prompt you can copy
Setup guidance · Editorial suggestion。Give to a setup assistant; first confirm n8n instance access, credentials, and Canvora account status before importing the template
This block is the prompt. Ads are never placed here.
Please help me set up the n8n template 17737 for SEO blog drafts. Prerequisites: 1) Confirm you have access to an n8n instance; 2) Prepare an OpenAI API key, a Canvora API key (get a vd_… key from Integrations → API Keys), and WordPress site credentials; 3) After importing the template in n8n, check the Form Trigger fields (Target keyword required, Brand ID optional) and the OpenAI node model selection. Test once with a sample keyword to verify the JSON output is parsed correctly by the Parse Article JSON node, then observe whether the Canvora polling loop and WordPress draft creation complete successfully.
This prompt is for setup assistance, not a node runtime instruction. The actual node execution prompt is in step 2 prompts.
Source
Create SEO blog drafts with OpenAI, Canvora, and WordPress · marketer-360 · n8n.io · 2026-08-02
Comments & feedback
Tried this method? Share results, problems or improvements. Comments appear after moderation. Please avoid sensitive information.
Loading…
Agent feedback
Reports are submitted by Agents and shared after user confirmation and moderation. They are not platform-verified.