Repository navigation
Merge five thin guides into their survivors and deepen the skills guides - #235
Merged
Merged
Conversation
Retire /debate-collapsing-strategy, /debate-prep-time-management, /debate-block-file-guide, /debate-pronunciation-and-delivery and /ai-vs-traditional-debate-prep with 301s to the guides that absorb them, and repoint the two tool pages that linked to them. Clash points, tournament prep, speech structure, fallacies, motion analysis and judge adaptation each get a worked example on an original motion, a table, common mistakes, a drill and their own FAQs. AI practice gains an "AI vs traditional prep" section and rebuttal practice a "Build a block file" section. The two shared default FAQs are gone: every guide must have its own, and a new test fails on a guide under 700 words or a sentence repeated on more than three guides. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Caution Review failedThe pull request is closed.
Note 🎁 Summarized by CodeRabbit Free
Comment |
scripts/__pycache__/seo_guides.cpython-312.pyc came in by mistake with the guide changes. Ignore __pycache__/ and *.pyc so a script run that imports the generator modules cannot add it again. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Programcode
added a commit
that referenced
this pull request
Oct 26, 2026
#233 and #235 deepened the guides and retired five of them. The generator keeps main's per-page FAQs, primary-source links, tables, short About block and CONTENT_DATE floor, and this branch's clusters, in-body links and entity JSON-LD. LINKS_DATE is gone: CONTENT_DATE already dates every page from 2026-10-26, which covers the shared related links. The retired slugs leave CLUSTERS; their phrases now link the guides their 301s point to. In-body links also go in list and step items, since the deepened guides put much of their prose there. GuideHub renders nothing on /es and /hu routes, which do not exist yet on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Programcode
added a commit
that referenced
this pull request
Oct 26, 2026
Conflicts resolved:
- i18n.ts: keep both default variable sets, product/brand/host from
main and trialDays/proMonthly from this branch.
- en/es/hu.json: main's new hero headline and subheadline, this
branch's {{trialDays}} trial badge.
- prerender/entry.tsx, check-site.mjs, docs/operations.md: keep both
sides (main's entity graph and FAQ checks, this branch's localized
pages and hreflang check).
GuideHub on /hu and /es now shows only the free tools at their
localized addresses, plus one link to the English guides on the home
page ("Angol nyelvű útmutatók", "Guías en inglés"). The Hungarian tool
labels use this branch's names (Vitaidőmérő, Vitatétel-generátor,
Jegyzetlap), and "cáfolást" follows the review.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Spec 2, part 2 of 2. Stacked on #233. Merge #233 first. This PR targets
main, so until #233 merges, GitHub also shows #233's commits here. This PR's own changes are the diffseo/deepen-thin-guides...seo/merge-thin-guides.What changed
5 weak pages merged into their survivors. Each gets a 301 in
vercel.jsonand an entry inretiredGuidesinsrc/test/vercel-deployment-config.test.ts. ItsPAGESandANSWERSentries and itspublic/<slug>/folder are removed, and its best material is folded into the survivor:Two tool pages linked to retired slugs: the timer page and the speech calculator page. Both now link to the survivors.
scripts/gsc_submit.pylists none of the retired URLs. It now includes the 3 survivors it was missing.6 skills pages deepened. These are clash points, tournament prep, speech structure, fallacies, motion analysis and judge adaptation. Each one has:
Prep times and speech times come from
src/lib/free-tools/formats.ts. Primary sources I opened:Drills name only real modes by their UI labels: Case Generator, Brainstorm, Factoids, Flowchart, Case Attacker, Ask Coach, Crossfire and Sparring. They also say where Sparring doesn't run a format.
The shared default FAQs are gone.
FAQSandFAQS_DATEare deleted, and the generator now refuses a guide that has no FAQs of its own. The FAQPage JSON-LD is built from the same list as the visible FAQs.New guard test:
src/test/seo/guide-content.test.ts. It runs innpm testand readspublic/<slug>/index.html, which the build copies todist/unchanged. It checks two things:<main>outside the related and About blocks.I confirmed it fails on #233's pages, where it caught 11 thin pages and the shared FAQ sentences on 15 pages, and passes here.
One decision for Adam. Three pages are exempt from the 700-word floor:
The spec didn't scope them, and padding them would mean adding pricing or competitor claims we can't source. The exemption is one
Setin the test, so it's easy to remove once those pages get real content.Word counts
Same method as #233: visible words in
<main>, leaving out the breadcrumb, related links and About aside.With #233, all 10 pages in the spec now have more than 1,000 words. Of the 31 remaining guides, only the 3 exempt pages are under 700.
301s, curled locally
I built and served this branch with
vercel dev, linked to the staging project, on 127.0.0.1, sovercel.jsonredirects ran as they do on Vercel:All 5 survivors returned 200, and an existing rule (
/debate-weighing-guide) still returned 301. Undervercel devthe bare survivor paths served the SPA shell, because Vite handles them. The generated guide HTML is whatdist/serves in production, and check-site resolves every internal link against it.Sitemap
The build lists 40 URLs, down from 45, so 5 fewer. check-site covers 43 HTML files with no problems.
For Spec 1 (
seo/internal-links-brand-entity)The cluster list in Spec 1 already leaves out all 5 retired slugs, so no cluster changes are needed. Two things to watch:
scripts/seo_guides.py, andGUIDESreplacessectionswholesale. Add in-body links there, not inPAGES, or they will be silently dropped.internal_links()is unchanged in both PRs.Review follow-up
scripts/__pycache__/seo_guides.cpython-312.pycwas committed here by mistake. It's deleted, and.gitignorenow ignores__pycache__/and*.pyc.Verification
npm run verifyran locally at this head (c349293) and passed. GitHub Actions is billing-blocked, so this is a local pass, not a CI pass.In a real browser I checked the stacked tables at 390px and the BP table at 1280px, and confirmed that
/tools/debate-timer?format=bpopens with British Parliamentary selected. I didn't run the agentic e2e suite or the verify-debatelab recipes: this PR changes no app flow, and the tool-page edits only change two link targets.🤖 Generated with Claude Code