Μετάβαση στο περιεχόμενο

Η βαθμολογία SEO — διαφανής, με εκδόσεις, στο Pro

Η σάρωση Pro δίνει σε κάθε σελίδα βαθμολογία SEO 0-100 — τον έναν αριθμό που αναζητά όποιος μεταφέρεται από RankMath ή Yoast. Σε αντίθεση με έναν αδιαφανή βαθμό, αυτή είναι πλήρως ελέγξιμη: κάθε πόντος που αφαιρεί συνδέεται με ακριβώς ένα ζήτημα σάρωσης και το ίδιο σύνολο ζητημάτων παράγει πάντα τον ίδιο αριθμό.

score = 100 − Σ penalty(issue) for each scored issue   (floored at 0)

Ένας αριθμός, ένας υπεύθυνος

Η αριθμητική βαθμολογία είναι λειτουργία Pro. Βρίσκεται στην εγγραφή seo_scan_results του Pro, ποτέ ξανά στο seo_meta του πυρήνα (η παλιά στήλη seo_score αφαιρέθηκε στο Core 3). Το δωρεάν seo:audit του πυρήνα αναφέρει ανά σελίδα pass / warn / fail χωρίς αριθμό — η βαθμολογία είναι η επιπλέον δυνατότητα επί πληρωμή.

Η κλίμακα βαθμολόγησης

Η βαθμολογία υπολογίζεται από δημοσιευμένη κλίμακα με εκδόσειςRankbeam\Seo\Pro\Scanning\ScoreRubric. Την καθορίζουν δύο στοιχεία: ρητή λίστα επιτρεπόμενων κωδικών ζητημάτων που μετρούν και σταθερή ποινή ανά σοβαρότητα.

ΣοβαρότηταΠοινήΣημασία
critical−40Εύρημα μεγάλου αντίκτυπου σε αυτή την κλίμακα.
warning−15Εύρημα προς σύντομη διερεύνηση.
notice−5Επιθυμητή βελτίωση.

Η σοβαρότητα κάθε κωδικού διαβάζεται απευθείας από το μητρώο ζητημάτων (τη μοναδική πηγή αλήθειας) — η κλίμακα δεν την υπολογίζει ξανά. Η σοβαρότητα είναι 1:1 ανά κωδικό ακριβώς για να παραμένει ντετερμινιστική η βαθμολογία.

Τι μετρά η βαθμολογία

Αυτοί είναι ντετερμινιστικοί έλεγχοι επιλεγμένοι από την κλίμακα του προϊόντος Rankbeam, μαζί με ευρετικές που χρειάζονται συντακτική ερμηνεία. Ένα κρίσιμο κοστίζει 40, μια προειδοποίηση 15, μια ειδοποίηση 5· η βαθμολογία δεν είναι πρόβλεψη απόδοσης στην αναζήτηση.

ΚωδικόςΣοβαρότηταΠοινή
missing_titleκρίσιμη−40
missing_descriptionπροειδοποίηση−15
missing_og_imageειδοποίηση−5
duplicate_titleπροειδοποίηση−15
duplicate_descriptionπροειδοποίηση−15
title_too_longπροειδοποίηση−15
title_too_shortειδοποίηση−5
description_too_longπροειδοποίηση−15
description_too_shortειδοποίηση−5
robots_conflict_indexingκρίσιμη−40
robots_conflict_followingπροειδοποίηση−15
noindex_warningπροειδοποίηση−15
invalid_canonicalκρίσιμη−40
cross_domain_canonicalπροειδοποίηση−15
shared_canonicalειδοποίηση−5
insecure_canonicalπροειδοποίηση−15
http_errorκρίσιμη−40
empty_responseκρίσιμη−40
missing_canonicalειδοποίηση−5
missing_h1ειδοποίηση−5
missing_image_altπροειδοποίηση−15
thin_contentειδοποίηση−5
mixed_contentπροειδοποίηση−15
canonical_target_brokenκρίσιμη−40
canonical_target_redirectπροειδοποίηση−15
canonical_target_noindexπροειδοποίηση−15

Επειδή οι κωδικοί μεταδεδομένων εντοπίζονται σε σάρωση μοντέλου και οι κωδικοί απόδοσης/δικτύου μόνο σε σάρωση URL (δείτε τις κλάσεις εκτέλεσης), η βαθμολογία ενός στόχου μοντέλου αντικατοπτρίζει τους ελέγχους μεταδεδομένων και ενός στόχου URL την αποδιδόμενη σελίδα. Βαθμολογία 100 σε σάρωση μοντέλου σημαίνει «χωρίς ελαττώματα μεταδεδομένων», όχι «η αποδιδόμενη σελίδα είναι τέλεια» — σαρώστε τη URL γι' αυτό.

Τι σκόπιμα ΔΕΝ μετρά η βαθμολογία

Αυτοί οι κωδικοί μητρώου εξαιρούνται σκόπιμα. Οι εξαιρέσεις είναι μέρος του συμβολαίου (μια δοκιμή επιβεβαιώνει ότι κάθε κωδικός μητρώου είτε βαθμολογείται είτε αναφέρεται εδώ):

ΚωδικόςΓιατί εξαιρείται
missing_focus_keywordΣυμβουλευτικός. Ενεργοποιείται μόνο μέσω της προαιρετικής ροής seo.keywords.enabled — μια σελίδα δεν πρέπει να βαθμολογείται χαμηλότερα επειδή δεν υιοθετεί λέξεις-κλειδιά εστίασης και η βαθμολογία δεν πρέπει να εξαρτάται από σημαία ρυθμίσεων.
noindex_pageΠληροφοριακός. Το noindex είναι σκόπιμη κατάσταση, όχι ελάττωμα ποιότητας μεταδεδομένων. Η ευρετική «noindex με κανονική URL της ίδιας της σελίδας» βαθμολογείται μέσω του noindex_warning.
multiple_h1Πληροφοριακός. Το Google δέχεται πολλά H1 — χωρίς ποινή για πολλαπλά H1.
blocked_urlΑπουσία στοιχείων. Το SsrfGuard αρνήθηκε την ανάκτηση, οπότε η σελίδα δεν ελέγχθηκε ποτέ — δεν είναι ελάττωμα της σελίδας.
canonical_target_blockedΑπουσία στοιχείων. Ο κανονικός προορισμός δεν μπόρεσε να επαληθευτεί — δεν είναι ελάττωμα της σελίδας.
hreflang_invalid_code, hreflang_missing_self_reference, hreflang_duplicate_code, hreflang_missing_x_defaultΣυμβουλευτικοί (προς το παρόν). Αυτοί οι κωδικοί hreflang του Pro εμφανίζονται στη σάρωση· ο δωρεάν έλεγχος έχει δικούς του κωδικούς hreflang, αλλά δεν επηρεάζει ακόμη τη βαθμολογία — η προσθήκη θα απαιτούσε αύξηση του VERSION.
html_lang_missing, html_lang_invalid, html_lang_mismatchΣυμβουλευτικοί. Οι έλεγχοι γλώσσας μένουν εκτός αυτής της κλίμακας.
hreflang_not_reciprocalΣυμβουλευτικός. Προαιρετικός έλεγχος αμοιβαιότητας, δεν βαθμολογείται.
hreflang_target_unverifiedΑπουσία στοιχείων. Η αμοιβαιότητα δεν μπόρεσε να επαληθευτεί.
aeo_missing_author, aeo_article_missing_dateΣυμβουλευτικοί. Σήματα ετοιμότητας απαντήσεων (AEO) — επισημαίνουν άρθρο χωρίς οντότητα συντάκτη ή ημερομηνία δημοσίευσης στη σάρωση και στον δωρεάν έλεγχο, αλλά δεν επηρεάζουν τη βαθμολογία (θα απαιτούνταν αύξηση του VERSION).

Η πυκνότητα λέξεων-κλειδιών, οι λέξεις έμφασης και τα υπόλοιπα της λίστας ελέγχου σελίδας δεν μπαίνουν ποτέ στη βαθμολογία — είναι συμβουλευτικοί έλεγχοι (ξεχωριστή λίστα pass/warn/fail), όχι κωδικοί μητρώου.

Εκδόσεις — οι ιστορικές βαθμολογίες δεν αλλάζουν ποτέ σιωπηλά

Κάθε αποθηκευμένη βαθμολογία σημειώνεται με το ScoreRubric::VERSION που την παρήγαγε (rubric_version). Δύο συνέπειες:

  • Ένας νέος κωδικός ζητήματος δεν βαθμολογεί τίποτα μέχρι να προστεθεί σκόπιμα στη λίστα επιτρεπόμενων — οπότε η διάθεση νέου ελέγχου δεν μπορεί ποτέ να αλλάξει αναδρομικά μια αποθηκευμένη βαθμολογία. (Αλλαγή λίστας ή βάρους είναι η ίδια αλλαγή κλίμακας και αυξάνει την έκδοση.)
  • Η βαθμολογία αποθηκεύεται, δεν υπολογίζεται ξανά κατά την ανάγνωση. Ο αριθμός που είδατε την περασμένη εβδομάδα είναι αυτός που βλέπετε σήμερα, μαζί με την κλίμακα που τον εξηγεί.

Πού αποθηκεύεται

Κάθε σάρωση εισάγει ή ενημερώνει μία εγγραφή ανά στόχο στο seo_scan_results:

ΣτήληΤι περιέχει
scannable_type / scannable_idΤο βαθμολογημένο μοντέλο (null για στόχους URL).
urlΗ βαθμολογημένη URL.
scoreΟ αριθμός 0-100.
rubric_versionΗ κλίμακα που τον παρήγαγε.
penalty_totalΑκατέργαστο άθροισμα ποινών πριν από το κατώτατο όριο 0.
scored_issuesΠόσα ζητήματα επηρέασαν τον αριθμό.
breakdown[{code, severity, penalty}, …] — η πλήρης διαδρομή υπολογισμού.
keywords_enabledΗ κατάσταση seo.keywords.enabled κατά τη σάρωση (καταγράφεται για διαφάνεια· η βαθμολογία δεν εξαρτάται από αυτή).
scan_run_idΗ εκτέλεση που τη βαθμολόγησε (γίνεται null, δεν διαγράφεται η βαθμολογία όταν καθαρίζεται η εκτέλεση — οι βαθμολογίες είναι τρέχουσα κατάσταση, όχι ιστορικό εκτελέσεων).
scored_atΠότε βαθμολογήθηκε.

Ανάγνωση της βαθμολογίας

Χωρίς πάνελ — η πιο πρόσφατη βαθμολογία ενός μοντέλου:

php
use Rankbeam\Seo\Pro\Facades\SeoPro;

$result = SeoPro::resultFor($post);

$result?->score;     // e.g. 85
$result?->grade();   // 'A'..'F'
$result?->breakdown; // [['code' => 'cross_domain_canonical', 'severity' => 'warning', 'penalty' => 15]]

Το php artisan seo-pro:scan-status εκτυπώνει τη μέση βαθμολογία ιστοτόπου στην περίληψή του. Ο πίνακας ελέγχου Filament τη δείχνει ως κύριο στατιστικό «Μέση βαθμολογία SEO», χρωματισμένο ανά βαθμό.

Ζώνες βαθμών

Βαθμός παρουσίασης με γράμμα που προκύπτει από τον αριθμό (ο αριθμός είναι το συμβόλαιο):

ΒαθμολογίαΒαθμός
90-100A
75-89B
50-74C
25-49D
0-24F

Το σήμα προς έλεγχο πριν από τη διάθεση (noindex_warning)

Το noindex_warning ενεργοποιείται όταν μια σελίδα συνδυάζει noindex με κανονική URL της ίδιας της σελίδας (κανονική που ονομάζει τη δική της URL). Το Rankbeam το αντιμετωπίζει ως σήμα προς έλεγχο πριν από τη διάθεση. Μια κανονική URL της ίδιας της σελίδας δεν αποδεικνύει πρόθεση ευρετηρίασης: ο συνδυασμός μπορεί να είναι σκόπιμος. Μια κανονική URL άλλου τομέα δεν ενεργοποιεί αυτή την ευρετική. Το ζήτημα περιέχει context.shipping_signal (για παράδειγμα self_canonical), μαζί με τα συγκρινόμενα canonical και page_url.

Και οι δύο σαρωτές εφαρμόζουν τον έλεγχο. Η σάρωση μοντέλου (PageScanner) συγκρίνει την αποθηκευμένη κανονική URL με τη URL μοντέλου. Η σάρωση αποδιδόμενης URL (UrlScanner) αναβαθμίζει μια σελίδα noindex με κανονική URL του εαυτού της από πληροφοριακό noindex_page σε βαθμολογούμενο noindex_warning. Γι' αυτό εξαιρείται το ίδιο το noindex_page: η πιθανή σύγκρουση αντιμετωπίζεται από το noindex_warning και στις δύο διαδρομές. Ελέγξτε την πραγματική πρόθεση της σελίδας πριν αλλάξετε την οδηγία ευρετηρίασής της.

Ρυθμίσεις

php
// config/seo-pro.php → 'scan'
'score' => [
    'enabled' => true, // turn the scoring pass + its persistence on/off
],

Η λίστα επιτρεπόμενων και τα βάρη δεν ρυθμίζονται: η βαθμολογία πρέπει να είναι ντετερμινιστική για δεδομένο rubric_version σε κάθε εγκατάσταση, οπότε η αλλαγή του τρόπου υπολογισμού είναι αλλαγή κλίμακας σε επίπεδο κώδικα, όχι ρύθμιση.

Το rankbeam/laravel-seo διανέμεται με άδεια MIT.