seo: post-cliff stabilization (FAQ schemas + CTR + entity drift fixes)#523
Conversation
…est-Builders Phase 1 of post-Apr-24-cliff stabilization patch. Tier 2 page additions only — no Tier 1 surface touched. Per Gemini Deep Research 2026-05-11, FAQPage JSON-LD drives 3.1x AI Overview citation rate even after the 2026-05-07 visual rich-result deprecation. Answer-first blocks (40-60 words, standalone factual) target the +47% citation lift from extractable passages under H1. - FlowCV: new FAQPage schema (7 entries answering top GSC queries — "is FlowCV legit", "is FlowCV free", "FlowCV vs alternatives", etc.); matching on-page FAQ section so JSX text mirrors schema; answer-first block above the verdict box; bump lastUpdated + comparison dateModified to 2026-05-11. - Best-Builders: extract inline FAQ array to BEST_BUILDERS_FAQS const; generate FAQPage JSON-LD via Helmet; answer-first block above intro; bump lastUpdated to 2026-05-11. Verified: tsc --noEmit clean; vitest 1437 tests pass; vite build succeeds; all 10 Phase 1 markers present at source.
Closes governance drift detected during sameAs audit on 2026-05-11. Per protected-pages.md "Brand Defence Notes", every entity profile URL must appear both in structured data AND as a crawlable HTML link. - github.com/aafre/resume-builder was in all 3 schemas (index.html WebApplication, Organization, schemaGenerators.ts SoftwareApplication) but missing from Footer crawlable links. - trustpilot.com/review/easyfreeresume.com appeared only as a styled trust badge with FaStar icon; missing as a plain text anchor for crawlers. Badge retained alongside new text link.
…cations Per protected-pages.md "Brand Defence Notes", the YouTube tutorial video "This Free Resume Builder Shouldn't Exist" (uploaded 2026-02-28) must be referenced in entity cross-references. It was already linked from /about embed but absent from all sameAs arrays — drift detected on 2026-05-11. - index.html WebApplication sameAs (line 208) - index.html Organization sameAs (line 230) - schemaGenerators.ts SoftwareApplication sameAs (line 29) Strengthens entity-resolution signal for Knowledge Graph and AI Overview citation. Per Gemini Deep Research 2026-05-11, YouTube accounts for 18.2% of AIO citations in 2026, overtaking Reddit in many verticals.
There was a problem hiding this comment.
Code Review
This pull request implements several SEO improvements and content updates, such as adding FAQ structured data and 'answer-first' blocks to blog posts, updating social links in the footer and schema, and refining SEO metadata for job pages. Feedback was provided to address inconsistencies between the sitemap's last modification dates and the component update dates to ensure accurate search engine indexing.
| { loc: '/blog/introducing-prepai-ai-interview-coach', priority: 0.5, changefreq: 'monthly', lastmod: '2026-01-25' }, | ||
| { loc: '/blog/how-to-write-a-resume-guide', priority: 0.5, changefreq: 'monthly', lastmod: '2026-03-22' }, | ||
| { loc: '/blog/best-free-resume-builders-2026', priority: 0.5, changefreq: 'monthly', lastmod: '2026-03-05' }, | ||
| { loc: '/blog/best-free-resume-builders-2026', priority: 0.5, changefreq: 'monthly', lastmod: '2026-04-11' }, |
There was a problem hiding this comment.
The lastmod date for this blog post in the sitemap (2026-04-11) is inconsistent with the lastUpdated date defined in the component (2026-05-11). Since this PR introduces significant content changes (FAQ schema and answer-first blocks) as of May 11, the sitemap should be updated to reflect this to ensure search engines are correctly notified of the refresh, which is critical for maintaining the SEO value of high-ranking pages.
| { loc: '/blog/best-free-resume-builders-2026', priority: 0.5, changefreq: 'monthly', lastmod: '2026-04-11' }, | |
| { loc: '/blog/best-free-resume-builders-2026', priority: 0.5, changefreq: 'monthly', lastmod: '2026-05-11' }, |
References
- Preserve and optimize SEO ranking signals by ensuring metadata like lastmod dates are accurate and synchronized with content updates.
There was a problem hiding this comment.
@gemini-code-assist Good catch — fixed in 35d5a938. Both Best-Builders and FlowCV lastmod entries updated to 2026-05-11 to match the content refresh shipped in 2472c5e. Per CLAUDE.md "Blog Page Update Checklist" these must stay synced.
There was a problem hiding this comment.
Thank you for the update, @aafre. I have verified that the lastmod dates in resume-builder-ui/src/data/sitemapUrls.ts for /blog/best-free-resume-builders-2026 and /blog/flowcv-vs-easy-free-resume have been synchronized to 2026-05-11 in accordance with the project's SEO checklist. This ensures search engines receive consistent signals regarding the recent content refresh.
| { loc: '/blog/enhancv-vs-easy-free-resume', priority: 0.5, changefreq: 'monthly', lastmod: '2026-02-04' }, | ||
| { loc: '/blog/canva-resume-vs-easy-free-resume', priority: 0.5, changefreq: 'monthly', lastmod: '2026-02-10' }, | ||
| { loc: '/blog/flowcv-vs-easy-free-resume', priority: 0.5, changefreq: 'monthly', lastmod: '2026-02-04' }, | ||
| { loc: '/blog/flowcv-vs-easy-free-resume', priority: 0.5, changefreq: 'monthly', lastmod: '2026-04-11' }, |
There was a problem hiding this comment.
The lastmod date for the FlowCV comparison page in the sitemap (2026-04-11) does not match the lastUpdated date in the component (2026-05-11). These should be synchronized to provide accurate signals to search engine crawlers regarding the latest content updates, supporting the repository's priority of preserving SEO integrity.
| { loc: '/blog/flowcv-vs-easy-free-resume', priority: 0.5, changefreq: 'monthly', lastmod: '2026-04-11' }, | |
| { loc: '/blog/flowcv-vs-easy-free-resume', priority: 0.5, changefreq: 'monthly', lastmod: '2026-05-11' }, |
References
- Maintain accurate sitemap metadata to ensure search engines receive correct signals, consistent with the goal of protecting search engine ranking signals.
There was a problem hiding this comment.
@gemini-code-assist Fixed in 35d5a938 along with the Best-Builders entry. Both lastmod dates now match the content's lastUpdated of 2026-05-11.
There was a problem hiding this comment.
Thank you for the update, aafre. I have verified the changes in 35d5a938 and the sitemap lastmod dates are now correctly synchronized with the content's lastUpdated values. This ensures search engines receive consistent signals for these pages.
…dates Both pages were updated 2026-05-11 with FAQPage schema and answer-first GEO blocks (commit 2472c5e), but the sitemap lastmod entries still showed 2026-04-11 from the prior CTR pass. Per CLAUDE.md "Blog Page Update Checklist", dateModified and sitemap lastmod must be synced so search engines crawl the refreshed content. Caught by gemini-code-assist review on PR #523.
|
Shipped via #532 (post-cliff bundle → main). Closing. |
Summary
Phase 1 of post-Apr-24-cliff SEO/GEO stabilization. Fresh branch off
main, parkingrelease/v3.25.0-integration(246 files of unrelated template-engine/LaTeX work). Target: v3.24.1 patch release.Current state (May 11, GSC): YELLOW — 5–13 clicks/day for 17 days post-cliff. 71% branded share. Homepage holding (40 clicks/7d); content cluster decimated (claude-prompts 205 → 3).
Diagnosis (per
seo-tracking/post-march2026-recovery-plan.md+ Gemini Deep Research v2/v3): March 2026 Google core update late-stage recalibration + AI Overview absorption + competitor brand-bidding (Mistake #5 RECURRENCE). Two-problem reframe still holds.What this PR ships
4 atomic commits, 5 files changed, 120 insertions:
605ece5— Cherry-pick PR fix(seo): post-v3.24.0 CTR optimizations for high-impression pages #458 (d9a671a): CTR meta rewrites for FlowCV + Best-Builders + 20+ keyword pages. Was production-ready and sitting unmerged since April 11.2472c5e— FAQPage schema + answer-first GEO blocks on/blog/flowcv-vs-easy-free-resumeand/blog/best-free-resume-builders-2026. Per Gemini's 2026 GEO data: FAQPage JSON-LD drives 3.1× AI citation rate even after the 2026-05-07 visual rich-result deprecation. Answer-first blocks (40–60 words, standalone factual) target the +47% citation lift from extractable passages.c55761b— Footer entity drift fix:github.com/aafre/resume-builderwas in 3 schemas but missing from Footer crawlable links. Trustpilot was a styled badge with<FaStar>icon, no plain text anchor — added one. Surfaced during 2026-05-11 sameAs audit.410b5f6— Tutorial video sameAs additions:youtube.com/watch?v=JU3QgmXpfQgwas listed inprotected-pages.mdBrand Defence section as required entity reference but absent from all 3sameAsarrays. Now inindex.htmlWebApplication + Organization, andschemaGenerators.tsSoftwareApplication. Per Gemini v3: YouTube = 18.2% of AIO citations in 2026.Iron Rules respected (per
post-march2026-recovery-plan.md)VITE_ENABLE_EXPLICIT_ADSstays false — CWV risk during recalibration)Deferred from this patch
/about(Phase 1 step 5) — user weighing personal-exposure tradeoff per Gemini v3 threat model. Design preserved in plan file for activation when ready.c818a33,64bb155,2645fa4,182db46) — turned out to be tightly coupled togetActiveBlogPosts()from the sitemap auto-include refactor, which we're explicitly deferring (regresses Tier 1lastmodduring recalibration window). Will ship as a follow-up patch bundled properly.Test plan
tsc --noEmitcleanvitest run— 1437 passed, 23 skipped, 0 failednpm run buildsucceeds; sitemap regenerated (120 URLs)eslinton touched files — only pre-existing unused-_inwrapInGraph(line 151), not introduced here/blog/flowcv-vs-easy-free-resumeand/blog/best-free-resume-builders-2026/, FlowCV, Best-Builders,/free-resume-builder-no-sign-up— confirm "Good" on desktop + mobile (no CWV regression from JSX additions)mistakes-learned.mdMistake Added tests for the modern UI #8 lesson 14Rollback trigger
Per recovery plan iron rule 10: if any modified page drops >5 positions vs 2026-05-11 GSC baseline within 14 days, revert the specific change. Each commit is atomic and independently revertable.
References
~/.claude/plans/extract-gsc-data-and-binary-babbage.md(approved 2026-05-11)seo-tracking/post-march2026-recovery-plan.md(Phase 1 of multi-phase recovery)seo-tracking/changelog.md2026-05-03 entryseo-tracking/mistakes-learned.mdMistake Updated actions #5 RECURRENCE + Mistake Added tests for the modern UI #8