agricidaniel/claude-blog-blog-rewrite
> Rewrite and optimize existing blog posts for Google SEO (May 2026 Core Update, E-E-A-T) and AI citation visibility as one SEO discipline. For AI-citation-only audit (no Google work), use blog-geo instead. Replaces fabricated statistics with sourced data, applies answer-first formatting, adds images, generates SVG charts, 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".
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 (quality follow-up, CTR audit, schema,
PAA rewording, technical audit, ChatGPT visibility) directly applicable to
rewrite work, see /blog flow optimize.
skills/blog/references/quality-scoring.md:review. It cannot determine authorship and has no pass/fail threshold.
agents/blog-writer.mdinterpret it against text length and specialist terminology.
or phrase density. These are advisory project-style observations only.
are vocabulary-level. The second-order pass reviews structural repetition
that can survive simple wording edits. Run against
skills/blog/references/ai-slop-detection.md. Flag at minimum:
Apply editorial judgment; none of these metrics changes the score or blocks delivery.
(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 only when the rewrite materially changes facts, methods, or recommendationsdate unchangedvisible content
coverImage + coverImageAlt + ogImage if missingblog-chart (text-on-gradient with key stat)blog-image sub-skill when available; record the model IDState the point of important sections early, then add the verified evidence and
context each claim needs. Do not force statistics or word bands.
publisher or document details, relevant dates, methodology, limitations, and a
stable URL when the claim requires them; do not force a fixed citation form.
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 important claims, generate or improve a self-contained explanation with
enough context and verified support to stand on its own. Do not pad every H2.
Example:
[Verified source title], a [method or sample description] published on [date],
found [specific metric] for [audience or market] ([Source name](https://example.com/full-report),
retrieved YYYY-MM-DD). In practical terms, connect the evidence to one action
the reader should take before making a claim or changing a workflow.
Do not pad explanations to a fixed length or add them solely to earn readiness
points.
Apply these transformations only where they improve the configured voice:
colon, or period. Split sentences if needed. This is a project style rule.
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.
reader's next decision.
where they sound natural: "it is" -> "it's", "we have" -> "we've",
"do not" -> "don't", "is not" -> "isn't".
when methodology, observations, or evidence can substantiate the claim.
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]
> (Use concise bullets sized to the material. Keep the summary self-contained so the 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 useful, convert it to concise Key Takeaways and
verify every factual statement is supported. Do not add a statistic merely to
fit the format.
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. Any information-gain markers identify supported original material
11. Important reusable claims are self-contained and evidence-backed
12. Internal linking zones marked or actual links present (5-10 per 2,000 words)
13. Configured project style-list terms reviewed in context
14. Sentence-length variation reviewed descriptively, with no authorship verdict
15. Contractions used naturally throughout
16. Rhetorical questions used only where useful
17. No unsupported first-hand claims
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
### Editorial Style Diagnostics
- Configured style-list terms reviewed: [N]
- Sentence-length variation: [descriptive observation]
- These observations do not infer authorship and do not affect the score.
### 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])
- Evidence-backed explanations improved: [N]
- Configured project style-list terms reviewed: [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/claude-blog-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.