What Marcus does
Marcus runs a six-stage pipeline that turns a topic plus your brand context into a publication-ready blog post. The result is cited, brand-aligned, has a hero image, and ships straight to Webflow or Sanity.
- Keyword research: picks primary and secondary keywords for the topic.
- Deep research: looks at competitors ranking for those keywords, finds angles and gaps.
- Outline: H2/H3 structure tuned to user intent.
- Draft: written in your brand voice, citing sources, weaving in USPs.
- Visuals: a hero image (Iris-style) plus inline diagrams where they help.
- Publish: pushes to Webflow or Sanity as
Draft(default) orPublished.
The publish step gates by default. You review the draft inside the CMS, then promote when you’re happy. This matters because LLM-written posts still need a human eye for facts and tone, even with citations.
How Marcus writes blog posts
Marcus reads your brand knowledge first, then your past blogs (auto-indexed for tone retrieval), so each draft sounds like it came from your team. He cites real sources for every claim, not invented URLs. If a citation can’t be verified, that section gets rewritten or removed before the draft lands.
If you only need ad copy or a quick LinkedIn post, Marcus is the wrong tool. Use Luna for short-form ad copy instead.
When to use him
- SEO content backlog: run cluster mode to generate N posts on a theme with internal links pre-planned.
- Thought leadership: give Marcus a single topic, get one post end-to-end.
- Repurposing: Marcus and Luna in series turn one blog into LinkedIn posts and ad copy.
In product


Required connectors
| Connector | Required? | Notes |
|---|---|---|
| Webflow CMS or Sanity CMS | For publish step | Drafts can also stay in 10ex |
Required knowledge
company_overview,usps,industry,brand_voice(Brand schema)- Case Study (6-item onboarding). Marcus links case studies as social proof when relevant.
- Past blogs (auto-indexed). Used as few-shot retrieval for tone consistency.
Inputs
{
"topic": "How to score outbound leads",
"brand_id": "uuid",
"audience_segment_id": "uuid",
"target_words": 1500,
"mode": "single" | "cluster",
"post_count": 1,
"primary_keyword": "optional",
"publish_to": null | "webflow" | "sanity"
}Outputs
{
"draft_id": "uuid",
"title": "...",
"slug": "...",
"outline": [...],
"body_markdown": "...",
"hero_image_url": "...",
"internal_links": [...],
"status": "draft" | "published",
"next_actions": ["publish_blog", "generate_ad_copy"]
}Outcomes
- Steady publishing cadence without a writer in the loop.
- SEO clusters built with intentional internal linking from day one.
- Blogs that read like you wrote them, not like an LLM.
MCP equivalents
generate_blog({ topic: "How to score outbound leads", brand_id, audience_segment_id, target_words: 1500 })
publish_blog({ draft_id, connector_id, status: "draft" })
generate_blog_cluster({ theme: "outbound deliverability", post_count: 5, brand_id })
Common questions
How long does one blog post take to generate? A standard 1,500-word post takes roughly 4 to 8 minutes end-to-end. Cluster mode (5 posts) usually finishes within 30 minutes. The longest stage is deep research, since Marcus pulls real competitor URLs.
What if Marcus picks the wrong primary keyword?
Pass primary_keyword explicitly in the input. Otherwise Marcus chooses based on volume and intent fit. You can also reject a keyword choice in the Blogs UI before the draft kicks off.
Does cluster mode actually link the posts together? Yes. Marcus plans the cluster’s internal-link graph before drafting any individual post, so each draft references its siblings by working slug.
Will Marcus invent statistics or sources? No. Every claim is grounded in a real URL Marcus found during research. If a citation fails verification, that paragraph gets rewritten before the draft lands.
Related agents
- Iris (
webinar-image-generator): same brand-aware visual engine. - Luna (
ad-copy-generator): repurpose drafts into ad copy. - Juno (
market-research-crew): competitor positioning for the post.