Internal Link Rot: Articles Point to Renamed or Deleted Slugs
Half your internal links 404 because you renamed slugs without redirects. Add host-level 301s, run lychee in CI, and fail prebuild on any link that points at a slug that does not resolve.
Articles tagged with #Site quality
Half your internal links 404 because you renamed slugs without redirects. Add host-level 301s, run lychee in CI, and fail prebuild on any link that points at a slug that does not resolve.
ZH pages carry a canonical that points at the EN version, so Google deindexes the ZH variant. Fix: self-referential per-page canonical, verify with curl + view-source.
Your FAQPage JSON-LD looks right but the FAQ rich result never shows. As of May 7 2026 Google deprecated FAQ rich results for everyone. Confirm it, then decide keep vs remove.
Hreflang pairs don't reciprocate, language codes don't match (zh vs zh-CN), x-default missing. Auto-emit from translationKey, validate with the Merkle hreflang tester, fix at the source.
Hundreds of images with no alt attribute hurt accessibility, image search, and AdSense quality. Audit by category, backfill by traffic, then fail the build on regressions.
Your publishedAt never moves so SERP shows an old date. Add updatedAt, show ONE date, match schema to the visible date, and bump only on substantial edits.
Tag pages render but have 0 published articles after a cleanup. Audit tag counts, set a minimum-per-tag prebuild rule, and 410 the empty archives so Google drops them fast.
Solo edits drift EN and ZH apart — sections, code blocks, links diverge. Audit pairs by structure, diff bilingual content, and enforce translate-as-you-edit in CI.
AI articles read fine but rank position 47 and get AdSense-rejected for "low value content." The fix is information gain: add 3 of 6 concrete additions (experience, data, contrarian POV, expert quote, proprietary screenshot, unique synthesis).
"We have 800 articles!" — but 60% are bilingual duplicates, drafts, or thin redirects. Count what matters: unique, indexable, substantive URLs.
EN updated 5 times, ZH once: stale screenshots, broken cross-links, hreflang ignored. Audit drift with a script, decide per pair, automate the sync. June 2026.
Your category page is a title plus cards, so Google sees navigation, not content. Add a 300-word editorial intro, a curated "start here," and a real take to turn it into a rankable hub article.
Pages still marked `draft: true` got built, deployed, and indexed with placeholder text. Audit, deindex with 410, then add CI guards so the build can't produce a draft in production.
An audit flags 80 pages sharing one `<title>` — usually template fallback, pagination, or a bilingual collision. Diagnose the bucket, rewrite for specificity, and add a CI check so it never recurs.
200 outbound links on the homepage split its PageRank ~200 ways. Cut to ~30 deliberate destinations and route long lists through index pages so authority concentrates where you want rankings.
Top 10 pages hold 80% of internal inlinks; 200 pages have 0-2. Audit inlinks in Screaming Frog, add body-text links to the starved 20%, and replace 'latest 5' with a smart related widget.
500 articles, top 20 pages get 80% of impressions, the tail gets 0-5/month. Power-law is normal; a dead tail is the bug. Validate keywords, fix intent and links, and tell impression-dead from click-dead in the AI Overviews era.
Pages with zero internal inbound links rarely rank. Find true orphans with a crawler or a script, then decide per page: reintegrate with body links or remove with 410/noindex.
"Crawled — currently not indexed" balloons to thousands of `?sort=`, `?page=`, tag-combo URLs. Triage by source, block via robots.txt / canonical / noindex, and reclaim crawl budget — without the common mistake that hides your noindex tag.
100 articles in 3 months, same structure and same examples? That's templated thinking, and as of 2026 it's exactly what Google's scaled-content-abuse policy targets. Audit, rotate templates, force a unique angle per piece.
Half your articles are 3+ years old and reference tools that changed. Refresh the high-traffic ones with real edits (not date-bump tricks) so they rank and get cited again.
800 tags, 600 with 1-2 articles each = 600 thin archive pages Google won't index. Set a per-tag article threshold, merge synonyms, noindex the rest, keep them out of the sitemap.
500+ pages and Google indexes few. Audit by word count + impressions, tag each page expand / merge / noindex / 410, and cut the weakest 20-40% to lift site-wide quality.
1 pillar + 2 supporting articles isn't a cluster — it's a stub. Real clusters run 8-12 supporting pages, ship over 2-3 months, and link bidirectionally. Here's how to design, build, and wire one.