Content Generation
MCP tools for generating SEO-optimized articles with built-in research, humanization, and internal linking.
Workflow Modes
Every article generation supports 4 workflow combinations via two simple flags:
auto_research |
humanize |
What Happens |
|---|---|---|
true (default) |
false (default) |
Research + Generate — Web research runs first, then article is written using real data |
true |
true |
Research + Generate + Humanize — Full pipeline: research, write, then anti-AI rewrite |
false |
false |
Generate Solo — Skip research, generate from AI knowledge only |
false |
true |
Generate + Humanize — No research, but humanize the output |
Research is ON by default. You don't need to call
research_topicseparately. Just callgenerate_articleorgenerate_batchand research runs automatically before writing.
Available Tools
| Tool | Description |
|---|---|
generate_article |
Generate a single article from a keyword |
generate_batch |
Generate multiple articles from a keyword list |
list_models |
List all available AI models |
list_articles |
Browse and search your article library |
get_article |
Retrieve full content of a stored article |
generate_article
Generate a single SEO-optimized article from a keyword. Research runs automatically before writing (can be disabled). The article is saved to your project's article library.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
keyword |
string | ✅ | — | Target keyword or topic |
provider |
enum | ❌ | openai |
openai, claude, deepseek, grok, gemini, perplexity, kimi |
model |
string | ❌ | Account default | Specific model ID (e.g., gpt-5.2, claude-opus-4.5) |
word_count |
number | ❌ | 2500 |
Target word count (500-10000) |
temperature |
number | ❌ | 0.7 |
Generation temperature (0.0-1.0) |
tone |
string | ❌ | — | Writing tone (e.g., "professional", "casual") |
auto_research |
boolean | ❌ | true |
Auto-run web research before writing. Uses Perplexity Sonar Pro or best available provider. Set false to skip. |
humanize |
boolean | ❌ | false |
Run 20-rule anti-AI detection pass after generation |
research_context |
string | ❌ | — | Pre-fetched research data. If provided with auto_research: true, this is used instead of running new research. |
include_knowledge_base |
boolean | ❌ | true |
Include project knowledge base context |
internal_linking |
boolean | ❌ | true |
Apply internal linking from project settings |
max_internal_links |
number | ❌ | 5 |
Max internal links to include (1-10) |
sitemap_url |
string | ❌ | — | Override: fetch this sitemap for link candidates |
link_candidates |
string[] | ❌ | — | Override: provide URLs for internal linking directly |
project_id |
string | ❌ | Active project | Target project |
Example Prompts
Default workflow (research + generate):
Generate an article about "best CRM software for small businesses"
Research runs automatically, then writes using real data.
Full pipeline (research + generate + humanize):
Generate a 3000-word article about "docker compose tutorial"
using claude-opus-4.5 with humanize enabled
Skip research (generate solo):
Generate an article about "email marketing tips"
with auto_research disabled
With internal linking:
Generate an article about "email marketing tips" with internal linking
from sitemap https://myblog.com/post-sitemap.xml
Internal Linking Priority Chain
When internal_linking is enabled, link candidates are resolved in this order:
link_candidates(inline array takes top priority)sitemap_url(fetched on-the-fly)- Project settings (pre-configured sitemap)
Response
{
"status": "success",
"article_id": "a1b2c3d4-...",
"persisted": true,
"article": {
"title": "Best CRM Software for Small Businesses in 2026",
"keyword": "best CRM software for small businesses",
"slug": "best-crm-software-for-small-businesses-in-2026",
"content": "# Best CRM Software for Small Businesses in 2026\n\n...",
"meta_description": "Compare the top CRM platforms...",
"word_count": 2847,
"model": "gpt-5.2",
"provider": "openai",
"humanized": false,
"research_provider": "perplexity",
"citations": [
"https://www.gartner.com/reviews/market/crm-2026",
"https://www.pcmag.com/picks/best-crm-software"
]
}
}
generate_batch
Generate multiple articles from a list of keywords. Each keyword gets its own research phase before writing. Processes sequentially with progress reporting.
Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
keywords |
string[] | ✅ | — | Array of keywords to generate articles for |
provider |
enum | ❌ | openai |
AI provider |
model |
string | ❌ | Account default | Specific model ID |
word_count |
number | ❌ | 2500 |
Target word count |
temperature |
number | ❌ | 0.7 |
Generation temperature |
tone |
string | ❌ | — | Writing tone |
auto_research |
boolean | ❌ | true |
Auto-run research per keyword before writing. |
humanize |
boolean | ❌ | false |
Run anti-AI detection pass on each article |
include_knowledge_base |
boolean | ❌ | true |
Include KB context |
internal_linking |
boolean | ❌ | true |
Apply internal linking |
max_internal_links |
number | ❌ | 5 |
Max internal links (1-10) |
cross_linking |
boolean | ❌ | true |
Auto-link articles in this batch to each other |
cross_linking_base_url |
string | ❌ | Auto-detect | Base URL for cross-link assembly |
max_cross_links |
number | ❌ | 3 |
Max cross-links per article (1-10) |
delay_between_articles |
number | ❌ | 5 |
Seconds between articles (rate limit protection) |
project_id |
string | ❌ | Active project | Target project |
How Batch Works
For each keyword in the list, the batch tool runs the same pipeline as generate_article:
Keyword 1: "best project management tools"
├── 🔬 Research (Perplexity Sonar Pro)
├── 📝 Generate (with research + KB + links)
├── ✨ Humanize (if enabled)
└── 💾 Save to article library
⏳ 5s cooldown
Keyword 2: "agile vs waterfall methodology"
├── 🔬 Research
├── 📝 Generate
├── ✨ Humanize (if enabled)
└── 💾 Save
... and so on
Example Prompts
Full research batch:
Generate articles for these keywords using gemini-3-pro-preview:
- best project management tools
- agile vs waterfall methodology
- remote team collaboration tips
- sprint planning best practices
Fast batch (skip research):
Generate articles for these 10 keywords with auto_research disabled
and humanize enabled, using claude-sonnet-4.5
Response
{
"status": "completed",
"total": 4,
"completed": 4,
"failed": 0,
"elapsed_minutes": 8.5,
"provider": "gemini",
"model": "gemini-3-pro-preview",
"results": [
{
"keyword": "best project management tools",
"status": "success",
"title": "Best Project Management Tools in 2026",
"slug": "best-project-management-tools-in-2026",
"word_count": 2634,
"content_preview": "# Best Project Management Tools in 2026...",
"citations": ["https://...", "https://..."]
}
]
}
Error Handling
- Individual keyword failures don't stop the batch
- If 3+ articles fail consecutively, the batch halts to save API tokens
- Failed articles are reported with error details
Article Library
Every generated article is automatically saved. No content loss.
list_articles
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
project_id |
string | ❌ | Active project | Which project |
search |
string | ❌ | — | Search by keyword, title, or content |
status |
string | ❌ | all |
Filter: completed, error, all |
source |
string | ❌ | all |
Filter: mcp, web, all |
limit |
number | ❌ | 20 |
Results per page (max 200) |
offset |
number | ❌ | 0 |
Pagination offset |
get_article
| Parameter | Type | Required | Description |
|---|---|---|---|
article_id |
string | ✅ | The article UUID from list_articles |
list_models
List all available AI models, optionally filtered by provider.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
provider |
enum | ❌ | All | Filter by provider |
Processing Pipeline
Every article passes through these stages (in order):
- 🔬 Research (if
auto_research: true) — Live web search with citations - 📚 Knowledge Base Injection — Project KB items prepended to system prompt
- 🔗 Internal Linking — Sitemap URLs injected as link candidates
- 🔗 Cross-Linking (batch only) — Sibling article URLs shuffled and injected
- 📝 Generation — AI writes the article using all context
- ✨ Humanization (if
humanize: true) — 20-rule anti-AI detection rewrite - 📋 Meta Extraction —
META_DESCRIPTION:lines extracted into fields - 💾 Persistence — Article saved to project library
Next Steps
- Research Engine → — Standalone research and provider details
- WordPress Publishing → — Publish generated content
- CSV Import & Export → — Bulk import keywords and export articles