---
ref: workflow:seo-topical-clusters
title: Build a cited content cluster from one pillar topic
author: shipgtm
tools: [tool:exa/answer-question, tool:ahrefs/get-organic-keywords, tool:ahrefs/get-keyword-overview, tool:webflow/create-cms-items, tool:webflow/publish-cms-items, tool:n8n/run-workflow]
tags: [capability:automate-workflows, capability:publish-content, capability:research-keywords, capability:search-web, channel:website, motion:content]
updated: 2026-09-29
---

# Build a cited content cluster from one pillar topic

Researches subtopics with Exa, scores them with Ahrefs, publishes the approved briefs in Webflow, and schedules the next batch in n8n.

Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.

## Outcome

- A prioritized list of cluster subtopics with intent, ranking potential and search volume.
- A source-backed brief for each subtopic, ready for review.
- The approved briefs live in your CMS collection, with the next batch scheduled.

## Inputs

Ask the user for these before you start.

- `pillar_topic`: the pillar keyword to cluster, e.g. outbound sales automation
- `own_domain`: your site, to skip subtopics you already rank for, e.g. acme.com
- `cms_collection`: the Webflow CMS collection to draft posts into, e.g. Blog posts
- `batch_workflow`: the n8n workflow that reruns this pipeline for the next batch, e.g. SEO cluster batch

## Set up

### Answer a question from the web (Exa, tool:exa/answer-question)

Use the API.

- Base URL: https://api.exa.ai
- Endpoint: `POST /answer`
- Auth: send the header `Authorization: Bearer $EXA_API_KEY`
- Get a key: https://dashboard.exa.ai/api-keys

### Ahrefs (tool:ahrefs/get-organic-keywords, tool:ahrefs/get-keyword-overview)

Use the API.

- Base URL: https://api.ahrefs.com/v3
- Get a site's organic keywords: `GET /site-explorer/organic-keywords`
- Get keyword search volume: `GET /keywords-explorer/overview`
- Auth: send the header `Authorization: Bearer $AHREFS_API_KEY`

Note: Only workspace owners and admins can create keys, in Account settings, API keys.

Notes:

- Get a site's organic keywords: `target`, `date` and `select` are required; `mode` narrows the match to an exact URL, a prefix, the domain or its subdomains.
- Get keyword search volume: `select` and `country` are required; `keywords` takes a comma-separated list.

### Webflow (tool:webflow/create-cms-items, tool:webflow/publish-cms-items)

Use the first option your agent supports.

Notes:

- Create CMS items: Read the collection's fields first (`get_collection_details` on MCP). Setting `isDraft` to `false` only queues items for the next site publish: publish them to go live now. The 100-item limit counts every locale variant.

#### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "webflow": { "url": "https://mcp.webflow.com/mcp" } } }
```

- Create CMS items: call the MCP tool `data_cms_tool` with `POST /collections/{collection_id}/items/insert`
- Publish CMS items: call the MCP tool `data_cms_tool` with `POST /collections/{collection_id}/items/publish`

#### CLI (official)

Install the command and sign in with it, then confirm it runs.

```sh
npm install -g @webflow/webflow-cli
webflow --version
```

- Create CMS items: run `webflow cms items create`
- Publish CMS items: run `webflow cms items publish`

### Run a workflow (n8n, tool:n8n/run-workflow)

Use the MCP server. Add it to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "n8n": { "url": "https://{n8n_host}/mcp-server/http" } } }
```

Call the MCP tool `execute_workflow`.

Note: `{n8n_host}` is your instance's domain, such as `acme.app.n8n.cloud`. An owner or admin turns on Settings > Instance-level MCP first.

Note: Only workflows enabled for MCP access can run, and multi-step forms and human-in-the-loop steps aren't supported. `production` runs the published version, `manual` the draft; check the outcome with `get_workflow_execution`.

Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.

## Steps

1. **Research subtopics** with Answer a question from the web (Exa). Ask what people search and ask around `pillar_topic`. Keep every subtopic with its intent and the citations behind it.
2. **Check what you already rank for** with Get a site's organic keywords (Ahrefs). Look up `own_domain`. Drop any subtopic that already ranks there, keeping the rest.
3. **Check volume and difficulty** with Get keyword search volume (Ahrefs). Look up the remaining subtopics. Drop the ones with too little search volume or too high a difficulty to be worth a brief, and keep the rest with their volume and difficulty.
4. **Prioritize the cluster** yourself. Order the kept subtopics by business value, their internal-link role to `pillar_topic`, and the volume and difficulty from step 3.
5. **Draft the briefs** yourself. For each subtopic, in priority order, draft a source-backed brief with a distinct angle, the reader's outcome, a heading structure, and a link to `pillar_topic` and to the other briefs in the cluster. Show the drafts to the user.
6. **Stage approved briefs** with Create CMS items (Webflow). After the user approves, create each brief as a draft item in `cms_collection`.
7. **Publish them** with Publish CMS items (Webflow). Publish the items the user is ready to take live now; leave the rest staged.
8. **Schedule the next batch** with Run a workflow (n8n). Trigger `batch_workflow` with the subtopics left over from step 4, so the next run picks up where this one stopped.

## Notes

Step 8 needs `batch_workflow` already built and enabled for MCP access in n8n; this run only starts it.

Adapted from ShipGTM's [topical cluster guide](https://shipgtm.substack.com/p/speedrun-to-1000-visitors-a-month), which names Exa for research, Ahrefs for keyword and ranking data, Webflow for publishing, and n8n as one option for orchestrating the pipeline.

## Rules

- Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
- Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
- Never print API keys.
