Blog post
gen_blog · slug blog-post · icon ✍️ · outputs markdown
A researched, well-structured long-form post. The team researches the topic on the web, builds an outline, drafts in your voice, then a line editor tightens every sentence. Output: publish-ready markdown with frontmatter and sources.
Inputs
| Field | Type | Notes |
|---|---|---|
| Topic | string | required, 3-200 chars — a working title or one-sentence idea is enough |
| Audience | string | default “Curious professionals who are new to the subject” |
| Angle or thesis | text | optional — leave blank and the strategist proposes one from the research |
| Tone | pick | Clear and warm · Direct and opinionated · Playful · Authoritative · Reflective and personal |
| Target length (words) | number | default 1200, 400-3500 |
| Keywords | string | optional, comma-separated, worked in naturally |
Pipeline
| Step | Role | Skills | Tier | Depends on |
|---|---|---|---|---|
research | researcher | web.research, web.search, web.fetch | cheap | — |
outline | strategist | llm.generate | cheap | research |
draft | writer | llm.generate | standard | research, outline |
polish | editor | llm.generate, docs.write_markdown, files.write | cheap | draft |
Example run
{ "generatorId": "gen_blog", "inputs": { "topic": "Why small teams ship faster than big ones", "tone": "Direct and opinionated", "wordCount": 900 } }The final polish step is the one that actually writes the file — everything upstream is context the
editor reads via {{steps.draft.output}}, never a separate output of its own.