Ανοίγετε το site σας. Όλα στη θέση τους, οι τιμές φορτώνουν, τα φίλτρα δουλεύουν, ο κατάλογος κυλάει. Μια χαρά.
Κάντε τώρα κάτι που παίρνει δέκα δευτερόλεπτα. Δεξί κλικ, προβολή κώδικα σελίδας, και ψάξτε με Ctrl+F μια φράση από το κείμενό σας. Όχι το μενού, μια φράση από την ουσία.
Στους μισούς περίπου ελέγχους που κάνω, δεν βρίσκεται.
Αυτό δεν σημαίνει ότι το site είναι χαλασμένο. Σημαίνει ότι το κείμενο δεν υπάρχει στη σελίδα που στέλνει ο server. Υπάρχει στη μνήμη του browser σας, αφού εκείνος τρέξει τον κώδικα. Και όποιος δεν τρέχει κώδικα, δεν το βλέπει.
Τι κάνει η Google, με τα δικά της λόγια
Ας μη λέμε τι νομίζουμε ότι κάνει. Η τεκμηρίωση της Google το γράφει καθαρά: «η Google επεξεργάζεται τις εφαρμογές JavaScript σε τρεις κύριες φάσεις: σάρωση, απόδοση, ευρετηρίαση».
Το κρίσιμο είναι η δεύτερη. Το ρομπότ κατεβάζει πρώτα το HTML και βάζει τη σελίδα σε ουρά για απόδοση. Αργότερα, «όταν το επιτρέψουν οι πόροι της Google, ένα headless Chromium αποδίδει τη σελίδα και εκτελεί το JavaScript». Headless Chromium είναι ο Chrome χωρίς οθόνη, που τρέχει αυτόματα. Αν το HTML που κατέβηκε ήταν σχεδόν άδειο, μέχρι να έρθει η σειρά της σελίδας δεν υπάρχει τίποτα να ευρετηριαστεί.
Ξαναδιαβάστε τη φράση της Google σε εισαγωγικά, γιατί εκεί κρύβεται όλο το θέμα. Όταν το επιτρέψουν οι πόροι. Η ίδια σελίδα το λέει ακόμη πιο ωμά: η σελίδα «μπορεί να μείνει σε αυτή την ουρά για μερικά δευτερόλεπτα, αλλά μπορεί να πάρει και περισσότερο».
Άρα η απάντηση στο «βλέπει η Google το JavaScript μου;» δεν είναι ναι ή όχι. Είναι ναι, αλλά όχι αμέσως, και χωρίς εγγύηση για το πότε. Για ένα άρθρο που γράψατε πέρυσι, μια χαρά. Για μια σελίδα προϊόντος που άλλαξε τιμή σήμερα το πρωί, λιγότερο.
Και οι υπόλοιποι
Εδώ αλλάζει το τοπίο, και αλλάζει πολύ.
Η Vercel, η εταιρεία πίσω από το Next.js, δημοσίευσε στις 17/12/2024 μέτρηση από το δικό της δίκτυο, όχι εκτίμηση. Παρακολούθησε για μήνες την κίνηση των σαρωτών στο nextjs.org και στο δίκτυο της Vercel, και επαλήθευσε τα ευρήματα σε δύο ακόμη ιστότοπους. Το εύρημα, αυτολεξεί:
«Κανένας από τους μεγάλους σαρωτές τεχνητής νοημοσύνης δεν αποδίδει σήμερα JavaScript. Αυτό περιλαμβάνει: OpenAI (OAI-SearchBot, ChatGPT-User, GPTBot), Anthropic (ClaudeBot), Meta (Meta-ExternalAgent), ByteDance (Bytespider), Perplexity (PerplexityBot).»
Και μια λεπτομέρεια που την κάνει πιο ενδιαφέρουσα: τα ρομπότ κατεβάζουν αρχεία JavaScript, σε ποσοστό 11,50% των αιτημάτων για το ChatGPT και 23,84% για το Claude. Απλώς δεν τα εκτελούν. Πληρώνουν δηλαδή το κατέβασμα χωρίς να πάρουν τίποτα από αυτό.
Δύο επιφυλάξεις, γιατί έτσι γράφονται τα νούμερα. Πρώτον, η μέτρηση έχει ημερομηνία και είναι του Δεκεμβρίου 2024. Δεν αποκλείεται κάποια από αυτές τις εταιρείες να το έχει αλλάξει έκτοτε. Αν αλλάξει, θα το γράψουμε. Δεύτερον, είναι μια εταιρεία που μετράει τη δική της κίνηση, όχι ανεξάρτητος ελεγκτής. Παραμένει η πιο ουσιαστική μέτρηση που έχω βρει, και είναι πολύ καλύτερη από τις δεκάδες αναδημοσιεύσεις της που κυκλοφορούν χωρίς ημερομηνία.
Το πρακτικό συμπέρασμα είναι μία πρόταση: η Google σας συγχωρεί, οι μηχανές απάντησης (AI) όχι. Ποιοι ακριβώς είναι αυτοί οι σαρωτές και τι τους επιτρέπετε, το έχουμε συζητήσει αλλού.
Ο έλεγχος των δύο λεπτών
Τρία βήματα, με αυτή τη σειρά.
Πρώτο, η προβολή κώδικα. Δεξί κλικ, προβολή κώδικα σελίδας, Ctrl+F, μια φράση από το κείμενο. Αυτό είναι ό,τι στέλνει ο server στον δικό σας browser. Προσοχή: το «επιθεώρηση στοιχείου» δεν κάνει για αυτόν τον έλεγχο, γιατί σας δείχνει τη σελίδα αφού την έχτισε ο browser σας. Είναι η πιο συχνή παρανόηση και οδηγεί σε λάθος συμπέρασμα.
Δεύτερο, κλείστε το JavaScript. Στο Chrome, ανοίξτε τα εργαλεία προγραμματιστή, πατήστε Ctrl+Shift+P με την εστίαση μέσα σε αυτά, σε Mac Cmd+Shift+P, γράψτε «disable JavaScript» και ανανεώστε. Ό,τι μείνει στην οθόνη είναι περίπου αυτό που βλέπει μια μηχανή που δεν αποδίδει JavaScript. Προσοχή, η ρύθμιση ισχύει όσο τα εργαλεία μένουν ανοιχτά. Το ξάφνιασμα εδώ είναι συνήθως μεγάλο.
Τρίτο, ρωτήστε την ίδια τη Google. Χρησιμοποιήστε στο Search Console το εργαλείο ελέγχου διευθύνσεων URL, ή το Rich Results Test. Η τεκμηρίωση λέει ότι εκεί βλέπετε «τους πόρους που φορτώθηκαν, την έξοδο της κονσόλας JavaScript, τις εξαιρέσεις, και το αποδοθέν DOM», δηλαδή τη σελίδα όπως την έχτισε τελικά η Google. Αν το κείμενό σας λείπει και από εκεί, δεν είναι θέμα ουράς, είναι θέμα σφάλματος. Το ίδιο εργαλείο είναι και ο σωστός έλεγχος αν το site σας σερβίρει διαφορετικό HTML στα ρομπότ.
Τα τέσσερα που σπάνε πιο συχνά
Σύνδεσμοι που δεν είναι σύνδεσμοι. Η Google το γράφει χωρίς περιθώριο παρερμηνείας: «μπορεί να ανακαλύψει τους συνδέσμους σας μόνο αν είναι στοιχεία HTML <a> με χαρακτηριστικό href». Ένα στοιχείο που απλώς αντιδρά στο κλικ (div με onclick), χωρίς πραγματική διεύθυνση, είναι κουμπί, όχι σύνδεσμος. Δουλεύει τέλεια για τον επισκέπτη και δεν υπάρχει για καμία μηχανή. Είναι το νούμερο ένα εύρημα σε κάθε έλεγχο που κάνω.
Περιεχόμενο πίσω από κλικ. Καρτέλες, ακορντεόν και «δείτε περισσότερα» που φορτώνουν το κείμενο τη στιγμή που πατάει ο χρήστης. Αν το κείμενο έρχεται με αίτημα μετά το κλικ, δεν υπάρχει για κανέναν που δεν κάνει κλικ. Και τα ρομπότ δεν κάνουν κλικ. Η λύση δεν είναι να ανοίξετε τα πάντα, είναι το κείμενο να υπάρχει στο HTML και απλώς να μη φαίνεται.
Ατέρμονη κύλιση. Ο κατάλογος με τα 600 προϊόντα που φορτώνει από 20 κάθε φορά που κατεβαίνετε. Η τεκμηρίωση της Google το λέει σε λίγες λέξεις: «η Αναζήτηση Google δεν αλληλεπιδρά με τη σελίδα σας». Δεν κάνει κλικ και δεν κυλάει. Ό,τι δεν φορτώσει μόνο του, δεν το βλέπει. Χρειάζεται και σελιδοποίηση με πραγματικές διευθύνσεις από κάτω, ακόμη κι αν ο χρήστης δεν τη χρησιμοποιεί ποτέ.
Το ψεύτικο 404. Όταν η διεύθυνση /proion-pou-den-yparxei απαντά με κωδικό 200 (το «όλα καλά» του server) και δείχνει «δεν βρέθηκε» μέσα από JavaScript, η μηχανή παίρνει 200 από τον server ενώ η σελίδα είναι σελίδα σφάλματος. Η Google συνήθως το καταλαβαίνει και το καταγράφει ως soft 404, σπαταλώντας στο μεταξύ σάρωση σε διευθύνσεις που δεν υπάρχουν. Οι μηχανές που δεν αποδίδουν JavaScript δεν έχουν καν αυτή τη δυνατότητα. Η Google προτείνει είτε «ανακατεύθυνση με JavaScript σε διεύθυνση για την οποία ο server απαντά με κωδικό 404», είτε προσθήκη ετικέτας noindex μέσω JavaScript.
Η λύση, που δεν είναι να ξαναγράψετε τίποτα
Ένα πράγμα: ο server να στέλνει έτοιμο HTML.
Στα σύγχρονα framework αυτό λέγεται απόδοση στον server ή στατική παραγωγή, και τις περισσότερες φορές είναι ρύθμιση και όχι ξαναγράψιμο. Σε παλιότερες εφαρμογές υπάρχει η προαπόδοση, δηλαδή ένα ενδιάμεσο επίπεδο που ετοιμάζει τη σελίδα μία φορά και σερβίρει το αποτέλεσμα. Ο σκοπός είναι πάντα ο ίδιος: όταν φτάσει το αίτημα, το κείμενο να είναι ήδη εκεί.
Το κέρδος δεν είναι μόνο στις μηχανές. Είναι και στην ταχύτητα, γιατί ο επισκέπτης βλέπει κείμενο πριν κατέβει και τρέξει το JavaScript, και αυτό μετριέται στα Core Web Vitals. Δύο προβλήματα, μία δουλειά.
Και για να μην είμαι υποκριτής: αυτό το site είναι στατικό. Κάθε σελίδα υπάρχει ολόκληρη πριν τη ζητήσει κανείς. Δεν το κάναμε για τις μηχανές απάντησης, το κάναμε γιατί είναι το πιο απλό πράγμα που δουλεύει, και έτυχε να είναι και το σωστό.
Πότε δεν έχει καμία σημασία
Δεν θέλω να σας βάλω να αλλάξετε πράγματα χωρίς λόγο.
Κανείς δεν σαρώνει ό,τι είναι πίσω από σύνδεση. Πίνακες ελέγχου, εσωτερικά εργαλεία, περιοχή πελάτη, καλάθι, ταμείο. Εκεί το JavaScript κάνει ακριβώς τη δουλειά για την οποία φτιάχτηκε και δεν υπάρχει κανένα θέμα.
Το ζήτημα αφορά μόνο ό,τι θέλετε να βρίσκεται: αρχική, υπηρεσίες, προϊόντα, κατηγορίες, άρθρα, σελίδες καταστημάτων. Αν αυτά υπάρχουν στο HTML, τα υπόλοιπα ας χτίζονται όπως θέλουν.
Τα δέκα δευτερόλεπτα που αξίζουν
Αν δεν κάνατε τον έλεγχο στην αρχή, κάντε τον τώρα. Προβολή κώδικα, Ctrl+F, μια φράση από την αρχική σας.
Αν τη βρείτε, είστε εντάξει και μπορείτε να κλείσετε το άρθρο. Αν δεν τη βρείτε, δεν καίγεται τίποτα σήμερα, αλλά ξέρετε πλέον πού να κοιτάξετε πρώτα αν κάποιες σελίδες σας αργούν να μπουν στο ευρετήριο ή αν δεν σας αναφέρει καμία μηχανή απάντησης όταν ρωτούν για τον κλάδο σας. Το ίδιο επιχείρημα εξηγεί και τι γίνεται εκτός Google.
Αν η φράση σας δεν βρέθηκε ή κάποιες σελίδες σας αργούν να μπουν στο ευρετήριο, αυτό το ελέγχουμε εμείς: εξετάζουμε τις σελίδες που θέλετε να βρίσκονται και τι από αυτές φτάνει πραγματικά στις μηχανές. Παίρνετε μια λίστα με ό,τι βρήκαμε και τι προτείνουμε, με σειρά προτεραιότητας. Στείλτε μου μέσα από τη φόρμα τη διεύθυνση του site και δύο τρεις σελίδες που σας ενδιαφέρουν. Ο έλεγχος αυτός είναι μέρος της υπηρεσίας SEO και GEO.
Η συνολική εικόνα: το άρθρο αυτό καλύπτει ένα κομμάτι ενός μεγαλύτερου θέματος. Αν ψάχνετε ολόκληρη την εικόνα, από την αρχή ως το τέλος, είναι στον οδηγό για τις μηχανές απάντησης.