diff --git a/docs/operations.md b/docs/operations.md index ac58849d..7b081685 100644 --- a/docs/operations.md +++ b/docs/operations.md @@ -74,6 +74,8 @@ The landing page and the free tools also exist in Hungarian and Spanish, each at The guide pages in `public//index.html` are generated, not hand-edited: run `python3 scripts/generate_seo_content.py` and commit its output. The same command writes the seven comparison and prep pages from [`scripts/seo_comparison_pages.py`](../scripts/seo_comparison_pages.py), each with its own layout, and lists them in `llms.txt`. Those pages link to `/best-ai-for-debate` while that page is still a separate draft; [`scripts/check-site.mjs`](../scripts/check-site.mjs) allows that one missing path until its file exists. 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). Each page's "Related" block shows up to six pages from its own topic cluster and one from each of two other clusters, picked from `CLUSTERS`; every page in `PAGES` must sit in exactly one cluster, and the generator stops when one does not. Paragraphs also get up to three in-body links from `LINK_PHRASES`, specific phrases first; `python3 scripts/generate_seo_content.py --links` lists the links each page got. A guide entry can set a later `modified` date for that page alone; no page is dated earlier than `CONTENT_DATE`, which covers the copy every guide shares, including the related and in-body links, so move it when `CLUSTERS` or `LINK_PHRASES` change. Sections hold paragraphs and `h3`, `steps`, `list`, `table` and `example` blocks, plus a `speech_times` block that builds the speech-times table from the free timer's formats in [`src/lib/free-tools/formats.ts`](../src/lib/free-tools/formats.ts), so the guide and the timer cannot disagree; a guide's `definition` (question, term, text) renders a definition list under the short answer and a `DefinedTerm` in its JSON-LD; paragraphs, list items and table cells can hold Markdown-style links to a site path or, for a primary source, an `https://` URL. A guide can set a `disclosure` line, shown under its byline, and a numbered list: `items` (name, URL) pairs that become an `ItemList` in its JSON-LD, each matched in order by an `h3` that starts "1. Name"; a title with `{item_count}` gets the real count, and the generator stops when the headings and `items` disagree. Every guide needs FAQs of its own in `seo_guides.py`; the generator refuses a page without them, so no two pages share boilerplate questions. [`src/test/seo/guide-content.test.ts`](../src/test/seo/guide-content.test.ts) fails when a guide has fewer than 700 words outside its related and About blocks, or when a sentence longer than 60 characters appears on more than three guides. +The AI-debate cluster (the eight pages in `pages` in [`src/config/ai-debate-cluster.json`](../src/config/ai-debate-cluster.json)) links its pages by the phrases people search for: each page gets a "More on AI debate" block from [`scripts/seo_cluster.py`](../scripts/seo_cluster.py), every `/debateowl-vs-*` page gets its own sentence from `VS_LINES` there pointing to `/best-ai-debate-tools`, and `llms.txt`, the home page's guide hub, and the English footer list the same links from the same file, and the `/tools` pages link `/ai-debate`. A link marked `"live": false` is for a page that does not exist yet and stays hidden everywhere; once the page ships, set it true, rerun the generator and commit the regenerated pages. `check-site.mjs` fails the build if it is switched on before the page exists. + Every guide opens with the reader's main question as its first H2 and an answer of at most 100 words, kept in [`scripts/seo_answers.py`](../scripts/seo_answers.py); the generator refuses a page without one or with a longer answer. Each guide shows visible "Published" and "Updated" dates (`PUBLISHED_DATE` or a `published` key, and the `modified` date) that match its Article JSON-LD. Prices and plan facts are stated "as of" the month in `factsCheckedOn` in `src/config/site.json`; move that date when you recheck them, and the pricing page's About block, `llms.txt` and the landing page follow. Every other guide has a one-line About that links to the landing page and pricing instead of repeating the plan facts. Copy in `seo_guides.py` and `seo_answers.py` that names the month itself (prices and competitor facts) needs the same edit: search those files for "As of". The generator also writes `public/llms.txt`, the plain summary for AI agents. `public/robots.txt` allows AI crawlers by name in their own group, which repeats the private-route rules because a crawler that matches a named group ignores `*`. To retire a guide, delete its `PAGES` entry, its `CLUSTERS` and `LINK_PHRASES` entries, and its `public//` 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. diff --git a/public/ai-debate-case-generator/index.html b/public/ai-debate-case-generator/index.html index 3862c3e8..8ff955db 100644 --- a/public/ai-debate-case-generator/index.html +++ b/public/ai-debate-case-generator/index.html @@ -47,6 +47,7 @@

Frequently asked questions

Does the case generator write a complete case?

It writes a complete draft: an opening, arguments with explanation, evidence and why each matters, "If they say… we answer…" replies, a closing line and the sources it cites. Treat it as a structure to cut, verify and rewrite in your own words.

Are the generated citations reliable?

They are research leads. Every draft is researched on the web and lists the sources it cites, and an argument that still needs evidence is marked Needs Source. Open every source, confirm the exact claim and record the full citation before using it.

Which debate formats does the generator support?

Set the Current Debate's format to British Parliamentary, Policy, Classroom or Custom, and Generate reads it along with the debate's Instructions. Generate's own speaker roles (introductor, R1, R2 and conclusor) follow the School 4-6-6-3 format. For WSDC, Public Forum and Lincoln-Douglas, use Custom and describe the structure in the Instructions.

Can I change one part of a case without starting over?

Yes. Regenerate a single section and the rest of the case stays on screen unchanged.

Can I export a generated case?

Yes. Cases export to PDF and DOCX, and cases created in a Current Debate are saved to it automatically.

Is there a free AI debate case generator?

DebateOwl's case generator is included in the 3-day free trial, with no credit card, and then in Pro at $5/month + tax; there is no permanent free plan. Without an account you can use the free debate timer, motion generator, flow sheet and speech time calculator, but not the case generator.

Can AI write a Public Forum case?

It can draft one. Set the Current Debate's format to Custom and describe the Public Forum structure in its Instructions, since Generate's own speaker roles follow School 4-6-6-3. A PF constructive is four minutes, which usually fits two arguments with evidence, so cut the draft to that and verify every source.

Is using an AI case generator cheating?

Using it to draft and research before a round is preparation, but check your league's and your school's rules first: most leagues forbid electronic help during a round. Verify every source, rewrite the case in your own words and make sure you can defend each argument, because a case you cannot explain is easy to beat.

+