Τεχνικό SEO και Core Web Vitals
Το κεφάλαιο που οι περισσότεροι προσπερνούν επειδή «είναι για τον προγραμματιστή». Είναι όμως το μόνο που, αν πάει στραβά, ακυρώνει όλη την υπόλοιπη δουλειά σας.
Τεχνικό SEO είναι η δουλειά που κάνει μια ιστοσελίδα προσβάσιμη, κατανοητή και γρήγορη για τις μηχανές αναζήτησης και για τους ανθρώπους. Δεν αφορά το τι λέτε, αλλά το αν μπορεί καν να διαβαστεί αυτό που λέτε: αν το Googlebot φτάνει στις σελίδες σας, αν επιτρέπεται να τις κρατήσει στο ευρετήριο, ποια εκδοχή κάθε URL θεωρεί κύρια, και τι εμπειρία δίνει η σελίδα όταν ανοίγει σε ένα μέτριο κινητό με 4G.
Η σχέση του με τα υπόλοιπα κεφάλαια είναι ιεραρχική, όχι παράλληλη. Όπως είδαμε στο πρώτο κεφάλαιο, η αλυσίδα είναι crawling → indexing → ranking. Το τεχνικό SEO προστατεύει τους δύο πρώτους κρίκους. Αν σπάσει εκεί, το καλύτερο περιεχόμενο του κόσμου και τα πιο ακριβά backlinks δεν μετράνε καθόλου, γιατί απλώς δεν φτάνουν ποτέ στο στάδιο της αξιολόγησης.
Πώς ελέγχετε αν η Google μπορεί να διαβάσει το site σας;
Τέσσερα πράγματα καθορίζουν, ουσιαστικά μόνα τους, τι μπαίνει στο ευρετήριο και τι όχι. Μπερδεύονται συνεχώς μεταξύ τους, και το μπέρδεμα κοστίζει ολόκληρες κατηγορίες προϊόντων.
Το robots.txt στη ρίζα του domain λέει στα crawlers πού επιτρέπεται να μπουν. Δεν λέει τι επιτρέπεται να δημοσιευτεί στα αποτελέσματα. Αυτή η διάκριση είναι κρίσιμη. Αν μπλοκάρετε μια σελίδα με Disallow ενώ άλλα sites δείχνουν προς αυτήν, η Google μπορεί να την εμφανίσει στα αποτελέσματα χωρίς περιγραφή, επειδή γνωρίζει το URL αλλά δεν της επιτρέπεται να δει το περιεχόμενο. Για να κρατήσετε μια σελίδα εκτός ευρετηρίου χρειάζεστε noindex, και για να το διαβάσει η Google πρέπει να της επιτρέψετε να κάνει crawl τη σελίδα. Το να συνδυάσετε Disallow και noindex στην ίδια σελίδα είναι αντιφατικό και δεν δουλεύει.
Το sitemap.xml είναι η λίστα με τα URL που θεωρείτε άξια ευρετηρίασης. Δεν είναι εντολή, είναι πρόταση, και δεν εγγυάται τίποτα, αλλά επιταχύνει την ανακάλυψη νέων σελίδων, ιδίως σε μεγάλα sites. Ένα αρχείο sitemap χωράει μέχρι 50.000 URL και 50 MB ασυμπίεστο· πάνω από αυτό σπάτε σε πολλά και τα δηλώνετε σε ένα sitemap index. Κρατήστε το καθαρό: μόνο σελίδες που επιστρέφουν 200, χωρίς noindex, χωρίς canonical προς αλλού.
Το canonical tag λέει στη Google ποια εκδοχή ενός URL θεωρείτε εσείς κύρια, όταν το ίδιο περιεχόμενο είναι προσβάσιμο από πολλές διευθύνσεις: με και χωρίς www, με παραμέτρους φίλτρων ή UTM, με και χωρίς κάθετο στο τέλος. Και εδώ η Google το αντιμετωπίζει ως ισχυρή ένδειξη, όχι ως εντολή· αν τα άλλα σήματα δείχνουν αλλού, μπορεί να επιλέξει διαφορετικό canonical από αυτό που δηλώσατε. Το βλέπετε στο Search Console, στο εργαλείο ελέγχου URL.
Τέλος, το HTTPS. Η Google το αναφέρει ρητά στην τεκμηρίωση για την εμπειρία σελίδας και είναι, εδώ και χρόνια, η ελάχιστη βάση. Το πιο συχνό λάθος δεν είναι η απουσία πιστοποιητικού αλλά το mixed content, δηλαδή σελίδα σε HTTPS που φορτώνει εικόνες ή scripts από HTTP. Ο browser το σημαδεύει και ο επισκέπτης το βλέπει.
Τι είναι το crawl budget και πότε σας απασχολεί
Crawl budget είναι, απλοποιημένα, το πόσες σελίδες σας είναι διατεθειμένη η Google να κατεβάσει σε μια δεδομένη περίοδο. Καθορίζεται από δύο πράγματα: το πόσο γρήγορα και αξιόπιστα απαντάει ο server σας, και το πόσο ενδιαφέρον θεωρεί το περιεχόμενό σας.
Για ένα εταιρικό site με 40 σελίδες, το crawl budget δεν είναι θέμα. Γίνεται θέμα από τις μερικές χιλιάδες URL και πάνω, τυπικά σε eshop με faceted navigation, όπου κάθε συνδυασμός φίλτρων παράγει νέο URL και το Googlebot ξοδεύει τον χρόνο του σε άπειρες παραλλαγές της ίδιας λίστας αντί για τις σελίδες προϊόντων που σας ενδιαφέρουν. Το θέμα το πιάνουμε αναλυτικά στο κεφάλαιο για το SEO σε eshop.
Mobile-first indexing και αρχιτεκτονική
Η Google κάνει crawl και ευρετηριάζει όλα τα sites με το Googlebot για κινητά. Πρακτικά αυτό σημαίνει ότι η εκδοχή που κρίνεται είναι η mobile. Αν το κινητό σας εμφανίζει λιγότερο κείμενο, κρύβει ενότητες ή σερβίρει διαφορετικά δομημένα δεδομένα από το desktop, αυτό που μετράει είναι η φτωχή εκδοχή.
Παράλληλα μετράει το click depth, δηλαδή πόσα κλικ απέχει μια σελίδα από την αρχική. Ό,τι είναι θαμμένο πέντε επίπεδα βαθιά γίνεται crawl σπανιότερα και θεωρείται λιγότερο σημαντικό. Ένας πρακτικός κανόνας λέει ότι καμία σελίδα με εμπορική αξία δεν πρέπει να απέχει πάνω από τρία κλικ από την αρχική. Το εργαλείο για να το πετύχετε είναι οι εσωτερικοί σύνδεσμοι, που τους δουλέψαμε στο κεφάλαιο του on-page SEO.
Ανακατευθύνσεις, αλυσίδες και 404
Όταν αλλάζετε ένα URL, το 301 δηλώνει μόνιμη μετακίνηση και είναι το ισχυρότερο σήμα ενοποίησης προς τη νέα διεύθυνση. Το 302 δηλώνει προσωρινή και το χρησιμοποιείτε μόνο όταν πραγματικά σκοπεύετε να επαναφέρετε το παλιό URL. Το συχνότερο λάθος σε ελληνικά sites είναι ένα ολόκληρο migration με 302, επειδή έτσι ήταν η προεπιλογή του plugin.
Χειρότερες από τη λάθος επιλογή είναι οι αλυσίδες, όπου το A ανακατευθύνει στο B, το B στο C και το C στο D. Το Googlebot ακολουθεί μέχρι δέκα άλματα ανακατεύθυνσης ανά crawl, αλλά κάθε άλμα προσθέτει καθυστέρηση στον χρήστη και σπαταλά crawl budget. Μετά από κάθε ανασχεδιασμό, ξαναγράψτε τους κανόνες ώστε το A να δείχνει κατευθείαν στο D.
JavaScript: το σημείο όπου χάνονται τα μοντέρνα sites
Το Googlebot εκτελεί JavaScript, αλλά όχι στην ίδια στιγμή που κατεβάζει τη σελίδα. Το rendering μπαίνει σε ουρά και γίνεται αργότερα, όταν υπάρχουν διαθέσιμοι πόροι. Αν το βασικό περιεχόμενο (τίτλος, κείμενο, τιμή, εσωτερικοί σύνδεσμοι) υπάρχει μόνο μετά την εκτέλεση JavaScript, μπαίνετε στο ευρετήριο με καθυστέρηση ή, σε κακές υλοποιήσεις, καθόλου. Ο έλεγχος είναι απλός και τον κάνετε μόνοι σας. Ανοίξτε τη σελίδα, δείτε τον πηγαίο κώδικα (όχι το inspector) και ψάξτε ένα χαρακτηριστικό κομμάτι του κειμένου σας. Αν δεν υπάρχει εκεί, το σερβίρετε αποκλειστικά με JavaScript.
Τι είναι τα Core Web Vitals και ποια όρια ισχύουν;
Τα Core Web Vitals είναι τρεις μετρήσεις με τις οποίες η Google περιγράφει την εμπειρία μιας σελίδας: πόσο γρήγορα φαίνεται το κύριο περιεχόμενο, πόσο γρήγορα αποκρίνεται η σελίδα όταν ο χρήστης κάνει κάτι, και πόσο σταθερή μένει οπτικά ενώ φορτώνει.
Δεν είναι σκορ από το 0 ως το 100. Είναι τρεις ανεξάρτητοι αριθμοί με συγκεκριμένα κατώφλια, και η Google αξιολογεί κάθε έναν στο 75ό εκατοστημόριο των πραγματικών επισκέψεων. Τρεις στους τέσσερις χρήστες σας πρέπει να έχουν εμπειρία μέσα στο όριο. Ο μέσος όρος δεν παίζει κανένα ρόλο, ακριβώς επειδή κρύβει τη μειοψηφία που υποφέρει.
LCP — Largest Contentful Paint
Μετράει πόσο αργεί να εμφανιστεί το μεγαλύτερο ορατό στοιχείο της πρώτης οθόνης: συνήθως η κεντρική εικόνα, το βίντεο ή ένα μεγάλο μπλοκ κειμένου. Είναι, στην ουσία, η απάντηση στο ερώτημα «πότε ο χρήστης βλέπει ότι κάτι φόρτωσε». Καλό θεωρείται κάτω από 2,5 δευτερόλεπτα.
Οι αιτίες που το χαλάνε είναι σχεδόν πάντα οι ίδιες τέσσερις: αργός server (υψηλό TTFB), τεράστια εικόνα hero χωρίς συμπίεση, γραμματοσειρές και CSS που μπλοκάρουν το rendering, και lazy loading στην ίδια την εικόνα hero, ένα κλασικό αυτογκόλ, αφού καθυστερείτε επίτηδες αυτό που μετριέται.
INP — Interaction to Next Paint
Μετράει πόσο αργεί η σελίδα να απαντήσει οπτικά όταν ο χρήστης κάνει κλικ, πατάει ή πληκτρολογεί. Αντικατέστησε επίσημα το FID τον Μάρτιο του 2024, και η αλλαγή δεν ήταν κοσμετική. Το FID μετρούσε μόνο την πρώτη αλληλεπίδραση και μόνο την καθυστέρηση πριν αρχίσει η επεξεργασία, οπότε τα περισσότερα sites περνούσαν χωρίς να το αξίζουν. Το INP κοιτάζει όλες τις αλληλεπιδράσεις μέσα στη ζωή της σελίδας και ολόκληρη τη διαδρομή ως το επόμενο βάψιμο της οθόνης. Καλό θεωρείται κάτω από 200 ms.
Ένοχος είναι σχεδόν πάντα η JavaScript που κρατάει απασχολημένο το main thread: υπερφορτωμένα tag managers, chat widgets, sliders, popup consent, plugins που φορτώνουν παντού ενώ χρειάζονται σε μία σελίδα.
CLS — Cumulative Layout Shift
Μετράει πόσο μετακινείται το περιεχόμενο ενώ ο χρήστης το διαβάζει. Είναι η εμπειρία που όλοι έχουμε ζήσει. Πάτε να πατήσετε ένα κουμπί, φορτώνει μια διαφήμιση από πάνω, το κουμπί κατεβαίνει και πατάτε κάτι άλλο. Καλό θεωρείται κάτω από 0,1.
Είναι η πιο εύκολα διορθώσιμη από τις τρεις, γιατί η αιτία είναι σχεδόν μονοσήμαντη, στοιχεία που μπαίνουν στη σελίδα χωρίς να έχει κρατηθεί χώρος γι’ αυτά. Εικόνες και iframes χωρίς width και height, διαφημιστικά slots χωρίς προκαθορισμένες διαστάσεις, banners που εμφανίζονται στην κορυφή μετά τη φόρτωση, και γραμματοσειρές που αλλάζουν το ύψος των γραμμών όταν φορτώσουν.
Lab data ή field data: ποια νούμερα μετράνε;
Lab data είναι μια προσομοίωση. Το Lighthouse ή η καρτέλα διάγνωσης του PageSpeed Insights φορτώνουν τη σελίδα σε ένα ελεγχόμενο περιβάλλον, με προσομοιωμένη συσκευή και δίκτυο, και βγάζουν το γνωστό σκορ 0–100. Είναι απολύτως χρήσιμο για διάγνωση, επειδή είναι επαναλήψιμο και σας λέει τι ακριβώς να διορθώσετε. Δεν είναι όμως αυτό που κοιτάει η Google.
Field data είναι πραγματικές μετρήσεις από πραγματικούς χρήστες Chrome, που συγκεντρώνονται στο Chrome UX Report (CrUX). Αυτά τα δεδομένα βλέπετε στην κορυφή του PageSpeed Insights και στην αναφορά Core Web Vitals του Search Console, και σε αυτά βασίζεται η αξιολόγηση. Χρειάζονται όμως αρκετή επισκεψιμότητα για να υπάρξουν. Αν το site σας έχει λίγες επισκέψεις, θα δείτε ότι δεν υπάρχουν διαθέσιμα δεδομένα πεδίου, οπότε αναγκαστικά δουλεύετε με lab data.
Ο πρακτικός κανόνας είναι απλός. Διορθώνετε με βάση το lab, επιβεβαιώνετε με βάση το field. Και περιμένετε, γιατί το CrUX δουλεύει με κυλιόμενο παράθυρο 28 ημερών, οπότε μια διόρθωση που κάνατε σήμερα δεν φαίνεται πλήρως στο Search Console πριν περάσει περίπου ένας μήνας.
Τι διορθώνετε πρώτο και με τι σειρά;
Ξεκινήστε από τον server. Το TTFB (Time To First Byte) μπαίνει αυτούσιο μέσα στο LCP. Αν ο server σας αργεί 900 ms να απαντήσει, ξεκινάτε τον αγώνα με ένα δευτερόλεπτο χαμένο και καμία βελτιστοποίηση εικόνων δεν το ξαναβρίσκει. Φθηνό shared hosting με υπερπληθυσμό, PHP παλιάς έκδοσης και μηδενικό caching είναι η συνηθέστερη αιτία σε ελληνικά WordPress και WooCommerce. Είναι η μία περίπτωση όπου η αλλαγή φιλοξενίας κάνει μεγαλύτερη διαφορά από μήνες βελτιστοποίησης. Στην επιτάχυνση του eShop Emmy συνδυάσαμε νέα φιλοξενία και βελτιστοποίηση του site.
Μετά, οι εικόνες. Σερβίρετε σε σύγχρονη μορφή (WebP ή AVIF), στις πραγματικές διαστάσεις που εμφανίζονται και όχι σε 3.000 pixels πλάτος συρρικνωμένα με CSS, με width και height δηλωμένα σε κάθε img. Η εικόνα hero παίρνει loading="eager" και fetchpriority="high"· όλες οι υπόλοιπες loading="lazy".
Τρίτο, η JavaScript. Αφαιρέστε ό,τι δεν χρησιμοποιείται, φορτώστε τα scripts τρίτων με καθυστέρηση ή μόνο στις σελίδες που τα χρειάζονται, και μετρήστε ξανά. Σε πολλά ελληνικά sites, ένα και μόνο chat widget ή ένα υπερφορτωμένο Tag Manager εξηγεί το μεγαλύτερο μέρος ενός κακού INP.
Τι είναι τα δομημένα δεδομένα και ποια χρειάζεστε;
Τα δομημένα δεδομένα (structured data) είναι ένας τυποποιημένος τρόπος να περιγράψετε στη μηχανή αναζήτησης τι ακριβώς είναι το περιεχόμενο μιας σελίδας: ότι αυτό το νούμερο είναι τιμή, ότι αυτό το κείμενο είναι ωράριο λειτουργίας, ότι αυτή η σελίδα είναι άρθρο με συγκεκριμένο συγγραφέα. Το λεξιλόγιο λέγεται schema.org και ο τρόπος υλοποίησης που προτείνει η Google είναι το JSON-LD, ένα μπλοκ κώδικα μέσα στη σελίδα που δεν φαίνεται στον επισκέπτη.
Δύο πράγματα να κρατήσετε. Πρώτον, το schema δεν είναι παράγοντας κατάταξης, δηλαδή δεν σας ανεβάζει θέσεις. Δεύτερον, ξεκλειδώνει rich results (αστεράκια, τιμές, breadcrumbs, εικόνες) που αυξάνουν τον χώρο που πιάνετε στο SERP και το ποσοστό κλικ. Δεν αλλάζετε θέση· αλλάζετε πόσοι σας πατάνε από την ίδια θέση.
Για μια ελληνική μικρομεσαία επιχείρηση, τα είδη που αξίζουν είναι έξι: Organization (ποιοι είστε, λογότυπο, προφίλ σας σε άλλες πλατφόρμες), LocalBusiness (διεύθυνση, τηλέφωνο, ωράριο, περιοχή εξυπηρέτησης, απαραίτητο αν έχετε φυσική παρουσία), Product με προσφορά και διαθεσιμότητα για eshop, BreadcrumbList για να δείχνει η Google τη διαδρομή αντί για γυμνό URL, Article για άρθρα και οδηγούς, και FAQPage για σελίδες με πραγματικές ερωτήσεις και απαντήσεις.
Δύο προειδοποιήσεις. Το schema πρέπει να περιγράφει ό,τι είναι ορατό στη σελίδα. Δηλωμένα αστεράκια που δεν αντιστοιχούν σε πραγματικές κριτικές είναι παραβίαση των οδηγιών και οδηγούν σε χειροκίνητη ποινή. Και η εμφάνιση των rich results δεν είναι εγγυημένη. Εσείς δηλώνετε σωστά, η Google αποφασίζει αν θα τα δείξει. Ελέγξτε την υλοποίησή σας με το Rich Results Test της Google πριν θεωρήσετε ότι δουλεύει.
Τι κάνετε μόνοι σας και τι δίνετε στον προγραμματιστή;
Ο διαχωρισμός βοηθάει να μη μένει τίποτα σε εκκρεμότητα επειδή «είναι τεχνικό».
Μόνοι σας, χωρίς κώδικα: ανοίγετε το Search Console και διαβάζετε την αναφορά ευρετηρίασης και την αναφορά Core Web Vitals. Ελέγχετε ότι το robots.txt δεν περιέχει Disallow: /. Ανοίγετε το sitemap σας στον browser και βλέπετε αν περιέχει σελίδες που δεν θα έπρεπε. Πατάτε τυχαία εσωτερικά links για να βρείτε 404. Ανεβάζετε τις εικόνες σας σε λογικές διαστάσεις πριν τις βάλετε στο CMS. Μετράτε δύο-τρεις βασικές σελίδες σας στο PageSpeed Insights και κρατάτε τι λέει.
Στον προγραμματιστή ή στην ομάδα σας: κανόνες ανακατεύθυνσης και σπάσιμο αλυσίδων, canonical σε δυναμικές σελίδες και φίλτρα, server-side rendering ή prerendering εκεί όπου το περιεχόμενο εξαρτάται από JavaScript, caching και ρυθμίσεις server για το TTFB, υλοποίηση JSON-LD, και δέσμευση χώρου για διαφημίσεις και embeds ώστε να μη σαλεύει το layout. Αν το site είναι ήδη σε κακή κατάσταση σε όλα τα παραπάνω, συχνά ο πιο οικονομικός δρόμος δεν είναι το μπάλωμα αλλά μια σωστή ανακατασκευή με τα θεμέλια στη θέση τους.
Ό,τι κι αν διορθώσετε, μετρήστε το πριν και μετά. Το πώς στήνεται αυτή η μέτρηση το δείχνουμε στο κεφάλαιο για το Search Console και το GA4.
Πηγές και τεκμηρίωση
Όλα τα όρια και οι κανόνες αυτού του κεφαλαίου προέρχονται από την επίσημη τεκμηρίωση της Google και της ομάδας του Chrome:
- web.dev — Web Vitals (ορισμοί LCP, INP, CLS και τα κατώφλια στο 75ό εκατοστημόριο)
- web.dev — Το INP αντικαθιστά το FID (12 Μαρτίου 2024)
- Google Search Central — Understanding page experience (Core Web Vitals, HTTPS, mobile)
- Google Search Central — Διαχείριση crawl budget σε μεγάλα sites
- Google Search Central — Redirects και Google Search (301, 302, όριο αλμάτων)
- Google Search Central — Δημιουργία sitemap (όρια 50.000 URL και 50 MB)
- Google Search Central — Γκαλερί rich results και τύποι δομημένων δεδομένων
- Chrome UX Report (CrUX) (πώς συλλέγονται τα δεδομένα πεδίου)
Συχνές ερωτήσεις
Τεχνικό SEO και ταχύτητα.
Επηρεάζουν πραγματικά τα Core Web Vitals την κατάταξη;
Γιατί το PageSpeed Insights μού δίνει 95 αλλά το Search Console λέει ότι τα URL μου είναι «κακά»;
Χρειάζομαι δομημένα δεδομένα για να κατατάσσομαι;
Πόσο κακό είναι να έχω σπασμένους συνδέσμους και σελίδες 404;
Όλα τα κεφάλαια του οδηγού
Ελεύθερα διαθέσιμα, χωρίς εγγραφή.
- 1. Τι είναι το SEO και πώς λειτουργεί η Google · 12′
- 2. Έρευνα λέξεων-κλειδιών και πρόθεση αναζήτησης · 14′
- 3. On-page SEO: η ανατομία μιας σελίδας που κατατάσσεται · 13′
- 4. Τεχνικό SEO και Core Web Vitals · διαβάζετε τώρα
- 5. Περιεχόμενο που κατατάσσεται και E-E-A-T · 14′
- 6. Backlinks και authority · 13′
- 7. Τοπικό SEO και Google Business Profile · 13′
- 8. SEO για eshop · 15′
- 9. Μέτρηση με Search Console και GA4 · 14′
- 10. GEO: ορατότητα σε ChatGPT, Perplexity και AI Overviews · 13′
- 11. Τα 12 συχνότερα λάθη SEO · 12′
Θέλετε να μάθετε τι ακριβώς κρατάει πίσω το site σας;
Στη δωρεάν ανάλυση ελέγχουμε crawlability, ευρετηρίαση, Core Web Vitals και δομημένα δεδομένα, και σας δίνουμε λίστα με προτεραιότητες.