Repository navigation
Improve SEO, GEO, and AEO for education.ditectrev.com - #98
Conversation
Align education.ditectrev.com with ditectrev.com and shop.ditectrev.com: structured data, llms.txt, AI-crawler robots, sitemaps, and per-page metadata.
|
🚀 Vercel Preview Deployment Ready! Your stage site is ready! Visit it here: https://practice-exams-platform-jqa1al1ts-ditectrevs-projects.vercel.app This comment was automatically generated by GitHub Actions |
danieldanielecki
left a comment
There was a problem hiding this comment.
looks ok, just worried if the replaced buttons won't affect too much ui, but Cursor is saying those buttons became links with the same classes, text, and padding, so let's try!
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
Bugbot Autofix prepared a fix for the issue found in the latest run.
- ✅ Fixed: AI crawler rules skip path disallows
- Added the disallow array ['/practice?', '/exam?', '/modes?*'] to AI crawler rules so they match the catchall user-agent restrictions.
You can send follow-ups to the cloud agent here.
Reviewed by Cursor Bugbot for commit 5bbd3bc. Configure here.
| ...AI_CRAWLERS.map((userAgent) => ({ | ||
| userAgent, | ||
| allow: "/", | ||
| })), |
There was a problem hiding this comment.
AI crawler rules skip path disallows
Medium Severity
Named AI_CRAWLERS blocks emit only allow: "/". In robots.txt, a matching user-agent group replaces the * group, so GPTBot, Bingbot, Applebot, and the other listed agents never receive the Disallow entries for parameterized /practice, /exam, and /modes URLs.
Reviewed by Cursor Bugbot for commit 5bbd3bc. Configure here.


Matches the discoverability work on ditectrev.com#19 and Shop#9. Copy and schema come from existing platform, pricing, and company facts only—no invented ratings, reviews, or keyword stuffing.
Applied
/llms.txtand/llms-full.txt. Spec-style overview plus a citation fact sheet and Q&A from this platform’s README, exam catalog, pricing FAQ, and the same Ditectrev identity used on ditectrev.com.robots.tskeepsAllow: /, names GPTBot, ChatGPT-User, OAI-SearchBot, ClaudeBot/User/SearchBot, PerplexityBot/User, Google-Extended, Google-CloudVertexBot, CCBot, Applebot/Applebot-Extended, Bingbot, and DuckAssistBot, and disallows parameterized/practice?*,/exam?*, and/modes?*the same way the shop disallows/search?*.sitemap.ts:/,/pricing,llms.txt, andllms-full.txt. Nolastmoddates.sameAs) and WebSite on every page; homepage ItemList of visible exams; pricing FAQPage and OfferCatalog from the visible plans and FAQs; BreadcrumbList on those pages.en_US, 512×512 PNG), Twittersummary, snippet-friendly robots (max-snippet:-1,max-image-preview:large,max-video-preview:-1),rel=describedbyandrel=alternate type=text/markdownforllms.txt. Emojis removed from titles, matching ditectrev.com./practice,/exam,/modes,/profile,/auth/callback, and 404.<Link>s instead ofrouter.pushbuttons.<h1>s. ThemeProvider now SSR-renders children so those headings and JSON-LD are in the HTML.Skipped (does not apply here)
SearchAction— homepage search is client-side only (same skip as ditectrev.com)./faqroute — those pages do not exist here. FAQ JSON-LD is only on/pricing, where the questions are visible./healthdisallow, 1200×630 OG banner, hreflang, Review/AggregateRating, SpeakableSpecification,.well-known/llms.txt, WebMCP, and per-route.mdmirrors.Test plan
npx jest lib/__tests__/seo.test.ts(13 passed)npx playwright test playwright/seo.spec.ts --project=chromium(6 passed)npm run buildsucceeds/robots.txt,/sitemap.xml,/llms.txt,/llms-full.txt, home/pricing JSON-LD and canonicals, 404noindex