Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions public/sitemap.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
<xhtml:link rel="alternate" hreflang="ko" href="https://www.q-asker.com/ko" />
<xhtml:link rel="alternate" hreflang="en" href="https://www.q-asker.com/en" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.q-asker.com/" />
<lastmod>2026-01-31T00:00:00.000Z</lastmod>
<lastmod>2026-02-06T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
Expand All @@ -18,7 +18,7 @@
<xhtml:link rel="alternate" hreflang="ko" href="https://www.q-asker.com/ko" />
<xhtml:link rel="alternate" hreflang="en" href="https://www.q-asker.com/en" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.q-asker.com/" />
<lastmod>2026-01-31T00:00:00.000Z</lastmod>
<lastmod>2026-02-06T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
Expand All @@ -27,13 +27,13 @@
<xhtml:link rel="alternate" hreflang="ko" href="https://www.q-asker.com/ko" />
<xhtml:link rel="alternate" hreflang="en" href="https://www.q-asker.com/en" />
<xhtml:link rel="alternate" hreflang="x-default" href="https://www.q-asker.com/" />
<lastmod>2026-01-31T00:00:00.000Z</lastmod>
<lastmod>2026-02-06T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://www.q-asker.com/history</loc>
<lastmod>2026-01-31T00:00:00.000Z</lastmod>
<lastmod>2026-02-06T00:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
Expand Down
35 changes: 17 additions & 18 deletions src/app/App.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -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",
},
],
Expand Down Expand Up @@ -218,35 +213,31 @@ 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.",
},
},
{
"@type": "Question",
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.",
},
},
{
"@type": "Question",
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.",
},
},
{
"@type": "Question",
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.",
},
},
],
Expand Down Expand Up @@ -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 });
Expand Down