İçeriğe geç

SEO puanı: şeffaf, sürümlü ve Pro'ya ait

Pro taraması her sayfaya 0–100 SEO puanı verir; RankMath veya Yoast'tan geçenlerin aradığı tek sayı budur. Hesaplama yöntemi gizli bir notun aksine tamamen denetlenebilir: düşülen her puan tam olarak bir tarama sorununa dayanır ve aynı sorun kümesi daima aynı sayıyı üretir.

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

Tek sayı, tek sorumlu

Sayısal puan bir Pro özelliğidir. Pro'nun seo_scan_results kaydında yer alır; core'un seo_meta kaydına geri yazılmaz. Eski seo_score sütunu Core 3'te kaldırılmıştır. Ücretsiz core seo:audit, sayfa başına geçti / uyarı / başarısız sonucu bildirir ve sayı vermez; puan ücretli ek değerdir.

Puanlama ölçütleri

Puan, yayımlanmış ve sürümlü ölçütlerle hesaplanır: Rankbeam\Seo\Pro\Scanning\ScoreRubric. Bunu iki şey belirler: hesaba katılan sorun kodlarının açık bir izin listesi ve önem derecesi başına sabit puan kesintisi.

Önem derecesiKesintiAnlamı
critical−40Bu ölçütlerde yüksek etkili bulgu.
warning−15Yakında araştırılması gereken bulgu.
notice−5Yapılması yararlı bir iyileştirme.

Her kodun önem derecesi, tek doğruluk kaynağı olan sorun kaydından doğrudan okunur; ölçütler bunu yeniden türetmez. Puanın deterministik kalması için her kodun tek bir önem derecesi vardır.

Puanın hesaba kattıkları

Bunlar, editoryal yorum gerektiren sezgisel kontroller dahil, Rankbeam'in ürün ölçütleriyle seçilmiş deterministik kontrollerdir. Kritik sorun 40, uyarı 15, bildirim 5 puan düşürür; puan arama performansının tahmini değildir.

KodÖnem derecesiKesinti
missing_titlecritical−40
missing_descriptionwarning−15
missing_og_imagenotice−5
duplicate_titlewarning−15
duplicate_descriptionwarning−15
title_too_longwarning−15
title_too_shortnotice−5
description_too_longwarning−15
description_too_shortnotice−5
robots_conflict_indexingcritical−40
robots_conflict_followingwarning−15
noindex_warningwarning−15
invalid_canonicalcritical−40
cross_domain_canonicalwarning−15
shared_canonicalnotice−5
insecure_canonicalwarning−15
http_errorcritical−40
empty_responsecritical−40
missing_canonicalnotice−5
missing_h1notice−5
missing_image_altwarning−15
thin_contentnotice−5
mixed_contentwarning−15
canonical_target_brokencritical−40
canonical_target_redirectwarning−15
canonical_target_noindexwarning−15

Meta veri kodları model taramasında, oluşturulmuş sayfa/ağ kodları ise yalnızca URL taramasında tespit edildiğinden (yürütme sınıflarına bakın), model hedefinin puanı meta veri kontrollerini, URL hedefinin puanı ise oluşturulmuş sayfayı yansıtır. Model taramasında 100 puan, “meta veri kusuru yok” demektir; “oluşturulan sayfa kusursuz” demek değildir. Bunun için URL'yi tarayın.

Puanın bilinçli olarak hesaba KATMADIKLARI

Bu kayıt kodları özellikle dışarıda bırakılmıştır. İstisnalar sözleşmenin parçasıdır; bir test, kayıtlı her kodun puanlandığını veya burada listelendiğini doğrular:

KodNeden dışarıda
missing_focus_keywordTavsiye. İsteğe bağlı seo.keywords.enabled iş akışına bağlıdır. Bir sayfa odak anahtar kelime kullanmadığı için düşük puan almamalı ve puan bir yapılandırma seçeneğine bağlı olmamalıdır.
noindex_pageBilgi. noindex, meta veri kalitesi kusuru değil, bilinçli bir durumdur. “Kendine işaret eden kanonik URL ile noindex” sezgisel kontrolü bunun yerine noindex_warning üzerinden puanlanır.
multiple_h1Bilgi. Google birden fazla H1'e tolerans gösterir; çoklu H1 kesintisi yoktur.
blocked_urlKanıt yokluğu. SsrfGuard isteği reddettiği için sayfa hiç kontrol edilmedi; sayfanın kusuru değildir.
canonical_target_blockedKanıt yokluğu. Kanonik hedef doğrulanamadı; sayfanın kusuru değildir.
hreflang_invalid_code, hreflang_missing_self_reference, hreflang_duplicate_code, hreflang_missing_x_defaultŞimdilik tavsiye. Bu Pro hreflang kodları taramada görünür; ücretsiz denetimin kendi hreflang kodları vardır ancak henüz puanı değiştirmez. Eklenmesi VERSION artışı gerektirir.
html_lang_missing, html_lang_invalid, html_lang_mismatchTavsiye. Dil kontrolleri bu ölçütlerin dışında tutulur.
hreflang_not_reciprocalTavsiye. İsteğe bağlı karşılıklılık kontrolüdür; puanlanmaz.
hreflang_target_unverifiedKanıt yokluğu. Karşılıklılık doğrulanamadı.
aeo_missing_author, aeo_article_missing_dateTavsiye. Yanıt hazırlığı (AEO) sinyalleri, tarama ve ücretsiz denetimde yazar varlığı veya yayın tarihi eksik yazıları işaretler; puanı değiştirmez. Bunun için VERSION artışı gerekir.

Anahtar kelime yoğunluğu, etkili sözcükler ve sayfa içi kontrol listesinin geri kalanı puana hiç katılmaz. Bunlar kayıt kodları değil, ayrı bir geçti/uyarı/başarısız listesi oluşturan tavsiye kontrolleridir.

Sürümleme: geçmiş puanlar sessizce değişmez

Saklanan her puan, onu üreten ScoreRubric::VERSION ile damgalanır (rubric_version). Bunun iki sonucu vardır:

  • Yeni bir sorun kodu, izin listesine bilinçli olarak eklenene kadar hiç puan düşürmez. Dolayısıyla yeni kontrol yayımlamak saklanan puanı geriye dönük değiştiremez. İzin listesi veya ağırlık değişikliği de ölçüt değişikliğidir ve sürümü artırır.
  • Puan saklanır; okunurken yeniden hesaplanmaz. Geçen hafta gördüğünüz sayı, onu açıklayan ölçütlerle birlikte bugün de aynıdır.

Nerede saklanır

Her tarama, seo_scan_results içinde hedef başına bir satır ekler veya günceller:

Sütunİçeriği
scannable_type / scannable_idPuanlanan model (URL hedefleri için null).
urlPuanlanan URL.
score0–100 arasındaki sayı.
rubric_versionPuanı üreten ölçütler.
penalty_totalAlt sınır olan 0 uygulanmadan önceki ham kesinti toplamı.
scored_issuesSayıyı değiştiren sorun sayısı.
breakdown[{code, severity, penalty}, …]: tam hesap dökümü.
keywords_enabledTarama anındaki seo.keywords.enabled durumu (şeffaflık için kaydedilir; puan buna bağlı değildir).
scan_run_idPuanı hesaplayan çalıştırma (çalıştırma temizlenince satır silinmez, bu alan null yapılır; puanlar çalıştırma geçmişi değil, güncel durumdur).
scored_atPuanlama zamanı.

Puanı okumak

Panelsiz: bir modelin son puanı:

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, özetinde ortalama site puanını gösterir. Filament panosu bunu nota göre renklendirilmiş “Ort. SEO puanı” ana istatistiği olarak sunar.

Not aralıkları

Sayıdan türetilen, sunum amaçlı harf notu; esas alınan değer sayıdır:

PuanNot
90-100A
75-89B
50-74C
25-49D
0-24F

Yayın öncesi kontrol sinyali (noindex_warning)

noindex_warning, bir sayfa noindex ile kendine işaret eden kanonik URL'yi bir arada kullandığında tetiklenir. Rankbeam bunu yayın öncesinde incelenecek bir sinyal sayar. Kendine işaret eden kanonik URL, dizine ekleme niyetini kanıtlamaz; bu birleşim bilinçli olabilir. Başka alan adına işaret eden kanonik URL bu sezgisel kontrolü tetiklemez. Sorun, context.shipping_signal (örneğin self_canonical) ile karşılaştırılan canonical ve page_url değerlerini taşır.

İki tarayıcı da bu kontrolü uygular. Model taraması (PageScanner), saklanan kanonik URL'yi model URL'siyle karşılaştırır. Oluşturulan sayfanın URL taraması (UrlScanner), kendine işaret eden kanonik URL'ye sahip noindex sayfayı bilgi amaçlı noindex_page durumundan puanlanan noindex_warning durumuna yükseltir. noindex_page kodunun kendisi bu nedenle dışarıdadır: olası çelişki her iki yolda da noindex_warning ile ele alınır. Dizine ekleme yönergesini değiştirmeden önce sayfanın gerçek amacını inceleyin.

Yapılandırma

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

İzin listesi ve ağırlıklar yapılandırılamaz: belirli bir rubric_version için bütün kurulumlarda puan deterministik olmalıdır. Hesaplama biçimini değiştirmek bir ayar değil, kod düzeyinde ölçüt değişikliğidir.

rankbeam/laravel-seo MIT lisansı altında dağıtılır.