Blog Rewriter: Optimize Existing Posts
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:
references/quality-scoring.md- 5-category scoring (Content 30, SEO 25, E-E-A-T 15, Technical 15, AI Citation 15)references/eeat-signals.md- Experience, expertise, authority, trust markersreferences/internal-linking.md- Linking strategy and anchor text rulesreferences/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)
Cross-reference
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.
Workflow
Phase 1: Audit (Read-Only)
- Read the blog post - Detect format (MDX, markdown, HTML)
- Run the quality checklist against
references/quality-scoring.md:- Count fabricated vs sourced statistics
- Check answer-first formatting (H2 -> stat in first sentence?)
- Count images and charts (type diversity?)
- Measure paragraph lengths (any > 150 words?)
- Check heading hierarchy (H1 -> H2 -> H3, no skips?)
- Look for FAQ schema
- Check freshness signals (lastUpdated, dateModified)
- Assess self-promotion level
- Evaluate citation tier quality
- AI content detection scan:
- Burstiness score - Measure sentence length variance across the post. Low 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.
- Known AI phrase scan - Check for these high-frequency AI phrases:
- "in today's digital landscape", "it's important to note", "dive into"
- "game-changer", "navigate the landscape", "revolutionize", "seamlessly"
- "cutting-edge", "harness the power of", "leverage" (as verb)
- "delve", "crucial", "elevate", "foster", "landscape" (overused)
- "multifaceted", "robust", "tapestry", "embark"
- Full list in
agents/blog-writer.md
- Vocabulary diversity - Calculate Type-Token Ratio (TTR): unique words / total words. Low TTR (< 0.40) suggests AI-generated repetitive phrasing. Target TTR > 0.50 for natural prose.
- AI content percentage estimate - Based on burstiness, phrase density, and TTR, estimate what percentage of the content reads as AI-generated (0-100%). Report as: "AI content estimate: ~X%"
- Second-order structural reflex scan (v1.8.0) - The first-order checks above
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:- Question-cadence H2s above 70% of headings
- Three or more "Here..." paragraph openers
- Three-clause sentence rhythm above 50% in any 200-word window
- More than 2 hedge words ("may," "often," "typically," "generally") in any 20-word span
- Symmetric-list bloat (list-item word-count SD below 5)
- More than 2 wrap-up rhetorical questions ("What does this mean for...?")
- More than half of H2 openers starting with a transition word
- "The key insight is..." or "What's important here is..." as sentence openers
- Listicle pre-list intro above 250 words
- Opening-word repetition: top three first-words above 25% share
- Paragraph-shape SD below 25 (visual monotony)
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.mdfor why the labels diverged in v1.8.1.
- Video embed check:
- Count existing YouTube embeds in the post
- If 0 embeds, flag: "No video embeds. YouTube has the strongest AI visibility correlation (0.737)"
- If present, check: lazy loading? aria-labels? noscript fallback? VideoObject schema?
- Cannibalization check:
- Identify the post's primary keyword from title, H1, and first paragraph
- Search the blog directory for other posts targeting the same keyword:
- Grep headings and meta descriptions across all blog posts
- Flag any posts with significant keyword overlap
- If cannibalization found, report:
- Which posts compete for the same keyword
- Recommend: merge (combine into one stronger post) or differentiate (shift one post to a related but distinct keyword)
- Calculate current score across 5 categories:
- Score across 5 categories (Content Quality 30, SEO Optimization 25, E-E-A-T Signals 15, Technical Elements 15, AI Citation Readiness 15)
- Total: 0-100
- Present audit summary with specific findings, AI detection results, video status, cannibalization status, and score
- Enter plan mode - Present section-by-section optimization plan
Wait for user approval before proceeding.
Phase 2: Research
- Identify the blog's core topic from existing content
- Find replacement statistics for any fabricated/unsourced data:
- Search:
[topic] study 2025 2026 data statistics - Target tier 1-3 sources only
- Search:
- Find images if post has fewer than 3:
- Pixabay:
site:pixabay.com [topic keywords] - Unsplash:
site:unsplash.com [topic keywords] - Verify each URL returns HTTP 200
- If nanobanana-mcp is configured, offer AI generation for missing/insufficient images via
blog-image
- Pixabay:
- Plan charts if post has fewer than 2:
- Identify data suitable for visualization
- Select diverse chart types
Phase 3: Chart Generation (Built-In)
When the post needs more visual elements, invoke the blog-chart sub-skill:
- Select chart type using the diversity rule (no repeated types per post)
- Pass: chart type, title, data values, source, platform format
- Embed the returned SVG directly within a
<figure>wrapper - Target 2-4 charts per 2,000-word post
See references/visual-media.md for chart type selection and styling rules.
Phase 4: Content Rewrite
Apply changes in this order:
4a. Preserve What Works
- Keep the author's voice and unique perspective
- Preserve original insights and first-hand experience
- Keep existing quality images and charts
- Maintain internal links
4b. Fix Frontmatter
- Add
lastUpdated: "YYYY-MM-DD"(today's date) - Keep original
dateunchanged - Fix meta description: fact-dense, 150-160 chars, includes 1 statistic
- Add
coverImage+coverImageAlt+ogImageif missing- Search Pixabay/Unsplash/Pexels for wide hero image (1200x630)
- Or generate custom SVG cover via
blog-chart(text-on-gradient with key stat) - Or generate custom AI image via
blog-imagesub-skill (if nanobanana-mcp configured)
- Verify tags/categories are appropriate
4c. Apply Answer-First Formatting
Every H2 section MUST open with a 40-60 word paragraph containing:
- At least one specific statistic with source attribution
- A direct answer to the heading's implicit question
4d. Replace Fabricated Statistics
- Search for patterns: "X% of...", "X out of Y...", unsourced claims
- Replace with real data from tier 1-3 sources
- Always include inline attribution:
([Source Name](url), year)
4e. Improve Headings
- Convert statement headings to questions where natural (60-70% target)
- Keep 2-3 statement headings for variety
- Ensure keyword appears in 2-3 headings naturally
4f. Fix Paragraph Length
- Split any paragrap