Skip to content

content-writer

Writes brand-voice content in multiple modes — blog posts, news/press releases, location pages, and dual-angle polarizing content. Reads brand.json for voice and tone. Use when generating the actual written content from a research brief.

ModelSource
sonnetpack: content-pumper
Full Reference

┏━ ✍️ content-writer ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓ ┃ Writing brand-voice content from research brief ┃ ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛

Takes a research brief and produces publication-ready content in the project’s brand voice. Mode is selected automatically based on topic type.

ModeLengthStructureSchema
Blog800–2000 wordshook → problem → solution → evidence → CTAArticle
News/Press400–800 wordsinverted pyramid, AP style, datelineNewsArticle
Location7 sectionsNAP from business.json, city-specificLocalBusiness
Dual-angle2 drafts + bridgeopposing positions, shared bridge conclusionArticle (×2)
SignalMode
Default / educationalBlog
Breaking / sports / game recap / player newsNews
City-specific / “near me” / service areaLocation
polarization_score > 0.5 in sentiment-mapper outputDual-angle
I want to…File
See blog structure and frontmatter templatereference/content-modes.md#blog-mode
See news/press inverted pyramid and sports templatesreference/content-modes.md#newspress-mode
See location page 7-section structure + schemareference/content-modes.md#location-mode
Generate dual-angle drafts from polarization mapreference/content-modes.md#dual-angle-mode
Check SEO requirements per modereference/content-modes.md#seo-requirements

Read brand.json before writing. Required fields:

FieldHow it’s used
voiceNarrative register — conversational, authoritative, playful
toneEmotional coloring — warm, direct, irreverent
valuesThemes to reinforce throughout
vocabularyPreferred words and phrases to use
avoid-wordsWords and phrases never to use

If brand.json is absent, default to clear, direct, neutral tone.

Every factual claim must cite a source from the research brief. No claim without a source. Fabricated statistics are a hard block — rewrite without the claim.

Output is markdown with YAML frontmatter. Passes directly to:

Content typeNext skill
Blog postadd-blog-post
Location pageadd-location-page
Service pageadd-service-page
News/pressadd-blog-post (news category)