diff --git a/public/sitemap.xml b/public/sitemap.xml index cdae522..50b8ad8 100644 --- a/public/sitemap.xml +++ b/public/sitemap.xml @@ -9,7 +9,7 @@ - 2026-01-31T00:00:00.000Z + 2026-02-06T00:00:00.000Z monthly 1.0 @@ -18,7 +18,7 @@ - 2026-01-31T00:00:00.000Z + 2026-02-06T00:00:00.000Z monthly 1.0 @@ -27,13 +27,13 @@ - 2026-01-31T00:00:00.000Z + 2026-02-06T00:00:00.000Z monthly 1.0 https://www.q-asker.com/history - 2026-01-31T00:00:00.000Z + 2026-02-06T00:00:00.000Z monthly 0.8 diff --git a/src/app/App.jsx b/src/app/App.jsx index 6d6d148..96fb065 100644 --- a/src/app/App.jsx +++ b/src/app/App.jsx @@ -161,36 +161,31 @@ const SEO_CONFIG = { { "@type": "HowToStep", name: "Step 2: Configure quiz options", - text: - "Choose the number of questions, page range, and quiz types (fill-in-the-blank, true/false, multiple choice).", + text: "Choose the number of questions, page range, and quiz types (fill-in-the-blank, true/false, multiple choice).", url: "https://www.q-asker.com#how-to-use", }, { "@type": "HowToStep", name: "Step 3: Generate quizzes", - text: - "Once set, the AI analyzes the document and generates quizzes automatically.", + text: "Once set, the AI analyzes the document and generates quizzes automatically.", url: "https://www.q-asker.com#how-to-use", }, { "@type": "HowToStep", name: "Step 4: Solve the quizzes", - text: - "Practice with AI-generated quizzes and check your understanding. Mark questions to review later.", + text: "Practice with AI-generated quizzes and check your understanding. Mark questions to review later.", url: "https://www.q-asker.com#how-to-use", }, { "@type": "HowToStep", name: "Step 5: Review results and explanations", - text: - "See scores and detailed explanations for every question. Preview the referenced pages to study in depth.", + text: "See scores and detailed explanations for every question. Preview the referenced pages to study in depth.", url: "https://www.q-asker.com#how-to-use", }, { "@type": "HowToStep", name: "Step 6: Manage quiz history", - text: - "All generated quizzes are saved automatically. Revisit anytime to review or continue solving.", + text: "All generated quizzes are saved automatically. Revisit anytime to review or continue solving.", url: "https://www.q-asker.com#how-to-use", }, ], @@ -218,8 +213,7 @@ const SEO_CONFIG = { name: "Is Q-Asker really free?", acceptedAnswer: { "@type": "Answer", - text: - "Yes. AI quiz generation for PDF, PPT, and Word files is currently free with no signup required.", + text: "Yes. AI quiz generation for PDF, PPT, and Word files is currently free with no signup required.", }, }, { @@ -227,8 +221,7 @@ const SEO_CONFIG = { name: "Are my uploaded files secure?", acceptedAnswer: { "@type": "Answer", - text: - "Yes. Files are used only to generate quizzes and are deleted within 24 hours.", + text: "Yes. Files are used only to generate quizzes and are deleted within 24 hours.", }, }, { @@ -236,8 +229,7 @@ const SEO_CONFIG = { name: "How accurate are the AI-generated quizzes?", acceptedAnswer: { "@type": "Answer", - text: - "The AI is highly accurate, but not perfect. Use the questions as study aids and verify critical details with the original.", + text: "The AI is highly accurate, but not perfect. Use the questions as study aids and verify critical details with the original.", }, }, { @@ -245,8 +237,7 @@ const SEO_CONFIG = { name: "Can I create quizzes from image files?", acceptedAnswer: { "@type": "Answer", - text: - "Yes. OCR is supported, so scans and photo-based documents can be analyzed too.", + text: "Yes. OCR is supported, so scans and photo-based documents can be analyzed too.", }, }, ], @@ -317,6 +308,14 @@ const LanguageRouteSync = () => { useEffect(() => { if (location.pathname === "/") { + const userAgent = window.navigator?.userAgent ?? ""; + const isBot = + /bot|crawler|spider|googlebot|bingbot|yandex|baiduspider|duckduckbot|slurp|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora link preview|showyoubot|outbrain|pinterest|slackbot|vkshare|w3c_validator/i.test( + userAgent, + ); + if (isBot) { + return; + } const browserLang = window.navigator?.language?.toLowerCase() ?? ""; if (browserLang.startsWith("en")) { navigate("/en", { replace: true });