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.
Library skill — the default version is maintained in GitHub; edits you make live in your own clone.
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 markers
- skills/blog/references/internal-linking.md - Linking strategy and anchor text rules
- skills/blog/references/visual-media.md - Image sourcing and chart styling
- skills/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:
- Count fabricated vs sourced statistics
- Check answer-first formatting (H2 -> stat in first sentence?)
- Count images and charts (type diversity?)
- Review paragraph pacing in context; record length only as a descriptive aid
- Check heading hierarchy (H1 -> H2 -> H3, no skips?)
- Check schema presence and validity, prioritizing Article/BlogPosting, Person, Organization, and BreadcrumbList; FAQPage is optional entity markup only
- Check freshness signals (lastUpdated, dateModified)
- Assess self-promotion level
- Evaluate citation tier qualityagents/blog-writer.mdskills/blog/references/ai-slop-detection.md. Flag at minimum:Wait for user approval before proceeding.
[topic] study 2025 2026 data statistics
- Target tier 1-3 sources onlyjavascript:, data:, and file: URLs
- If blog-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 unchangedcoverImage + 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.
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:
- Search 2-3 relevant videos using quality criteria from skills/blog/references/video-embeds.md
- Embed using platform-appropriate format (srcdoc lazy loading)
- Place: 1 after introduction, 1-2 in mid-article sections
- Include noscript fallback for AI crawlers
For 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. - Placed naturally within the section body, not as a separate callout
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: - Eliminate em dashes - Replace every U+2014 character with a comma, hyphen, colon, or period. Split sentences if needed. This is a project style rule. - Replace flagged phrases - Swap every detected AI phrase (from the scan in Phase 1 step 3) with a natural alternative. Examples: - "it's important to note" -> "worth noting" or "keep in mind" - "in today's digital landscape" -> "right now" or "in [specific year]" - "leverage" -> "use", "apply", "take advantage of" - "delve" -> "look at", "explore", "dig into" - "robust" -> "strong", "solid", "reliable" - "crucial" -> "key", "essential", "critical" (or restructure the sentence) - Vary sentence length deliberately - After rewriting, scan each paragraph. 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. - Use rhetorical questions sparingly - Add one only when it clarifies the reader's next decision. - Use contractions naturally - Replace formal constructions with contractions where they sound natural: "it is" -> "it's", "we have" -> "we've", "do not" -> "don't", "is not" -> "isn't". - Support first-hand language - Keep "we tested" or "in our experience" only 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, or
case study metrics the author collected first-hand
- [PERSONAL EXPERIENCE] - First-hand observations, lessons learned
- [UNIQUE INSIGHT] - Novel analysis, contrarian perspectives backed by data
If the post lacks original value markers: - Ask the author for first-hand data or experience to include - At minimum, add analytical insights that connect existing research in new ways - Target: at least 2-3 markers per post
Use HTML comments (<!-- [ORIGINAL DATA] -->) or visible callouts depending
on the post's style.
After rewriting, verify all quality gates pass:
## 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:
1. Update statistics to latest available data (2025-2026)
2. Add new developments since last update
3. Refresh images if older than 1 year
4. Update lastUpdated in frontmatter
5. Preserve the existing structure - minimize rewrites
6. Target: genuine freshness only. Replace stale statistics, add real new developments, and update lastUpdated/dateModified; do not rewrite to hit a percentage-change threshold.