Repository navigation
Give six more guide pages their own content - #154
Conversation
Six sitemap guides still had about 1,700 to 1,850 characters of
visible text from the shared template: /how-to-practice-rebuttals,
/ai-rebuttal-generator, /how-to-write-a-debate-case,
/debate-topics-for-students, /public-forum-debate and
/debatelab-vs-chatgpt. Each now has long-form copy in
scripts/seo_guides.py, between 6,800 and 9,300 visible characters:
- How-to steps, a worked example on a sample motion or resolution, and
PF, LD, BP and WSDC notes where they apply.
- Five page-specific FAQs, which feed both the visible FAQ and the
FAQPage JSON-LD.
- The rebuttal generator page describes what Attack actually returns.
The Public Forum page uses Sparring's 4-4-3-2 times and says the
Crossfire feature is separate from PF's crossfire periods. The
ChatGPT page compares structure, not claims about ChatGPT features.
The six PAGES entries in generate_seo_content.py now name the product
with {product}, so their titles and descriptions come from
src/config/site.json. The rendered text is unchanged.
Titles, descriptions, H1s, canonicals, the JSON-LD types and the
related-guide links are byte-identical on all six pages. CONTENT_DATE
moves to 2026-10-19, so every guide's dateModified and sitemap lastmod
change; nothing else changes on the other 43 pages.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
ℹ️ Recent review info
📝 Walkthrough
Note 🎁 Summarized by CodeRabbit Free
Comment |
Second batch after #152. Six sitemap guides still showed 1,700 to 1,850 characters of the shared template text. Each now has its own long-form copy in
scripts/seo_guides.py, with how-to steps, a worked example, format notes and five page-specific FAQs. The FAQs feed both the visible FAQ and the FAQPage JSON-LD.Visible characters in the prerendered HTML (
dist/<slug>/index.html, byte-identical topublic/<slug>/index.html), before and after:/how-to-practice-rebuttals: 1,704 to 9,285 (1,251 body words)/ai-rebuttal-generator: 1,752 to 8,289 (1,075 words)/how-to-write-a-debate-case: 1,685 to 8,854 (1,216 words)/debate-topics-for-students: 1,712 to 7,983 (980 words)/public-forum-debate: 1,839 to 7,797 (1,000 words)/debatelab-vs-chatgpt: 1,792 to 6,844 (835 words)Word counts cover the article body and highlight cards. Each page also has about 180 words of FAQ.
What the copy says
What stays the same
@typeset and the related-guide links are byte-identical tomainon all six pages. A script checked this againstgit show main:public/<slug>/index.html.PAGESentries inscripts/generate_seo_content.pynow use{product}instead of a hardcoded name, so their title and description come fromsrc/config/site.json. The rendered text doesn't change. The slugdebatelab-vs-chatgptstays as it is, because it's a URL.seo_guides.pyhas no hardcoded brand or domain strings.CONTENT_DATEmoves to 2026-10-19. It's one global, so every guide'sdateModifiedand sitemap<lastmod>change, as in Give five guide pages their own content and one brand config #152. The other 43 pages change only in that date.internal_links()strips the shorter suffix first. Fixing it would change link text on every page.Checks
Run locally on this branch:
npm run docs:check,npm run lintandnpm run typecheckpass.npm test: 304 tests pass.npm run buildpasses. The sitemap lists 52 URLs, all with a lastmod.npm run verifypasses: 304 unit, 30 collaboration and 356 Edge Function tests, the service-worker check, and 30 desktop Chromium@smokespecs. A rebuild at the final head gives the counts above.GitHub Actions did not run: every job stopped before its first step with "recent account payments have failed or your spending limit needs to be increased". The results above are a local pass at
b90184f6, not a CI pass. Both Vercel previews deployed and CodeRabbit passed.🤖 Generated with Claude Code
Summary by CodeRabbit