agricidaniel/blog-rewrite
> Rewrite and optimize existing blog posts for Google SEO (May 2026 Core Update, March 2026 core/spam context, June 2026 spam context, E-E-A-T) and AI citation visibility as one SEO discipline. Full rewrite for both Google rankings AND AI citations. For AI-citation-only audit (no Google work), use blog-geo instead. Replaces fabricated statistics with sourced data, applies answer-first formatting, adds Pixabay/Unsplash images, generates built-in SVG charts, validates Article-priority schema, performs AI content detection, adds citation capsules and information gain markers, and updates freshness signals. Works with any blog format (MDX, markdown, HTML). Use when user says "rewrite blog", "optimize blog", "update blog", "improve blog", "fix blog", "refresh blog post", "blog optimization".
npx skills add https://github.com/AgriciDaniel/claude-blog --skill blog-rewrite
Rewrites and optimizes existing blog posts for dual ranking: Google search
and AI citation platforms. Preserves the author's voice while applying the
6 pillars of optimization.
Key references:
skills/blog/references/quality-scoring.md - 5-category scoring (Content 30, SEO 25, E-E-A-T 15, Technical 15, AI Citation 15)skills/blog/references/eeat-signals.md - Experience, expertise, authority, trust markersskills/blog/references/internal-linking.md - Linking strategy and anchor text rulesskills/blog/references/visual-media.md - Image sourcing and chart stylingskills/blog/references/synthesis-contract.md - 6 LAWs for re-citation hygiene during rewrite (v1.8.0; cross-skill ref lives in the orchestrator's references dir)skills/blog/references/research-quality.md - cross-source clustering for replacement-statistic research (v1.8.0)For 21 evidence-led optimization prompts (AI-detector test, CTR audit, schema, PAA rewording, technical audit, ChatGPT visibility) directly applicable to rewrite work, see /blog flow optimize.
skills/blog/references/quality-scoring.md:variance (most sentences within 3-5 words of each other) is a strong AI signal.
Calculate: standard deviation of sentence word counts. Target SD > 6.
agents/blog-writer.mdtotal words. Low TTR (< 0.40) suggests AI-generated repetitive phrasing.
Target TTR > 0.50 for natural prose.
TTR, estimate what percentage of the content reads as AI-generated (0-100%).
Report as: "AI content estimate: ~X%"
are vocabulary-level. The second-order pass catches what survives them: structural
and rhythmic tics LLMs default to after the obvious words are replaced. Run against
skills/blog/references/ai-slop-detection.md. Flag at minimum:
A draft is only "AI-detection clean" when both passes are clean. The two-namespace
terminology (first-order/second-order for slop-detection vs Tier 1/2/3 for source
authority) is intentional: see skills/blog/references/ai-slop-detection.md for
why the labels diverged in v1.8.1.
(shift one post to a related but distinct keyword)
Wait for user approval before proceeding.
[topic] study 2025 2026 data statisticsjavascript:, data:, and file: URLsblog-image is available, offer AI generation for missing or insufficient images and record the selected model IDWhen the post needs more visual elements, invoke the blog-chart sub-skill:
<figure> wrapperSee skills/blog/references/visual-media.md for chart type selection and styling rules.
Apply changes in this order:
lastUpdated: "YYYY-MM-DD" (today's date)date unchangedcoverImage + coverImageAlt + ogImage if missingblog-chart (text-on-gradient with key stat)blog-image sub-skill when available; record the model IDEvery H2 section MUST open with a 40-60 word paragraph containing:
blog-image is available: generate custom images for sections lacking good stock matches, prefer the current image model registry, and record the model IDIf the post lacks YouTube video embeds:
skills/blog/references/video-embeds.mdFor each H2 section, generate (or improve existing) a citation capsule:
Example:
According to a 2026 Gartner study, 58% of enterprise buyers now consult AI
assistants before contacting a vendor ([Gartner](https://www.gartner.com), 2026).
This shift means B2B content must answer specific questions concisely enough
for AI systems to extract and cite in their responses.
Capsules map to the "AI Citation Readiness" category (15 points) in
skills/blog/references/quality-scoring.md.
Apply these transformations to reduce AI-detectable writing patterns:
colon, or period. Split sentences if needed. Em dashes are an AI writing tell.
Phase 1 step 3) with a natural alternative. Examples:
Inject short punchy sentences (5-10 words) between longer ones (18-25 words).
Target: no more than 3 consecutive sentences within 5 words of each other's length.
200-300 words to break up declarative monotony.
where they sound natural: "it is" -> "it's", "we have" -> "we've",
"do not" -> "don't", "is not" -> "isn't".
experience: "in our experience", "we've found that", "from what we've seen",
"this tends to", "it depends on".
If the post lacks a summary box, add one immediately after the introduction:
> **Key Takeaways**
> - [Core finding with statistic and source]
> - [Second key insight or recommendation]
> - [Third actionable takeaway]
> (3-5 bullets, 40-60 words combined. Self-contained - reader gets
> the core value without reading the full article.)
Default label is "Key Takeaways", but this is configurable per persona or
brand voice (e.g., "The Bottom Line", "Quick Summary", "What You Need to Know").
If an existing TL;DR box is present, convert it to the bullet-point Key
Takeaways format. Verify it meets the 40-60 word requirement and contains
at least one statistic with source attribution.
Review the post for original value and tag it:
[ORIGINAL DATA] - Any proprietary data, survey results, experiments, orcase study metrics the author collected first-hand
[PERSONAL EXPERIENCE] - First-hand observations, lessons learned[UNIQUE INSIGHT] - Novel analysis, contrarian perspectives backed by dataIf the post lacks original value markers:
Use HTML comments (<!-- [ORIGINAL DATA] -->) or visible callouts depending
on the post's style.
After rewriting, verify all quality gates pass:
10. At least 2-3 information gain markers present
11. Citation capsules in major H2 sections (40-60 words, self-contained)
12. Internal linking zones marked or actual links present (5-10 per 2,000 words)
13. No AI-detectable phrases remain from banned list
14. Sentence length variance: SD > 6 (mix of short and long sentences)
15. Contractions used naturally throughout
16. Rhetorical questions present (1 per 200-300 words)
17. AI content estimate reduced from audit baseline
18. Score improved across all 5 categories vs Phase 1 audit
19. YouTube video embeds present with lazy loading, aria-labels, and noscript fallback
## Blog Optimization Complete: [Title]
### Score Change
- Before: [X]/100 ([Rating])
- Content Quality: [X]/30
- SEO Optimization: [X]/25
- E-E-A-T Signals: [X]/15
- Technical Elements: [X]/15
- AI Citation Readiness: [X]/15
- After: [Y]/100 ([Rating])
- Content Quality: [Y]/30
- SEO Optimization: [Y]/25
- E-E-A-T Signals: [Y]/15
- Technical Elements: [Y]/15
- AI Citation Readiness: [Y]/15
### AI Detection
- Before: ~[X]% AI-detected content
- After: ~[Y]% AI-detected content
- Phrases replaced: [N]
- Burstiness improved: [before SD] -> [after SD]
### Cannibalization
- [Status: none found / flagged N posts / resolved]
### Changes Made
- [X] statistics replaced with sourced data
- [X] SVG charts added (types: ...)
- [X] images added from Pixabay/Unsplash
- Answer-first formatting applied to [N] H2 sections
- FAQ section updated with [N] questions; FAQPage emitted only as optional entity markup if appropriate
- TL;DR box: [added/updated]
- Information gain markers: [N] ([types])
- Citation capsules: [N] across H2 sections
- AI phrases replaced: [N]
- lastUpdated set to [date]
- Self-promotion reduced to [N] mentions
### Visual Elements
- Charts: [count] ([types])
- Images: [count]
- YouTube videos: [count] ([titles])
### Ready for
- `/blog analyze <file>` to verify final score
- Publishing / deploying
Before presenting the rewritten draft, run the 5-gate delivery contract per skills/blog/references/blog-delivery-contract.md. The contract applies to rewrites the same way it applies to new posts: the user is never the first reviewer.
Steps:
python3 scripts/generate_hero.py --topic "<new title>" --tags "<tags>" --out <folder>.python3 scripts/blog_render.py --md <slug>.md --out-dir <folder> to refresh the .html and .pdf from the updated .md.blog-reviewer agent against the rendered .html. Threshold: score 90/100 or higher AND zero P0 issues.python3 scripts/blog_preflight.py --draft <folder> --strict. Exit 0 = ship; exit 1 = block.<folder>/preflight-report.json.Rewrites have a higher implicit threshold because the existing draft was presumably already published. Re-presenting something worse than the original is not acceptable. If the rewritten score is lower than the original score, that itself is a P0 condition.
When invoked as /blog update <file>, focus on freshness:
lastUpdated in frontmatterlastUpdated/dateModified; do not rewrite to hit a percentage-change threshold.Take agricidaniel/blog-rewrite from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.