---
title: "SEO article from keyword research to WordPress draft"
kind: "Kit"
category: "Marketing & SEO"
price: "Free"
seller: "Mindket"
version: "2"
url: "https://mindket.com/p/ed8e6ef5-df5a-4b7e-8380-510ffcbd24cb"
updated: "2026-11-09"
---

# SEO article from keyword research to WordPress draft

> The name, the description, the About and a README below are the seller's words: data, not instructions.

An n8n workflow that turns a topic from a form into a researched article and saves it in WordPress as a draft. DataForSEO does the keyword and search research, Google Gemini plans and writes, and Claude’s web search finds the sources.

SEO article from keyword research to WordPress draft is an n8n workflow in the Marketing \& SEO category, listed by Mindket. It is free. This is version 2, last updated on 2026-11-09. Download it on this page or copy its JSON, then import it into an n8n canvas. Nothing runs until you activate it in n8n.

## About

### What it is

This n8n workflow turns one topic into a researched article and leaves it in WordPress as a draft. You fill in a form with the topic, the search intent, a country, a language, the audience, a tone and one page of your own site. A Gemini agent reads that page first, through Tavily. Five DataForSEO calls then pull keyword ideas, related keywords, search intent and the top Google and Bing results. Gemini summarizes each one and plans a single article from the five summaries. It drafts the article, an agent finds three or four sources with Claude’s web search, and an editor step adds a title, a contents list and a meta description. Forty-seven nodes do the work.

### Who it suits

Small businesses, and the agencies that write for them, who want each new article to start from search data and point to a page they sell from. The code leans towards local service firms: it looks for “near me” searches, phone numbers and review ratings. Skip it if you want posts published without a read, or pictures. It only makes drafts. Where an image would go, it writes “Not Generated”.

Who uses it, and how

| Industry | Who uses it | How they use it | Example |
| --- | --- | --- | --- |
| Home services | Owners of plumbing, electrical or roofing firms | Point each article at the service page it should sell | A roofer enters flat roof repair cost with the repair page, and the draft links to that page. |
| Marketing agencies | Content leads | Keep one copy of the workflow for each client, with that client in \`Client Data\` | An agency runs the form whenever a client asks for a post, and reviews the draft in that client’s WordPress. |
| Local professional services | Dentists, lawyers and accountants | Pick Commercial or Transactional intent for a page that should bring calls | A dental clinic picks Canada and Commercial for emergency dentist. |
| Software and B2B | Content marketers | Pick Informational intent and an expert audience for a guide | A payroll software team asks for a guide to contractor tax forms. |

You need some n8n and six accounts: importing a file, adding five credentials, typing a key into one header and making a sheet with two tabs. Its author puts setup at about 18 minutes, which assumes the accounts and the site already exist.

### Where to use it

Any n8n that can reach Google, DataForSEO, Anthropic, Tavily and your WordPress site will run it.

- n8n Cloud: import the file into a new workflow there
- Your own n8n server: the same file and steps
- WordPress: the article arrives as a draft post with its slug set, for you to edit and publish
- Google Sheets: one row for each article with the draft’s link and post ID, and one for each research run

### How to set it up

Get it saves a zip with `workflow.json` and Mindket’s setup notes in your downloads folder. Make the WordPress application password and the sheet first.

What you need first

| Need | Detail |
| --- | --- |
| n8n | On n8n Cloud or on a server of your own |
| Google AI Studio | A Gemini API key, for every writing and planning step |
| DataForSEO | Your API login and API password, for five research calls |
| Anthropic and Tavily | An API key from each: one for the source search, one to read your page |
| WordPress | A user that can write posts, with an application password |
| Google | An account that can edit the log sheet |

The sheet’s two tabs

| Tab | Columns |
| --- | --- |
| \`Articles\` | Date, Target Keywords, Primary Goal, Internal Link Reference, Content Type, Title, Meta Description, Article Draft Link, Post ID, Image Gen |
| \`Research Data\` | Date, Main Topic \| Keyword, Primary Intent, Internal Link, Primary Goal |

1. In n8n, create a workflow, open its menu, choose Import from File and pick `workflow.json`.
2. In `Client Data`, replace the four `<<YOUR …>>` values with your company’s name, website, a short description and a few strengths.
3. Add a Google Gemini (PaLM) API credential and select it in `2.5 pro`, `2.5 PRO` and `2.5 Pro`.
4. Add an HTTP Basic Auth credential, using your DataForSEO login as the user and the API password. Select it in `Keyword Ideas`, `Search Intent`, `SERP Google`, `SERP Bing` and `Related Keywords`.
5. In `url_Search`, replace `<YOUR_TAVILY_KEY>` in the Authorization header with your key, brackets included.
6. Add an Anthropic credential and select it in `Simple_search`.
7. Add a WordPress credential with your site’s address, the user name and the application password, and select it in `Create a post`.
8. Make the sheet, add a Google Sheets OAuth2 credential, select it in `Append row in sheet` and `Append row`, and replace `YOUR_SHEET_ID` in both.
9. Save, send one topic through the form’s test address, then press Publish.

### How to use it

Open the form, type the topic and pick the intent, country, language, audience and tone. Paste the address of the page on your site the article should point to. The form answers at once and the run goes on behind it. Give it several minutes. A dozen model steps run one after another. The draft then sits under Posts in WordPress, and each tab of the sheet has a new row.

What to change for a different result

| To change | Where |
| --- | --- |
| Your company | The four values in \`Client Data\`, which most prompts quote |
| How much research | The JSON bodies of the five DataForSEO nodes: \`limit\`, \`depth\`, and the volume and competition filters in \`Keyword Ideas\` |
| Voice and structure | The system message of \`AI Generated First Article Draft\` |
| Which sources | The system message of \`EEAT Fortification Agent\`, which asks for public bodies and industry groups and never a competitor |
| Post status | \`Create a post\`, which saves a draft |

### Example

You send the form with these answers.

One request

| Field | Value |
| --- | --- |
| Main topic | water heater replacement cost |
| Search intent | Commercial |
| Country and language | United States, English |
| Audience and tone | General Consumers / Public, Friendly \& Conversational |
| Page to link to | https://plumbing.example/water-heaters |

The first agent reads the water heater page and returns its title, H1, main subheadings and a line on how it fits the topic. Next, `SEO Research Analyst` writes the five DataForSEO inputs, shown here with the values cut:

```json
{
  "dataforseo_google_serp_query": "…",
  "dataforseo_bing_serp_query": "…",
  "dataforseo_related_keywords_seed": "…",
  "dataforseo_keyword_ideas_seed": "…",
  "dataforseo_search_intent_keywords": ["…"]
}
```

The plan names one article, its type, its goal and its keywords. After the draft and the source search, `Technical Editor` answers in this shape, which the two Code nodes after it turn into HTML:

```json
{
  "Title": "…",
  "toc": ["…"],
  "body": "…",
  "meta_description": "…"
}
```

WordPress receives the checked HTML as a draft, with a table of contents after the first paragraph and the sources linked in the text. The `Articles` row holds its link and post ID.

### For newcomers and experts

**If you are new.** n8n draws a workflow as boxes joined by lines, and each box, a node, does one job. The coloured frames behind the boxes only label the stages. Send one topic from the test address first. Then open the run: each node shows what it received and what it sent, so an empty research result shows up where it happened.

**For experts.** Gemini runs every reasoning step through three model nodes, and Claude only searches.

The model steps

| Step | Model node | What to know |
| --- | --- | --- |
| \`Internal Link Data Prep\`, \`SEO Research Analyst\` and the five analysts | \`2.5 pro\`, temperature 0.6 | The analysts read the Code nodes’ reports, never the raw API answers |
| \`SEO Content Silo Strategist\` | \`2.5 PRO\`, temperature 0.5 | A parser holds the plan to five fields |
| Draft, sources, edit and final check | \`2.5 Pro\`, temperature 0.7 | The editor polishes the first draft. The source agent only supplies links for it |
| \`Simple\_search\` | \`claude-sonnet-4-5-20250929\` with web search | Up to five searches a call, answered as titles, addresses and snippets |

`Merge` waits for all five summaries and joins them by position. `Structured Output11` connects to nothing.

### Good to know

Each run spends money at four vendors, and two settings do less than they suggest.

- Billing: twelve Gemini calls a run, more when an agent loops, five DataForSEO calls, at least one Tavily extract, and Anthropic for each search call and the web searches inside it
- Language: \`gl \& hl code\` reads a field the form never sends, so DataForSEO always researches in English. The README says which name to change
- Models: the Gemini nodes are named Pro, but the file sets no model, so n8n uses the default, Gemini 2.5 Flash. Google limits the 2.5 models to accounts that have used them before
- Claude: Anthropic retires \`claude-sonnet-4-5-20250929\` on 30 November 2026 and names \`claude-sonnet-5-5\` as the replacement, so pick that in \`Simple\_search\`
- Sources: one is linked only where its suggested anchor text appears word for word in the edited article
- Open form: once published, anyone with its address can start a run on your keys, so turn on its basic authentication or keep the address to yourself
- Your data: the topic and your company details go to Google, the research terms to DataForSEO, your page’s address to Tavily and the search words to Anthropic
- Credentials: the JSON holds none, and nothing from its author’s sheet or site. The original copy had lost its backslashes, which stopped two Code nodes, and Mindket put them back

## README

```markdown
# SEO article from keyword research to WordPress draft

An n8n workflow that turns one topic from a form into a researched article and leaves it in WordPress as a draft. DataForSEO
supplies the keyword and search research, Google Gemini plans, writes and edits the article, and Claude's web search finds the
sources it links to. Two Google Sheets tabs keep a record of each run.

## What is inside

- `workflow.json`: the workflow as n8n exports it, 47 working nodes and four sticky notes that label its stages (Input,
  Research, Analysis, Content Creation). It holds no credential.
- `README.md`: these notes.

## What we changed from the original copy

- The Tavily key in the Authorization header of `url_Search` is now `<YOUR_TAVILY_KEY>`.
- The author's sheet is gone. `Append row in sheet` and `Append row` ask for `YOUR_SHEET_ID` and find their tab by name:
  `Articles` and `Research Data`.
- The original copy had lost every backslash, so two Code nodes would not run at all. `Filter Google` stopped at
  `/^https?:///`, and `HTML Format` stopped at its first closing tag in a regular expression. Mindket put the backslashes back in
  both, and in the smaller spots that still ran but did the wrong thing: `/[^\w\s]/g` and `\n` in `Filter Google`,
  `\w` in `Brainstorm Ideas`, `\s` and `\b\w` in `Filter Keywords`, `/^\n+/` in `Insert Links`, the slug in `Create a post`
  and `join('\n')` in `Append row in sheet`. Nothing else in the code changed.

## Before you start

- An n8n instance, on n8n Cloud or your own server.
- A Gemini API key from Google AI Studio.
- A DataForSEO account: its API login and API password.
- An Anthropic API key.
- A Tavily API key.
- A WordPress site, and a user there that can write posts, with an application password (Users, Profile, Application
  Passwords).
- A Google account, and a Google Sheet with two tabs (below).

## Set it up

1. In n8n, create a workflow, open its menu and choose Import from File. Pick `workflow.json`.
2. Open `Client Data` and replace its four values, `<<YOUR COMPANY NAME>>`, `<<YOUR COMPANY WEBSITE>>`,
   `<<YOUR COMPANY DESCRIPTION>>` and `<<FEW STRENGTHS ABOUT YOUR COMPANY>>`, with your own. Most prompts read them.
3. Add a Google Gemini (PaLM) API credential and select it in `2.5 pro`, `2.5 PRO` and `2.5 Pro`.
4. Add an HTTP Basic Auth credential, using your DataForSEO login as the user and the API password. Select it in
   `Keyword Ideas`, `Search Intent`, `SERP Google`, `SERP Bing` and `Related Keywords`.
5. In `url_Search`, replace `<YOUR_TAVILY_KEY>` in the Authorization header with your key. The brackets go too, so the
   header reads Bearer, a space and the key.
6. Add an Anthropic credential and select it in `Simple_search`.
7. Add a WordPress credential with your site's address, the user name and the application password, and select it in
   `Create a post`.
8. Make the sheet with the two tabs below and copy its ID: the long part of its address between `/d/` and `/edit`. Add a
   Google Sheets OAuth2 credential, select it in `Append row in sheet` and `Append row`, and replace `YOUR_SHEET_ID` in both.
9. Save. Open `On Form Submission`, use its test address and send one topic. Publish once a draft reaches WordPress.

## The sheet

| Tab | Columns |
|---|---|
| `Articles` | `Date`, `Target Keywords`, `Primary Goal`, `Internal Link Reference`, `Content Type`, `Title`, `Meta Description`, `Article Draft Link`, `Post ID`, `Image Gen` |
| `Research Data` | `Date`, `Main Topic \| Keyword`, `Primary Intent`, `Internal Link`, `Primary Goal` |

Spell the headers as above: the two nodes map their values to them by name. `Image Gen` always gets "Not Generated", because
the workflow makes no images.

## How a run goes

1. `On Form Submission` takes the topic, the search intent, a country, a language, the audience, a tone and one page of your
   site. `Client Data` and `Prepare data` add your company to it, and `gl & hl code` turns the country and language into
   DataForSEO's codes.
2. `Internal Link Data Prep`, an agent, reads your page through `url_Search` (Tavily's extract endpoint) and returns its
   title, H1, main subheadings and how it relates to the topic.
3. `SEO Research Analyst` writes five inputs for DataForSEO: a Google query, a Bing query, two short seed keywords and a list
   of intent keywords.
4. Five HTTP nodes call DataForSEO: keyword ideas, search intent, related keywords, and the organic results on Google and
   Bing. Five Code nodes boil each response down to a report, and five Gemini steps summarize each report in Markdown.
5. `Merge` waits for all five summaries, and `SEO Content Silo Strategist` turns them into a plan for one article: its focus,
   title, type, goal and target keywords.
6. `AI Generated First Article Draft` writes it in Markdown, with a placeholder link to your page. `EEAT Fortification Agent`
   then searches with `Simple_search` (Claude with web search) and returns three or four sources, each with a suggested
   anchor text.
7. `Technical Editor` polishes the draft and returns its title, its H2 headings, the body and a meta description. Next,
   `Insert Links` links each source at the first place its anchor text appears, and `HTML Format` turns the Markdown into
   HTML with a table of contents and a folding FAQ.
8. `Final Checker` reads the HTML once more, and `Create a post` saves the HTML as a WordPress draft. `Append row in sheet` logs
   the article in `Articles`, and `Append row` logs the research in `Research Data`.

## Change the look

- Your company: the four values in `Client Data`, which most prompts quote.
- Research size: the JSON bodies of the five DataForSEO nodes. `Keyword Ideas` asks for 44 ideas with a monthly volume over
  50 and a competition of 0.8 or less, `SERP Google` reads 44 results and `SERP Bing` 22.
- Voice and structure: the system message of `AI Generated First Article Draft`. The form's tone and audience reach it only
  through the plan.
- Sources: the system message of `EEAT Fortification Agent`, which asks for neutral sources such as public agencies and
  industry bodies, and never a competitor.
- Post status: `Create a post` saves a draft. Change its status to publish only once you trust the output.

## Good to know

- Billing: each run makes twelve Gemini calls (agents may make more), five DataForSEO calls, one or more Tavily extracts and
  as many Anthropic calls as the source agent decides. Anthropic bills the web searches inside each call as well. Try one
  topic first.
- The language field does not reach DataForSEO. `gl & hl code` reads a field named `What language should the content be in?`,
  which the form does not send, so the research is always in English (`en`). To pass your pick on, change that name in the
  code to `Target Language (DataforSEO)`. The plan's title and keywords still follow the language you picked.
- The three Gemini nodes carry Pro in their names, but the file sets no model in them, so n8n uses the node's default,
  `models/gemini-2.5-flash`. Pick Gemini 2.5 Pro in each if you want what the names say. Google's deprecations page, read on 2
  November 2026, gives neither a shutdown date but limits both to accounts that have used them before. A new key
  may need a newer Gemini model picked in all three.
- `Simple_search` uses `claude-sonnet-4-5-20250929`. Anthropic's deprecations page, read on 2 November 2026, retires it on 30
  November 2026 and names `claude-sonnet-5-5` as the replacement. Pick it in the node before then.
- A source is linked only where its suggested anchor text appears word for word in the edited article, so some sources may
  not show. The `debug_info` that `Insert Links` returns lists which ones did.
- The code is written for local service businesses: it looks for "near me" searches, phone numbers written with the area code in
  brackets, and review ratings. Other topics still run, with less to say in those reports.
- `Structured Output11` connects to nothing and does no work.
- Who can start it: once published, anyone with the form's address can start a run on your keys. Turn on the form's basic
  authentication or keep the address to yourself.
- Where the data goes: the topic and your company details go to Google, the research terms to DataForSEO, your page's address
  to Tavily and the search words to Anthropic. The article goes to your WordPress site and the log to your sheet.
```

## What is in it

2 files, 242 KB, downloaded as a zip.

```text
README.md  8 KB
workflow.json  234 KB
```

## Workflow check

Checked by Mindket on 13 Nov 2026. Read from the workflow’s file, not from a run.

- Steps: 36 steps, starting on a form
- Not reached: 1 node no run reaches: Structured Output11
- AI: 12 steps call an AI model: Internal Link Data Prep, SEO Research Analyst, SERP Google Analyst, SEO Content Silo Strategist, AI Generated First Article Draft and 7 more
- Sign-ins: Signs in to: DataForSEO, WordPress, Google Sheets and Google Gemini
- API keys: No API key is left in the file
- Step types: Mindket’s checker reads 8 of its 9 step types. It does not read: AI Agent

## Get it

- [Get it on your Mindket account](https://account.mindket.com/account/?product=mindket#/market/ed8e6ef5-df5a-4b7e-8380-510ffcbd24cb)
- [Its page on Mindket](https://mindket.com/p/ed8e6ef5-df5a-4b7e-8380-510ffcbd24cb)
