Skip to content

Commit eea9607

Browse files
Programcodeclaude
andcommitted
Merge 13 overlapping guide pages into 10 survivors
Thirteen guide pages repeated the search intent of another page with about 1,700 characters of shared template copy. Each now 301-redirects, path-exact and with or without a trailing slash, to the page that covers the same search: - online-debate-timer-tool -> online-debate-timer - debate-argument-flowchart-tool -> argument-flowchart - debate-weighing-guide, debate-impact-calculus -> how-to-weigh-in-debate - debate-cross-examination-tips -> how-to-cross-examine-in-debate - debate-note-taking-flowing -> how-to-flow-in-debate - debate-case-generator -> ai-debate-case-generator - how-to-write-a-rebuttal-speech -> how-to-practice-rebuttals - wsdc-debate-practice -> world-schools-debate - ai-debate-evidence-research, debate-evidence-verification -> debate-evidence-finder - debatelab-alternatives, ai-tools-for-debate-students -> best-ai-debate-tools The sitemap drops from 52 to 39 URLs. The seven thin survivors get long-form copy in seo_guides.py that combines what the merged pages said and describes the real tools: the timer's four presets and signals, the flowchart's node and link types, Crossfire, Factoids and the Library. how-to-practice-rebuttals gains a section on the shape of a rebuttal speech, and best-ai-debate-tools an FAQ on alternatives. Each changed guide sets its own "modified" date, so dateModified and sitemap lastmod move only on those nine pages. ai-debate-case-generator takes the retired case generator's place in PAGES and in the nav, so it keeps that page's sitewide links. Removing pages shifts the related-guide links on every page; titles, canonicals and JSON-LD of the other pages are unchanged. llms.txt and humans.txt point at the surviving case generator. The Vercel config test now also checks that each guide redirect lands on a live page in one hop, and that no page is left behind or links to a retired slug. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 0e21055 commit eea9607

56 files changed

Lines changed: 689 additions & 668 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎docs/operations.md‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ Vercel builds and serves the frontend from the Git repository. Merging to `main`
4444
- rewrites of the app routes (`/app`, `/login`, `/share`, `/expocit/sources`) to `app-shell.html`; any other path that is not a file gets `404.html` with a real 404 status;
4545
- `trailingSlash: false`, which 308-redirects `/app/settings/` to `/app/settings` before routing, since rewrite and redirect sources match exactly;
4646
- 301 redirects from the retired brand pages (`/debatelab`, `/debatelab-by-programcode`, and the rest) to `/`;
47+
- 301 redirects from retired guide slugs to the guide that replaced them, such as `/debate-weighing-guide` to `/how-to-weigh-in-debate`, one rule each for the path with and without a trailing slash;
4748
- no-cache headers for `/`, `index.html`, `app-shell.html`, `theme-init.js`, and `sw.js`, and immutable caching for hashed `/assets/`;
4849
- `noindex` headers for `/app`, `/login`, and `/share` routes;
4950
- Content Security Policy and the other response security headers, including the `Permissions-Policy` that allows the microphone for the app's own origin only.
@@ -52,7 +53,9 @@ After `vite build`, [`scripts/prerender.mjs`](../scripts/prerender.mjs) renders
5253

5354
[`scripts/sitemap.mjs`](../scripts/sitemap.mjs) then writes `dist/sitemap.xml` from every page in `dist/` that names itself as canonical and is not `noindex`. Each `<lastmod>` is the `dateModified` the page declares in its JSON-LD: the guide pages' `CONTENT_DATE` in [`scripts/generate_seo_content.py`](../scripts/generate_seo_content.py), the legal pages' "last updated" dates, and the landing page's last source commit. A page without a date is listed without `<lastmod>`.
5455

55-
The guide pages in `public/<slug>/index.html` are generated, not hand-edited: run `python3 scripts/generate_seo_content.py` and commit its output. Short pages live in its `PAGES` list; pages with long-form copy, their own highlight-card descriptions, and their own FAQs (which also feed the page's FAQPage JSON-LD) live in [`scripts/seo_guides.py`](../scripts/seo_guides.py). Keep `PAGES` in order, because each page's related-guide links are picked by position.
56+
The guide pages in `public/<slug>/index.html` are generated, not hand-edited: run `python3 scripts/generate_seo_content.py` and commit its output. Short pages live in its `PAGES` list; pages with long-form copy, their own highlight-card descriptions, and their own FAQs (which also feed the page's FAQPage JSON-LD) live in [`scripts/seo_guides.py`](../scripts/seo_guides.py). Keep `PAGES` in order, because each page's related-guide links are picked by position. A guide entry can set its own `modified` date, which overrides `CONTENT_DATE` for that page alone.
57+
58+
To retire a guide, delete its `PAGES` entry and its `public/<slug>/` folder (the generator never deletes), add its redirects to `vercel.json`, and repoint any link to it. Two guides that answer the same search should become one page, not two thin ones.
5659

5760
The site origin, product name, brand line, and organization name live in [`src/config/site.json`](../src/config/site.json). The app's head tags, the prerender and sitemap scripts, and the guide generator all read it, and guide copy names the product with a `{product}` token. Do not hardcode those strings in new code or copy.
5861

‎public/ai-debate-case-generator/index.html‎

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@
1919
</head>
2020
<body>
2121
<main class="wrap">
22-
<nav class="nav" aria-label="Primary"><a class="brand" href="/">DebateLab by Pi-Stack</a><div><a href="/ai-debate-practice">AI practice</a><a href="/debate-case-generator">Case generator</a><a href="/debate-rebuttal-practice">Rebuttal practice</a><a href="/debate-evidence-finder">Evidence finder</a><a href="/app">Open app</a></div></nav>
22+
<nav class="nav" aria-label="Primary"><a class="brand" href="/">DebateLab by Pi-Stack</a><div><a href="/ai-debate-practice">AI practice</a><a href="/ai-debate-case-generator">Case generator</a><a href="/debate-rebuttal-practice">Rebuttal practice</a><a href="/debate-evidence-finder">Evidence finder</a><a href="/app">Open app</a></div></nav>
2323
<div class="breadcrumb"><a href="/">DebateLab</a> / AI Debate Case Generator with Citations</div>
2424
<section class="hero"><span class="eyebrow">Tool guide</span><h1>AI Debate Case Generator with Citations</h1><p class="lead">Draft faster, verify carefully, and walk into the round with a structured case.</p><div class="cta"><a class="btn primary" href="/app">Start practicing</a><a class="btn secondary" href="/">See DebateLab</a></div></section>
2525
<section class="grid" aria-label="Highlights"><article class="card"><h3>Structured case drafts</h3><p class="muted">Each draft has a thesis, a framework, contentions with warrants and impacts, the case the other side is likely to run, and counters to it.</p></article><article class="card"><h3>Evidence leads</h3><p class="muted">Turn on web research to get sources alongside the draft, then check each one against the original before it goes on a card.</p></article><article class="card"><h3>Format templates</h3><p class="muted">Set the format and your role so the draft fits British Parliamentary, Policy, a classroom debate or a custom structure.</p></article></section>
2626
<article class="article section"><h2>What the case generator produces</h2><p>Generate takes the motion from your Current Debate and returns a structured case, not a block of prose. Every draft has the same parts, so you always know where to look:</p><ul><li>Thesis: the one-sentence reason your side should win.</li><li>Framework: how the judge should decide the round, such as the definition, the burden or the weighing standard you will argue for.</li><li>Contentions: each with a claim, the warrant that makes it true, and the impact that makes it matter.</li><li>Predicted opponent case: the arguments a strong team on the other side is likely to run.</li><li>Counters: first responses to that predicted case.</li></ul><p>Because the opponent case is part of the draft, you start preparing rebuttals at the same time as your own case. When one section is weak, regenerate just that section; the rest of the case stays where it is. Finished cases export to PDF or DOCX.</p><h2>From motion to verified case in seven steps</h2><ol><li>Start a Current Debate with the exact motion wording. Small wording changes, such as should against would, change the burden.</li><li>Add the sources you already trust to the Library. Active sources are used when the case is generated, so the draft builds on your research instead of ignoring it.</li><li>Set the format and your role, and add instructions if you need a particular angle, for example a principled argument or an economic one.</li><li>Turn on web research if you want evidence leads, and generate the case.</li><li>Read the predicted opponent case first and decide which of your contentions actually answers it. Cut contentions that do not clash with anything.</li><li>Regenerate any section that is vague, then verify every evidence lead against its original source.</li><li>Rewrite the final case in your own words and time a full reading of it before you call it ready.</li></ol><h2>Worked example: a generated case, and what the debater changed</h2><div class="card"><h3>Motion: This house would introduce a four-day school week</h3><p><strong>Side:</strong> Proposition.</p><p><strong>Thesis:</strong> A shorter week concentrates instruction where it works and gives schools a recruitment advantage they cannot buy with pay.</p><p><strong>Framework:</strong> The round should be decided by learning outcomes for students across the school, not by the convenience of any single group.</p><p><strong>Contention 1:</strong> Teacher retention. Claim: a four-day week keeps experienced teachers. Warrant: schools competing for staff cannot always raise salaries, but they can offer time. Impact: experienced teachers are among the strongest in-school drivers of student learning.</p><p><strong>Predicted opposition:</strong> Childcare costs for working parents on the fifth day, and lost instruction time for students who are already behind.</p><p><strong>Counter:</strong> Schools can run an optional fifth-day programme for families who need it, and longer remaining days protect total instruction hours.</p><p><strong>Evidence lead to verify:</strong> Research on districts that moved to four-day weeks, looking at attendance, teacher turnover and test results. Read the methodology: results differ between rural and urban districts.</p><p><strong>What the debater changed:</strong> Cut a weaker cost-saving contention the opposition would easily mitigate, and moved the instruction-hours counter into the first speech so it was on the table before the opposition raised it.</p></div><p>The draft gave the debater a full structure in minutes. The judgement calls, which contention to cut and where to pre-empt the opposition, were still theirs, and that is where the round was won.</p><h2>Checking citations before they reach a card</h2><p>Generated evidence is a starting point. Before any source goes into a speech:</p><ul><li>Open the original. If you cannot find it, do not use it.</li><li>Find the exact sentence that supports your claim, and check that the surrounding paragraph does not qualify it.</li><li>Check the date, the author and who published it. A think-tank brief and a peer-reviewed study carry different weight.</li><li>Make sure the evidence supports your link, not just your topic. A study showing four-day weeks save money does not prove they improve learning.</li><li>Record the full citation so you can produce it if an opponent or judge asks.</li></ul><p>Factoids is useful here: give it a single statement from your case and it researches that statement and suggests searches you can use to confirm it.</p><h2>Adapting a generated case to your format</h2><h3>World Schools (WSDC)</h3><p>A WSDC case is split between the first and second speakers, with a team line both can repeat. Use the thesis as the team line, give the first speaker the framework and the first contention, and keep the strongest contention for the second speaker so the case builds rather than front-loads. Generate with the custom format and say this in the instructions.</p><h3>British Parliamentary (BP)</h3><p>Set the format to British Parliamentary and choose your role. Opening government needs a clear definition and mechanism in the draft. Closing teams should treat the generated case as material the opening half will probably use, and look in the predicted opponent case for an extension nobody else in the room is likely to run.</p><h3>Public Forum (PF)</h3><p>A PF constructive is four minutes, which usually means two contentions with evidence, not four. Since PF teams often find out their side shortly before the round, generate both sides of the resolution in the same debate and prepare the counters for each.</p><h3>Lincoln-Douglas (LD)</h3><p>In LD, the framework section becomes your value and criterion. Check that every contention explicitly links back to the criterion; if one does not, regenerate it with an instruction to tie it to the standard you chose. Prepare a short defence of the criterion itself, because the negative will often attack it first.</p><h2>Mistakes to avoid with generated cases</h2><ul><li>Reading the draft in round. Judges hear the difference between a case you wrote and one you are reading for the first time.</li><li>Keeping every contention. Three well-defended points beat five thin ones.</li><li>Skipping the predicted opponent case. It is the fastest route to your rebuttals.</li><li>Citing an evidence lead you never opened.</li></ul></article>
27-
<section class="section article"><h2>Related DebateLab guides</h2><div class="links"><a href="/ai-debate-practice">AI Debate Practice Platform</a>
28-
<a href="/debate-case-generator">AI Debate Case Generator</a>
29-
<a href="/debate-rebuttal-practice">Debate Rebuttal Practice &amp; Argument Analyzer</a>
30-
<a href="/ai-debate-coach">AI Debate Coach for Strategy, Structure &amp; Practice</a>
31-
<a href="/debate-evidence-finder">Debate Evidence Finder for Source-Backed Cases</a>
32-
<a href="/argument-flowchart">Argument Flowchart Tool for Debate Prep</a>
33-
<a href="/online-debate-timer">Online Debate Timer for Practice Rounds</a>
34-
<a href="/how-to-write-a-debate-case">How to Write a Debate Case Guide</a></div></section>
27+
<section class="section article"><h2>Related DebateLab guides</h2><div class="links"><a href="/public-forum-debate">Public Forum Debate Prep with AI</a>
28+
<a href="/lincoln-douglas-debate">Lincoln-Douglas Debate Prep with AI</a>
29+
<a href="/policy-debate">Policy Debate Prep with AI</a>
30+
<a href="/british-parliamentary-debate">British Parliamentary Debate Prep with AI</a>
31+
<a href="/congress-debate">Congressional Debate Prep with AI</a>
32+
<a href="/world-schools-debate">World Schools Debate Prep with AI</a>
33+
<a href="/how-to-weigh-in-debate">How to Weigh in Debate: Magnitude, Probability, Timeframe</a>
34+
<a href="/how-to-cross-examine-in-debate">How to Cross-Examine in Debate Guide</a></div></section>
3535
<section class="section faq article"><h2>Frequently asked questions</h2><details><summary>Does the case generator write a complete case?</summary><p>It writes a complete draft: thesis, framework, contentions with warrants and impacts, the likely opposing case and counters. Treat it as a structure to cut, verify and rewrite in your own words.</p></details><details><summary>Are the generated citations reliable?</summary><p>They are research leads. With web research on, the draft includes sources, but you should open every one, confirm the exact claim and record the full citation before using it.</p></details><details><summary>Which debate formats does the generator support?</summary><p>You can set the format to British Parliamentary, Policy, Classroom or Custom and choose your role. For WSDC, Public Forum and Lincoln-Douglas, use Custom and describe the structure in the instructions.</p></details><details><summary>Can I change one part of a case without starting over?</summary><p>Yes. Regenerate a single section and the rest of the case stays on screen unchanged.</p></details><details><summary>Can I export a generated case?</summary><p>Yes. Cases export to PDF and DOCX, and cases created in a Current Debate are saved to it automatically.</p></details></section>
3636
</main>
3737
<footer class="footer"><div class="wrap">DebateLab by Pi-Stack: <a href="/">Home</a> / <a href="/privacy">Privacy</a> / <a href="/terms">Terms</a> / <a href="/sitemap.xml">Sitemap</a></div></footer>

0 commit comments

Comments
 (0)