Individual skill
content-writer
Use when the user asks to "write SEO content", "draft a blog post / landing page", "update outdated content", or "fix traffic/ranking decay"; two modes — new drafts pages with keywords, headers, snippets, and evidence boundaries; refresh scores decay, prioritizes update work, and produces a republish plan with GEO guidance. Not for AI-citation/GEO readiness scoring — use geo-content-optimizer; not for publish-gate scoring — use content-quality-auditor. SEO文章写作/内容更新/排名恢复
seo-geo/implement/content-writer/SKILL.md
Source commit 8be02f1f0b18253bd5f2b85f858278f042637b9a
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- No
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Not checked yet
- Last checked
- Nov 9, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 3,135
- Repository last updated
- Nov 12, 2026
- License
- Apache-2.0
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
- geo Repository topic
- seo Repository topic
- agent-skills Repository topic
- content-optimization Repository topic
- generative-engine-optimization Repository topic
- marketing Repository topic
- influencer-marketing Repository topic
- paid-advertising Repository topic
- roas Repository topic
- email-marketing Repository topic
- marketing Derived category
Declared tags are partial or unavailable.
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 14,776 bytesSKILL.mdcore · 14,776 bytesSKILL.mdcore · 14,776 bytesreferences/content-decay-signals.mddoc · 4,189 bytesreferences/content-structure-templates.mddoc · 3,519 bytesreferences/instructions-detail.mddoc · 4,572 bytesreferences/refresh-example.mddoc · 3,340 bytesreferences/refresh-templates.mddoc · 5,569 bytesreferences/seo-writing-checklist.mddoc · 3,728 bytesreferences/title-formulas.mddoc · 4,128 bytes
Read excerpt
# Content Writer
Writes and updates SEO/GEO content across two modes: **new** drafts net-new pages against a target keyword and search intent; **refresh** diagnoses decay on an existing page, prioritizes the update, and produces a republish plan. Both modes apply the same CORE-EEAT constraints so a draft and a refresh clear the same quality bar before the auditor gate.
**This skill does NOT compute the CORE-EEAT score or run vetoes** — that is the publish-gate role of [content-quality-auditor](../../tune/content-quality-auditor/SKILL.md). This skill works the writing/updating lever and hands off. It also does not score AI-citation/GEO readiness in isolation ([geo-content-optimizer](../geo-content-optimizer/SKILL.md)) or produce meta tags/schema as standalone artifacts ([serp-markup-builder](../serp-markup-builder/SKILL.md)).
## Mode Selector
| Mode | Trigger | Output |
|------|---------|--------|
| `new` | "write / draft SEO content", net-new page against a keyword, no existing URL | Ready-to-use draft (title, meta, H1/H2 structure, snippet block, links) |
| `refresh` | "update outdated content", "fix decay", "refresh for [year]", an existing URL that lost traffic/rankings | Decay diagnosis, prioritized update plan, republish-date strategy, optional refreshed copy |
**Selecting the mode:** honor an explicit `--mode`. Otherwise infer: an existing URL plus a decline/staleness signal → `refresh`; a topic/keyword with no prior version → `new`. If the request says "refresh" but there is no existing URL, treat it as `new` and note the mismatch once (do not fabricate a prior version).