Παρακολούθηση bot AI
Τα αιτήματα αποδίδονται σε bot με αντιστοίχιση user-agent, όχι με επαληθευμένη ταυτότητα bot. Η παρακολούθηση καταγράφει παρατηρούμενα αιτήματα· ένα user-agent μπορεί να πλαστογραφηθεί.
Ο έλεγχος ανιχνευτών AI του core αποφασίζει τι λέει το robots.txt στους ανιχνευτές AI. Η παρακολούθηση bot AI του Pro είναι η άλλη πλευρά: καταγράφει τι έκαναν πραγματικά — ποιοι ανιχνευτές AI προσπέλασαν τον ιστότοπό σας, πόσο συχνά και την τελευταία URL και κατάσταση HTTP που προσπέλασε ο καθένας.
Επαναχρησιμοποιεί την υποδομή παρακολούθησης 404 (καθολικό middleware με φάση τερματισμού, μοντέλο εισαγωγής/ενημέρωσης με καταμέτρηση επισκέψεων και την ίδια προσέγγιση ιδιωτικότητας), αλλά χρησιμοποιεί ως κλειδί το bot αντί για τη διαδρομή και καταγράφει σε κάθε κατάσταση απόκρισης — ακριβώς τους ανιχνευτές AI που εξαιρεί σκόπιμα η παρακολούθηση 404. Η αναγνώριση bot επαναχρησιμοποιεί το AiCrawlerRegistry του core, ώστε η πολιτική robots.txt και η κίνηση που παρατηρείτε να έχουν μία πηγή αλήθειας.
Απαιτεί core ≥ 3.3
Η παρακολούθηση αναγνωρίζει bot με τον κατάλογο ανιχνευτών AI του core (SEO::aiCrawlers()). Σε παλαιότερο core παραμένει αδρανής.
Ενεργοποίηση
Ανενεργή από προεπιλογή. Ενεργοποιήστε τη και το καθολικό middleware καταγράφει τους αντίστοιχους ανιχνευτές μετά από κάθε απόκριση (δεν καθυστερεί ποτέ τη σελίδα):
// config/seo-pro.php
'ai_bots' => [
'enabled' => true,
],Αυτό ήταν — το middleware καταχωρίζεται αυτόματα (εξαίρεση με ai_bots.auto_register_middleware). Εισάγεται ή ενημερώνεται μία γραμμή ανά γνωστό bot, οπότε το μέγεθος του πίνακα περιορίζεται από τον κατάλογο.
Ανάγνωση του αρχείου καταγραφής
Headless
use Rankbeam\Seo\Pro\Facades\SeoPro;
SeoPro::aiBots()->hits(); // every bot seen, most-hit first
SeoPro::aiBots()->forPurpose('ai_training'); // just the trainers
SeoPro::aiBots()->totalHits(); // total recorded fetches
SeoPro::aiBots()->isEnabled();Κάθε γραμμή εκθέτει bot, label, operator, purpose, hit_count, last_path, last_status, first_seen_at και last_seen_at.
Artisan
php artisan seo-pro:ai-bots # most-hit first
php artisan seo-pro:ai-bots --purpose=ai_training # filter by purpose
php artisan seo-pro:ai-bots-prune # drop stale bots + old daily bucketsFilament
Με καταχωρισμένο το πρόσθετο Pro, εμφανίζεται πίνακας AI bots στην ομάδα πλοήγησης SEO: bot, διαχειριστής, σκοπός, επισκέψεις, τελευταία κατάσταση, τελευταία διαδρομή, τελευταία εμφάνιση — με φίλτρο σκοπού, μόνο για ανάγνωση.
Ιδιωτικότητα
Η ίδια προσέγγιση με την παρακολούθηση 404: δεν αποθηκεύεται IP από προεπιλογή. Η ρητή επιλογή ai_bots.hash_ip αποθηκεύει μόνο sha256 με κλειδί (ip_hash) — η αρχική IP δεν γράφεται ποτέ.
'ai_bots' => [
'enabled' => true,
'hash_ip' => false, // true → keyed sha256 only
'exclude_paths' => ['/filament/*', '/livewire/*', /* … */],
'max_path_length' => 500,
'retention_days' => 90, // lifetime rows; seo-pro:ai-bots-prune; null disables
// Day-granular per-path buckets (below)
'daily_enabled' => true, // false → keep only the lifetime leaderboard
'daily_max_paths' => 500, // distinct paths tracked per bot per day
'daily_retention_days' => 90, // prune buckets older than this; null disables
],Μετρήσεις περιόδου (ημερήσιες ομάδες)
Ο πίνακας συνολικού ιστορικού κρατά μία γραμμή ανά bot — καλός για κατάταξη δραστηριότητας, αλλά δεν μπορεί να απαντήσει πόσες επισκέψεις ή πόσες διαφορετικές URL προσπέλασε ένα bot σε συγκεκριμένο διάστημα. Με ενεργό το daily_enabled (η προεπιλογή), κάθε επίσκεψη καταγράφεται επίσης σε ομάδα ανά ημέρα και ανά διαδρομή (seo_ai_bot_daily), ώστε η αναφορά με δική σας επωνυμία να δείχνει πραγματικά στοιχεία ανά περίοδο — επισκέψεις από την τελευταία αναφορά και διαφορετικές URL αυτής της περιόδου — αντί για διαφορά συνολικών μετρητών.
Ο περιορισμός μεγέθους (ο λόγος που το συνολικό αρχείο είχε μία γραμμή ανά bot) διατηρείται:
- όριο διαφορετικών διαδρομών ανά bot και ανά ημέρα (
daily_max_paths) — πέρα από αυτό, οι επιπλέον νέες διαδρομές ενός bot εντάσσονται σε μία ομάδα υπερχείλισης, ώστε το ημερήσιο πλήθος επισκέψεων να παραμένει ακριβές χωρίς ανεξέλεγκτη αύξηση γραμμών (ένα πλήθος διαφορετικών URL που έφτασε το όριο εμφανίζεται ως «N+»)· - παράθυρο διατήρησης (
daily_retention_days), που καθαρίζεται από τοseo-pro:ai-bots-prune.
Ορίστε το daily_enabled σε false για να κρατάτε μόνο τη συνολική κατάταξη δραστηριότητας (τότε η αναφορά επιστρέφει στη διαφορά από το στιγμιότυπο προηγούμενης αναφοράς για το «από την τελευταία», και οι υπάρχουσες ομάδες αγνοούνται ώστε να μη διαβάζεται ποτέ παρωχημένος πίνακας).
Τα στοιχεία περιόδου έχουν ανάλυση ημέρας: το «από την τελευταία αναφορά» μετρά ολόκληρες ημέρες από την ημέρα της προηγούμενης αναφοράς και μετά, οπότε μια επίσκεψη εκείνης της ημέρας μπορεί να βρίσκεται πριν ή μετά την ακριβή ώρα παραγωγής. Σε κανονική συχνότητα (ημερήσια/εβδομαδιαία/μηνιαία), αυτή η απόκλιση ορίου είναι αμελητέα.
Από την παρατήρηση στον έλεγχο
Η παρακολούθηση σας λέει ποιος ανιχνεύει· ο έλεγχος ανιχνευτών AI του core αποφασίζει τι επιτρέπεται να πάρουν. Εμφανίστηκε ανιχνευτής εκπαίδευσης τον οποίο θέλετε να περιορίσετε;
// config/seo.php
'ai_crawlers' => [
'overrides' => ['bytespider' => 'disallow'],
],php artisan seo:robots-txtΘυμηθείτε ότι ορισμένα bot, σύμφωνα με την τεκμηρίωσή τους, δεν τηρούν το robots.txt — μέσω της παρακολούθησης τα εντοπίζετε και αποφασίζετε αν θα τα αποκλείσετε στην περίμετρο (firewall / WAF / Cloudflare).