Skip to content

Commit 17616de

Browse files
Programcodeclaude
andcommitted
Answer "Which AI is best for debate?" on the home page and link every vs page
The home page FAQ gets the question in English, Spanish and Hungarian, with an answer that sends brainstorming to ChatGPT, Claude or Gemini and set-motion prep to DebateOwl, and links the answer page in the page's language. The FAQPage JSON-LD carries the same entry, so it now has 11 questions. A "Compare DebateOwl" row in the guide hub links all eleven /debateowl-vs-* pages from the home page. /best-ai-debate-tools now also links Debate Ladder, and llms.txt lists /ai-debate-practice by its current title. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent d23c1ef commit 17616de

9 files changed

Lines changed: 72 additions & 12 deletions

File tree

‎public/best-ai-debate-tools/index.html‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@
5454
<a href="/debateowl-vs-windebate">DebateOwl vs WinDebate</a>
5555
<a href="/debateowl-pricing">DebateOwl Pricing and Plans</a>
5656
<a href="/ai-debate-practice">AI Debate Practice for Stronger Cases, Rebuttals, and Speeches</a>
57-
<a href="/public-forum-debate">Public Forum Debate Prep with AI</a><a href="/free-vs-paid-ai-debate-tools">Free vs paid AI debate tools: what you actually get</a><a href="/chatgpt-vs-claude-for-debate">ChatGPT vs Claude for debate prep</a><a href="/ai-debate-tools-for-teachers">AI debate tools for teachers</a><a href="/best-ai-for-public-forum">Best AI for Public Forum debate</a><a href="/debateowl-vs-argufight">DebateOwl vs ArguFight: which debater should pick which</a><a href="/debateowl-vs-mindduel">DebateOwl vs MindDuel: one motion, two workflows</a><a href="/debateowl-vs-claude">DebateOwl vs Claude: the same prep night done twice</a><a href="/debateowl-vs-publicforumai">DebateOwl vs PublicForumAI: Public Forum only, or every format</a><a href="/debateowl-vs-gemini">DebateOwl vs Gemini: five assumptions about AI debate prep, checked</a><a href="/debateowl-vs-hyperwrite">DebateOwl vs HyperWrite: a one-shot writer or a practice loop</a><a href="/debateowl-vs-schoolai">DebateOwl vs SchoolAI: a checklist for debate teachers</a></nav></section>
57+
<a href="/public-forum-debate">Public Forum Debate Prep with AI</a><a href="/free-vs-paid-ai-debate-tools">Free vs paid AI debate tools: what you actually get</a><a href="/chatgpt-vs-claude-for-debate">ChatGPT vs Claude for debate prep</a><a href="/ai-debate-tools-for-teachers">AI debate tools for teachers</a><a href="/best-ai-for-public-forum">Best AI for Public Forum debate</a><a href="/debateowl-vs-argufight">DebateOwl vs ArguFight: which debater should pick which</a><a href="/debateowl-vs-mindduel">DebateOwl vs MindDuel: one motion, two workflows</a><a href="/debateowl-vs-debate-ladder">DebateOwl vs Debate Ladder</a><a href="/debateowl-vs-claude">DebateOwl vs Claude: the same prep night done twice</a><a href="/debateowl-vs-publicforumai">DebateOwl vs PublicForumAI: Public Forum only, or every format</a><a href="/debateowl-vs-gemini">DebateOwl vs Gemini: five assumptions about AI debate prep, checked</a><a href="/debateowl-vs-hyperwrite">DebateOwl vs HyperWrite: a one-shot writer or a practice loop</a><a href="/debateowl-vs-schoolai">DebateOwl vs SchoolAI: a checklist for debate teachers</a></nav></section>
5858
</main>
5959
<footer class="footer"><div class="wrap">DebateOwl: <a href="/">Home</a> / <a href="/debateowl-pricing">Pricing</a> / <a href="/privacy">Privacy</a> / <a href="/terms">Terms</a> / <a href="/about">About</a> / <a href="/contact">Contact</a> / <a href="/sitemap.xml">Sitemap</a></div></footer>
6060
</body>

‎public/llms.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ Free to use, no account needed, and they run in the browser.
7979

8080
## Guides
8181

82-
- [AI Debate Practice for Stronger Cases, Rebuttals, and Speeches](https://debateowl.com/ai-debate-practice): How to choose an AI debate practice tool, with a checklist and a comparison of DebateOwl, ArguFight, MindDuel, PublicForumAI and Debate Ladder.
82+
- [Best AI Debate Practice Tools (2026): Sparring and Timed Rounds](https://debateowl.com/ai-debate-practice): How to choose an AI debate practice tool, with a checklist and a comparison of DebateOwl, ArguFight, MindDuel, PublicForumAI and Debate Ladder.
8383
- [AI Debate Case Generator with Citations](https://debateowl.com/ai-debate-case-generator): DebateOwl turns a motion into a ready-to-read debate case: an opening, arguments with evidence, If they say… replies, a closing line and sources to check.
8484
- [Practice Rebuttals Before Your Opponent Finds the Weakness](https://debateowl.com/debate-rebuttal-practice): Paste an opposing argument into DebateOwl to find its weak links, missing evidence and logic gaps, then practice the rebuttal you would give.
8585
- [Ask an AI Debate Coach for Round-Ready Prep](https://debateowl.com/ai-debate-coach): Ask DebateOwl's AI debate coach about strategy, arguments, rebuttals and speeches, with answers tied to your own motion, side and speaker role.

‎scripts/generate_seo_content.py‎

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,7 @@ def fill(value):
275275
("/best-ai-for-public-forum", "Best AI for Public Forum debate"),
276276
("/debateowl-vs-argufight", "DebateOwl vs ArguFight: which debater should pick which"),
277277
("/debateowl-vs-mindduel", "DebateOwl vs MindDuel: one motion, two workflows"),
278+
("/debateowl-vs-debate-ladder", "DebateOwl vs Debate Ladder"),
278279
("/debateowl-vs-claude", "DebateOwl vs Claude: the same prep night done twice"),
279280
("/debateowl-vs-publicforumai", "DebateOwl vs PublicForumAI: Public Forum only, or every format"),
280281
("/debateowl-vs-gemini", "DebateOwl vs Gemini: five assumptions about AI debate prep, checked"),
@@ -833,7 +834,8 @@ def compare_llms_lines():
833834

834835
def llms_txt():
835836
"""public/llms.txt: a plain summary for AI agents, from the same facts as the pages."""
836-
guides = "\n".join(f'- [{p["h1"]}]({page_url(p["slug"])}): {p["description"]}' for p in PAGES if p["slug"] not in COMPARE_SLUGS | {"debateowl-pricing"})
837+
# A page with its own headline (the title without the brand) is listed by it, as its <title> reads.
838+
guides = "\n".join(f'- [{p.get("headline", p["h1"])}]({page_url(p["slug"])}): {p["description"]}' for p in PAGES if p["slug"] not in COMPARE_SLUGS | {"debateowl-pricing"})
837839
tools = "\n".join(f"- [{name}]({BASE}{route}): {blurb}" for route, name, blurb in FREE_TOOLS)
838840
return f"""# {BRAND}
839841

‎src/components/landing/FAQ.tsx‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,25 @@
1-
import { useTranslation } from "react-i18next";
1+
import type { ReactNode } from "react";
2+
import { Trans, useTranslation } from "react-i18next";
23
import { ChevronDown } from "lucide-react";
34
import { PREP_MODE_COUNT } from "@/components/features/tools/tool-links";
45
import { factsAsOf } from "@/lib/seo/pages";
6+
import { useRouteLanguage } from "@/lib/seo/localized-routes";
57
import { Reveal } from "./Reveal";
68

9+
/** The "which AI for debate" answer page in each landing page's language (generated by scripts/seo_comparison_pages.py). */
10+
const BEST_AI_PAGE = { en: "/best-ai-for-debate", hu: "/hu/melyik-ai-a-legjobb-vitara", es: "/es/mejor-ia-para-preparar-un-debate" } as const;
11+
712
const FAQ = () => {
813
const { t, i18n } = useTranslation();
14+
const language = useRouteLanguage();
915
const asOf = factsAsOf(i18n.language);
1016

11-
const faqs = [
17+
const faqs: Array<{ question: string; answer: ReactNode }> = [
18+
{
19+
question: t('faq.q10'),
20+
// A static page, not an app route: a plain link loads it from the server.
21+
answer: <Trans i18nKey="faq.a10" components={{ link: <a href={BEST_AI_PAGE[language]} className="font-semibold text-primary underline underline-offset-4" /> }} />,
22+
},
1223
{ question: t('faq.q6'), answer: t('faq.a6', { modes: PREP_MODE_COUNT }) },
1324
{ question: t('faq.q8'), answer: t('faq.a8') },
1425
{ question: t('faq.q7'), answer: t('faq.a7', { asOf }) },

‎src/components/landing/GuideHub.tsx‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,16 @@ const GROUPS = [
1313
{ id: "formats", paths: ["/public-forum-debate", "/lincoln-douglas-debate", "/policy-debate", "/british-parliamentary-debate", "/world-schools-debate", "/congress-debate"] },
1414
{ id: "skills", paths: ["/how-to-write-a-debate-case", "/how-to-practice-rebuttals", "/debate-clash-points", "/debate-fallacies", "/debate-judge-adaptation", "/how-to-prepare-for-a-debate-tournament"] },
1515
{ id: "tools", paths: ["/tools", "/tools/debate-timer", "/tools/debate-motion-generator", "/tools/debate-flow-sheet", "/tools/speech-time-calculator"] },
16-
{ id: "compare", paths: ["/best-ai-debate-tools", "/best-ai-for-debate", "/debateowl-vs-chatgpt", "/debateowl-vs-debate-ladder", "/free-vs-paid-ai-debate-tools", "/chatgpt-vs-claude-for-debate", "/best-ai-for-public-forum"] },
16+
{ id: "compare", paths: ["/best-ai-debate-tools", "/best-ai-for-debate", "/free-vs-paid-ai-debate-tools", "/chatgpt-vs-claude-for-debate", "/best-ai-for-public-forum"] },
17+
// Every /debateowl-vs-* page, so each one is a click from the home page.
18+
{
19+
id: "versus",
20+
paths: [
21+
"/debateowl-vs-chatgpt", "/debateowl-vs-claude", "/debateowl-vs-gemini", "/debateowl-vs-hyperwrite", "/debateowl-vs-schoolai",
22+
"/debateowl-vs-publicforumai", "/debateowl-vs-windebate", "/debateowl-vs-debateclub", "/debateowl-vs-debate-ladder",
23+
"/debateowl-vs-argufight", "/debateowl-vs-mindduel",
24+
],
25+
},
1726
] as const;
1827

1928
const TOOLS = GROUPS.find((group) => group.id === "tools")!;

‎src/locales/en.json‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,9 @@
10131013
"q8": "What does a {{product}} case include?",
10141014
"a8": "{{caseFormat}}",
10151015
"q9": "Is {{product}} free?",
1016-
"a9": "{{freePlan}}"
1016+
"a9": "{{freePlan}}",
1017+
"q10": "Which AI is best for debate?",
1018+
"a10": "It depends on the job. For brainstorming and background reading, a general chatbot such as ChatGPT, Claude or Gemini is fine. For preparing a set motion in your own format, with a case you can read out, \"If they say X, we answer Y\" replies and timed practice rounds, {{product}} is built for that. <link>Our comparison page</link> goes through the options one by one."
10171019
},
10181020
"guideHub": {
10191021
"title": "Debate guides and free tools",
@@ -1023,6 +1025,7 @@
10231025
"skills": "Skills guides",
10241026
"tools": "Free tools",
10251027
"compare": "Compare",
1028+
"versus": "Compare {{product}}",
10261029
"englishGuides": "Guides in English",
10271030
"hungarianPrep": "Debate prep with AI, in Hungarian",
10281031
"nativeAnswer": "Which AI is best for debate?",
@@ -1055,7 +1058,16 @@
10551058
"debateowl-vs-debate-ladder": "{{product}} vs Debate Ladder",
10561059
"free-vs-paid-ai-debate-tools": "Free vs paid AI debate tools",
10571060
"chatgpt-vs-claude-for-debate": "ChatGPT vs Claude for debate",
1058-
"best-ai-for-public-forum": "Best AI for Public Forum"
1061+
"best-ai-for-public-forum": "Best AI for Public Forum",
1062+
"debateowl-vs-claude": "{{product}} vs Claude",
1063+
"debateowl-vs-publicforumai": "{{product}} vs PublicForumAI",
1064+
"debateowl-vs-gemini": "{{product}} vs Gemini",
1065+
"debateowl-vs-hyperwrite": "{{product}} vs HyperWrite",
1066+
"debateowl-vs-schoolai": "{{product}} vs SchoolAI",
1067+
"debateowl-vs-argufight": "{{product}} vs ArguFight",
1068+
"debateowl-vs-mindduel": "{{product}} vs MindDuel",
1069+
"debateowl-vs-windebate": "{{product}} vs WinDebate",
1070+
"debateowl-vs-debateclub": "{{product}} vs DebateClub"
10591071
}
10601072
},
10611073
"finalCta": {

‎src/locales/es.json‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,9 @@
10131013
"q8": "¿Qué incluye un caso de {{product}}?",
10141014
"a8": "Un caso de {{product}} se escribe como lo preparan los debatientes escolares: una apertura, de dos a cuatro argumentos, cada uno con explicación, evidencia y por qué importa, respuestas «Si dicen… respondemos…», una frase de cierre y las fuentes que usó.",
10151015
"q9": "¿{{product}} es gratis?",
1016-
"a9": "La app {{product}} no tiene plan gratuito (prueba gratis de {{trialDays}} días y después ${{proMonthly}}/mes); las herramientas aparte de /es/tools son gratis y no piden cuenta."
1016+
"a9": "La app {{product}} no tiene plan gratuito (prueba gratis de {{trialDays}} días y después ${{proMonthly}}/mes); las herramientas aparte de /es/tools son gratis y no piden cuenta.",
1017+
"q10": "¿Qué IA es mejor para el debate?",
1018+
"a10": "Depende de para qué la quieras. Para sacar ideas y leer sobre el tema, un chatbot general como ChatGPT, Claude o Gemini sirve. Para preparar una moción concreta en tu formato, con un caso que puedes leer en voz alta, respuestas «Si dicen X, respondemos Y» y rondas de práctica cronometradas, {{product}} está hecho para eso. <link>Nuestra comparativa</link> repasa las opciones una por una."
10171019
},
10181020
"guideHub": {
10191021
"title": "Guías de debate y herramientas gratis",
@@ -1023,6 +1025,7 @@
10231025
"skills": "Guías de habilidades",
10241026
"tools": "Herramientas gratis",
10251027
"compare": "Comparar",
1028+
"versus": "Comparar {{product}}",
10261029
"englishGuides": "Guías en inglés",
10271030
"hungarianPrep": "Preparación de debate con IA, en húngaro",
10281031
"nativeAnswer": "Qué IA sirve para preparar un debate (guía en español)",
@@ -1055,7 +1058,16 @@
10551058
"debateowl-vs-debate-ladder": "{{product}} frente a Debate Ladder",
10561059
"free-vs-paid-ai-debate-tools": "Herramientas de debate con IA: gratis o de pago",
10571060
"chatgpt-vs-claude-for-debate": "ChatGPT o Claude para debatir",
1058-
"best-ai-for-public-forum": "La mejor IA para Public Forum"
1061+
"best-ai-for-public-forum": "La mejor IA para Public Forum",
1062+
"debateowl-vs-claude": "{{product}} frente a Claude",
1063+
"debateowl-vs-publicforumai": "{{product}} frente a PublicForumAI",
1064+
"debateowl-vs-gemini": "{{product}} frente a Gemini",
1065+
"debateowl-vs-hyperwrite": "{{product}} frente a HyperWrite",
1066+
"debateowl-vs-schoolai": "{{product}} frente a SchoolAI",
1067+
"debateowl-vs-argufight": "{{product}} frente a ArguFight",
1068+
"debateowl-vs-mindduel": "{{product}} frente a MindDuel",
1069+
"debateowl-vs-windebate": "{{product}} frente a WinDebate",
1070+
"debateowl-vs-debateclub": "{{product}} frente a DebateClub"
10591071
}
10601072
},
10611073
"finalCta": {

‎src/locales/hu.json‎

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1013,7 +1013,9 @@
10131013
"q8": "Mit tartalmaz egy {{product}} által írt eset?",
10141014
"a8": "A {{product}} úgy írja meg az esetet, ahogy az iskolai vitázók készülnek: nyitás, két–négy érv, mindegyik magyarázattal, bizonyítékkal és azzal, hogy miért fontos, „Ha azt mondják… erre azt feleljük…” válaszok, egy zárómondat és a felhasznált források.",
10151015
"q9": "Ingyenes a {{product}}?",
1016-
"a9": "A {{product}} alkalmazásnak nincs ingyenes csomagja ({{trialDays}} napos ingyenes próba, utána havi ${{proMonthly}}); a /hu/tools oldalon lévő külön eszközök ingyenesek, és fiók nélkül is használhatók."
1016+
"a9": "A {{product}} alkalmazásnak nincs ingyenes csomagja ({{trialDays}} napos ingyenes próba, utána havi ${{proMonthly}}); a /hu/tools oldalon lévő külön eszközök ingyenesek, és fiók nélkül is használhatók.",
1017+
"q10": "Melyik MI a legjobb vitához?",
1018+
"a10": "A feladattól függ. Ötleteléshez és háttérolvasáshoz egy általános chatbot, például a ChatGPT, a Claude vagy a Gemini is megfelel. Ha egy konkrét indítványra készülsz a saját vitaformátumodban, és felolvasható esetet, „Ha azt mondják X-et, erre azt feleljük Y” válaszokat és időzített gyakorlófordulókat szeretnél, arra készült a {{product}}. <link>Részletes összehasonlításunk</link> egyenként végigveszi a lehetőségeket."
10171019
},
10181020
"guideHub": {
10191021
"title": "Vitaútmutatók és ingyenes eszközök",
@@ -1023,6 +1025,7 @@
10231025
"skills": "Készségfejlesztő útmutatók",
10241026
"tools": "Ingyenes eszközök",
10251027
"compare": "Összehasonlítás",
1028+
"versus": "{{product}} összehasonlítások",
10261029
"englishGuides": "Angol nyelvű útmutatók",
10271030
"hungarianPrep": "Vitafelkészülés MI-vel (magyar útmutató)",
10281031
"nativeAnswer": "Melyik AI a legjobb vitára? (magyar kérdések és válaszok)",
@@ -1055,7 +1058,16 @@
10551058
"debateowl-vs-debate-ladder": "{{product}} vagy Debate Ladder",
10561059
"free-vs-paid-ai-debate-tools": "Ingyenes és fizetős MI-vitaeszközök",
10571060
"chatgpt-vs-claude-for-debate": "ChatGPT vagy Claude vitára",
1058-
"best-ai-for-public-forum": "A legjobb MI Public Forumhoz"
1061+
"best-ai-for-public-forum": "A legjobb MI Public Forumhoz",
1062+
"debateowl-vs-claude": "{{product}} vagy Claude",
1063+
"debateowl-vs-publicforumai": "{{product}} vagy PublicForumAI",
1064+
"debateowl-vs-gemini": "{{product}} vagy Gemini",
1065+
"debateowl-vs-hyperwrite": "{{product}} vagy HyperWrite",
1066+
"debateowl-vs-schoolai": "{{product}} vagy SchoolAI",
1067+
"debateowl-vs-argufight": "{{product}} vagy ArguFight",
1068+
"debateowl-vs-mindduel": "{{product}} vagy MindDuel",
1069+
"debateowl-vs-windebate": "{{product}} vagy WinDebate",
1070+
"debateowl-vs-debateclub": "{{product}} vagy DebateClub"
10591071
}
10601072
},
10611073
"finalCta": {

‎src/prerender/entry.tsx‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ function landingQuestions(language: PageLanguage = 'en'): Array<[string, string]
8484
const asOf = factsAsOf(language);
8585
return [
8686
[i18n.t('shortAnswer.question'), i18n.t('shortAnswer.answer', { asOf })],
87+
// The visible answer links its last sentence; the JSON-LD keeps the words without the tag.
88+
[i18n.t('faq.q10'), i18n.t('faq.a10').replace(/<\/?link>/g, '')],
8789
[i18n.t('faq.q6'), i18n.t('faq.a6', { modes: PREP_MODE_COUNT })],
8890
[i18n.t('faq.q8'), i18n.t('faq.a8')],
8991
[i18n.t('faq.q7'), i18n.t('faq.a7', { asOf })],

0 commit comments

Comments
 (0)