Răspuns scurt: pentru site-uri educaționale, diagnosticul trebuie să verifice dacă informația publică esențială există în HTML sau într-o cale robustă de rendering, dacă linkurile sunt crawlable și dacă aplicațiile interactive nu ascund conținutul principal. Google documentează crawling, rendering și indexing ca etape distincte pentru JavaScript. Alte crawlere pot avea capabilități diferite, deci nu presupune că „Google vede” înseamnă că orice sistem AI vede la fel.
Failure mode 1: catalogul de cursuri este client-only
Dacă numele cursului, descrierea și URL-ul apar doar după un API call client-side, un crawler care nu execută aceeași logică poate primi puțin context.
Păstrează informația publică esențială într-o formă robustă.
Failure mode 2: linkuri prin event handlers
Cardurile de curs pot folosi click handlers fără <a href>. Google recomandă linkuri crawlable.
Navigația principală către cursuri, programe și profesori trebuie să aibă URL-uri reale.
Failure mode 3: filtre infinite
Catalogul poate genera mii de combinații de filtre. Decide ce URL-uri merită indexate și cum sunt canonicalizate.
Nu transforma fiecare combinație într-o pagină de Search.
Failure mode 4: SPA returnează 200 pentru orice
O rută inexistentă poate afișa o pagină client-side de eroare, dar HTTP 200. Acest lucru poate produce soft 404 și confuzie.
Failure mode 5: metadata apare doar după rendering
Title, canonical sau structured data pot fi injectate târziu și diferit de HTML inițial. Verifică parity.
Failure mode 6: syllabus ascuns în accordion fragil
Interactivitatea este normală, dar informația nu trebuie să dispară dacă scriptul eșuează. Testează fallback-ul.
Failure mode 7: video-only learning pages
O pagină poate avea video, dar puțin text care explică obiectivele, transcriptul sau resursele. Crawlability nu înseamnă transcriere automată completă, dar contextul public trebuie să fie suficient.
Failure mode 8: autentificarea se extinde peste paginile publice
Unele LMS-uri redirecționează crawlerul către login chiar pentru pagini care ar trebui să fie publice. Separă course marketing de learner portal.
Failure mode 9: infinite scroll fără paginare robustă
Bibliotecile de resurse pot încărca următoarele articole doar la scroll. Asigură că resursele au URL-uri individuale și că discovery nu depinde doar de gesturi.
Failure mode 10: hydration errors
Diferențele dintre server HTML și client state pot elimina sau dubla text. Monitorizează erorile pe template și severitate.
Failure mode 11: robots policies copiate pentru toți bots
Googlebot, OAI-SearchBot și alte crawlere au documentații și roluri distincte. Nu aplica reguli fără să înțelegi consecința.
Allowed nu înseamnă inclusion garantată.
Failure mode 12: „AI readiness score” fără test tehnic
Un instrument poate spune că pagina este 90% ready, dar dacă linkurile sunt client-only sau canonical greșit, scorul nu schimbă realitatea.
Decision tree
- URL-ul public răspunde cu status corect?
- Title/H1/canonical sunt disponibile și coerente?
- Conținutul critic există înainte sau după rendering într-un mod verificabil?
- Linkurile principale folosesc
<a href>? - Rutele inexistente nu returnează soft 404?
- Filtrele au reguli de indexare/canonical?
- Resursele infinite-scroll au URL-uri discoverable?
- Login-ul nu blochează accidental pagini publice?
- Hydration nu schimbă sensul?
- Structured data reflectă pagina?
- Bot policies sunt revizuite separat?
- Testul poate fi repetat pe același set de URL-uri?
Benchmark tehnic
Pentru fiecare template salvează status, canonical, HTML text, rendered text, linkuri, resurse eșuate și timestamp. Păstrează snapshots pentru diff.
Nu compara fiecare atribut generat de framework. Semnalează diferențe materiale.
Education-specific checks
Pentru cursuri, verifică titlu, provider, program, nivel, prerechizite, instructor și enrollment path dacă sunt publice. Pentru resurse, verifică autorul și data revizuirii.
Nu inventa structured data dacă pagina nu se potrivește unui feature documentat.
Failure resilience
În mediu sigur, simulează indisponibilitatea unui widget video, chat sau enrollment. Pagina ar trebui să păstreze informația de bază și o cale alternativă relevantă.
Privacy
Nu folosi conturi reale de elevi sau date personale în testele automate care nu au nevoie de ele. Păstrează auditul pe pagini publice și date sintetice pentru fluxuri interactive.
Cum măsori după remediere
Critical-content parity, crawlable-link coverage, soft-404 count, hydration error rate și broken-resource rate sunt metrici directe. Search indexation și AI citations sunt outcomes separate.
Criteriu de oprire
Închide finding-ul când template-urile publice au status/canonical corect, informația critică este robustă și linkurile sunt discoverable. Lipsa unei citări AI nu justifică schimbări tehnice suplimentare fără evidence.
Cum tratezi conținutul încărcat după autentificare
Nu toate resursele educaționale trebuie să fie public crawlable. Materialele de curs, evaluările și datele elevilor pot rămâne în portal autentificat. Problema apare când pagina publică de prezentare depinde accidental de aceeași barieră și nu mai poate explica programul, curriculumul sau înscrierea.
Separă explicit public discovery surface de learner application. Această arhitectură protejează și privacy, și crawlability.
Cum testezi pe template, nu doar pe homepage
Eșantionează pagini de curs, instructor, program, resursă și catalog. Un homepage randat corect nu dovedește că routerul și datele funcționează pe toate tipurile de pagină.
Păstrează aceeași listă de URL-uri la regresie și adaugă cazuri noi doar când apare un template nou. Astfel, benchmark-ul rămâne comparabil între release-uri.
Claim ledger
- FACT/EVIDENCE: Google documentează crawling, rendering și indexing pentru JavaScript.
- FACT/EVIDENCE: Google recomandă linkuri
<a href>crawlable și tratează dynamic rendering ca workaround. - FACT/EVIDENCE: OpenAI documentează crawlere cu roluri distincte.
- NOT PROVEN: un scor universal de AI crawlability sau o garanție de citare.
Concluzie
În educație, JavaScript nu este problema în sine. Problema apare când informația publică, linkurile și stările HTTP depind de o cale fragilă. Diagnosticul bun măsoară rendering-ul și fallback-ul, nu un scor de „AI readiness”.
Surse revizuite
- Google Search Central, JavaScript SEO basics: https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Google Search Central, Fix JavaScript problems: https://developers.google.com/search/docs/crawling-indexing/javascript/fix-search-javascript
- Google Search Central, Dynamic rendering: https://developers.google.com/search/docs/crawling-indexing/javascript/dynamic-rendering
- Google Search Central, link best practices: https://developers.google.com/search/docs/crawling-indexing/links-crawlable
- OpenAI, Overview of OpenAI Crawlers: https://developers.openai.com/api/docs/bots
