Skip to content

Commit 8f20171

Browse files
authored
Merge pull request #289 from Programcode/t3/home-which-ai-faq
Answer "Which AI is best for debate?" on the home page and link every vs page
2 parents f8ea08a + 17616de commit 8f20171

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)