{"id":342349,"date":"2026-08-03T15:49:49","date_gmt":"2026-08-03T15:49:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/seo-log\/"},"modified":"2026-08-03T15:49:27","modified_gmt":"2026-08-03T15:49:27","slug":"trm-seo-log","status":"publish","type":"plugin","link":"https:\/\/en-au.wordpress.org\/plugins\/trm-seo-log\/","author":16679645,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.1","stable_tag":"1.4.1","tested":"7.0.2","requires":"6.2","requires_php":"7.4","requires_plugins":null,"header_name":"Trimardeau SEO Log","header_author":"Nicolas Trimardeau","header_description":"Log and analyze search engine and AI crawler visits (SEO & GEO analytics).","assets_banners_color":"4c7080","last_updated":"2026-08-03 15:49:27","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.1":{"tag":"1.4.1","author":"nicolastrimardeau","date":"2026-08-03 15:49:27"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3633173,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3633173,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3633173,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3633173,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.4.1"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3633173,"resolution":"1","location":"assets","locale":"","width":1286,"height":900},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3633173,"resolution":"2","location":"assets","locale":"","width":1286,"height":900},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3633173,"resolution":"3","location":"assets","locale":"","width":1286,"height":900},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3633173,"resolution":"4","location":"assets","locale":"","width":1286,"height":900},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3633173,"resolution":"5","location":"assets","locale":"","width":1286,"height":900},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3633173,"resolution":"6","location":"assets","locale":"","width":1286,"height":900}},"screenshots":{"1":"Dashboard: bot visits over time, trends, bot families and crawl heatmap.","2":"Contents: every content visited by bots, sortable and filterable.","3":"Live Log: the raw chronological journal of bot requests.","4":"404 Monitor: broken URLs that bots keep hitting.","5":"Post editor metabox: 30-day chart and per-bot stats.","6":"Settings: retention, proxy support and database usage."}},"plugin_section":[262246],"plugin_tags":[2353,9837,13864,908,186],"plugin_category":[55],"plugin_contributors":[165224],"plugin_business_model":[],"class_list":["post-342349","plugin","type-plugin","status-publish","hentry","plugin_section-dashboard-widgets","plugin_tags-ai","plugin_tags-crawler","plugin_tags-googlebot","plugin_tags-log","plugin_tags-seo","plugin_category-seo-and-marketing","plugin_contributors-nicolastrimardeau","plugin_committers-nicolastrimardeau"],"banners":{"banner":"https:\/\/ps.w.org\/trm-seo-log\/assets\/banner-772x250.png?rev=3633173","banner_2x":"https:\/\/ps.w.org\/trm-seo-log\/assets\/banner-1544x500.png?rev=3633173","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/trm-seo-log\/assets\/icon-128x128.png?rev=3633173","icon_2x":"https:\/\/ps.w.org\/trm-seo-log\/assets\/icon-256x256.png?rev=3633173","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/trm-seo-log\/assets\/screenshot-1.png?rev=3633173","caption":"Dashboard: bot visits over time, trends, bot families and crawl heatmap."},{"src":"https:\/\/ps.w.org\/trm-seo-log\/assets\/screenshot-2.png?rev=3633173","caption":"Contents: every content visited by bots, sortable and filterable."},{"src":"https:\/\/ps.w.org\/trm-seo-log\/assets\/screenshot-3.png?rev=3633173","caption":"Live Log: the raw chronological journal of bot requests."},{"src":"https:\/\/ps.w.org\/trm-seo-log\/assets\/screenshot-4.png?rev=3633173","caption":"404 Monitor: broken URLs that bots keep hitting."},{"src":"https:\/\/ps.w.org\/trm-seo-log\/assets\/screenshot-5.png?rev=3633173","caption":"Post editor metabox: 30-day chart and per-bot stats."},{"src":"https:\/\/ps.w.org\/trm-seo-log\/assets\/screenshot-6.png?rev=3633173","caption":"Settings: retention, proxy support and database usage."}],"raw_content":"<!--section=description-->\n<p>Trimardeau SEO Log records every visit from search engine bots (Googlebot, Bingbot, DuckDuckBot\u2026), AI training crawlers (GPTBot, ClaudeBot, CCBot, Bytespider\u2026), live AI assistants (ChatGPT-User, Perplexity-User\u2026), SEO tools and social preview bots \u2014 and turns them into clear, actionable statistics. Nothing to configure: activate it and watch the bots arrive.<\/p>\n\n<p><strong>AI visibility (GEO).<\/strong> Generative Engine Optimization starts with one question: do AI crawlers and assistants read your site? Trimardeau SEO Log answers it with dedicated stats for AI training crawlers and logs every live AI assistant visit \u2014 which assistant reads which page, in real time.<\/p>\n\n<p><strong>Everything is measured where you work:<\/strong><\/p>\n\n<ul>\n<li><strong>Dashboard<\/strong> \u2014 bot visits over time, trend vs the previous period, most crawled content, most active bots, HTTP status codes served to bots, hour-by-day crawl heatmap.<\/li>\n<li><strong>Contents<\/strong> \u2014 a sortable, filterable overview of every post, page, term, archive or sitemap visited by bots, with the dominant bot for each.<\/li>\n<li><strong>Live Log<\/strong> \u2014 the raw, chronological journal of every bot request (bot, URL, HTTP status).<\/li>\n<li><strong>404 Monitor<\/strong> \u2014 every broken URL that bots keep hitting, grouped and ranked, so you can fix or redirect what actually matters to crawlers.<\/li>\n<li><strong>Per-content stats<\/strong> \u2014 last crawl date, 30-day chart and per-bot counts on every post, page, custom post type and taxonomy term.<\/li>\n<\/ul>\n\n<p><strong>Lightweight and privacy-friendly by design:<\/strong><\/p>\n\n<ul>\n<li>Human visitors are never logged \u2014 zero extra SQL query for them, no cookies, no consent banner needed.<\/li>\n<li>No external requests: everything (including charts) is bundled.<\/li>\n<li>Raw log retention is configurable (30 days by default, 0 = keep forever); daily aggregated statistics are kept forever and stay small.<\/li>\n<li>Fully translatable \u2014 French, Spanish, German, Italian and Brazilian Portuguese translations are maintained on translate.wordpress.org.<\/li>\n<li>Bundles <a href=\"https:\/\/www.chartjs.org\/\">Chart.js<\/a> v4.5.1 (MIT) for the charts \u2014 no CDN, loaded only on the plugin's admin pages.<\/li>\n<\/ul>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate the plugin.<\/li>\n<li>That's it \u2014 bot visits start being recorded immediately. Open the SEO Log menu.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20slow%20my%20site%20down%3F\"><h3>Does it slow my site down?<\/h3><\/dt>\n<dd><p>No. Human visitors trigger zero extra SQL query. Bot hits are written after the response is sent, so bots don't wait either.<\/p><\/dd>\n<dt id=\"does%20it%20work%20behind%20a%20cache%20or%20cdn%3F\"><h3>Does it work behind a cache or CDN?<\/h3><\/dt>\n<dd><p>Bot requests that reach WordPress are logged. Pages served entirely from a full-page cache or CDN edge never reach PHP and cannot be seen by any WordPress plugin. Note that most search and AI crawlers frequently bypass caches.<\/p><\/dd>\n<dt id=\"is%20it%20gdpr%20compliant%3F\"><h3>Is it GDPR compliant?<\/h3><\/dt>\n<dd><p>Human visitors are never logged. Only requests from identified bots are stored, and you can delete everything on uninstall.<\/p><\/dd>\n<dt id=\"what%20is%20the%20difference%20between%20ai%20training%20crawlers%20and%20ai%20assistants%3F\"><h3>What is the difference between AI training crawlers and AI assistants?<\/h3><\/dt>\n<dd><p>Training crawlers (GPTBot, ClaudeBot, CCBot\u2026) collect content to train models. AI assistants (ChatGPT-User, Perplexity-User\u2026) fetch your pages live while answering a user \u2014 meaning your content is being read and cited in real time. Both are fully logged, URLs included.<\/p><\/dd>\n<dt id=\"how%20long%20is%20the%20data%20kept%3F\"><h3>How long is the data kept?<\/h3><\/dt>\n<dd><p>Raw request logs: 30 days by default, configurable in the settings (0 = keep forever). Daily aggregated statistics: forever \u2014 they are tiny.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.1<\/h4>\n\n<ul>\n<li>All plugin functions, classes, constants, options, hooks and database tables now use the longer <code>trimseolog<\/code> prefix (was <code>trm_seolog<\/code>).<\/li>\n<li>All SQL identifiers now go through <code>$wpdb-&gt;prepare()<\/code> with the <code>%i<\/code> placeholder; minimum required WordPress version raised to 6.2 accordingly.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>Plugin renamed to \"Trimardeau SEO Log\".<\/li>\n<li>AI assistant visits (ChatGPT-User, Perplexity-User, Claude-User\u2026) are now fully logged, URLs included, like every other bot family \u2014 with a dedicated dashboard card.<\/li>\n<li>New setting: raw log retention in days (0 = keep forever).<\/li>\n<li>Hardened sanitization of request data (user agent, URL, HTTP method) before logging.<\/li>\n<li>Updated bundled Chart.js to 4.5.1.<\/li>\n<li>Translations are now delivered through translate.wordpress.org instead of bundled files.<\/li>\n<\/ul>\n\n<h4>1.3.1<\/h4>\n\n<ul>\n<li>Performance: the nightly aggregation now only processes days since the last rollup instead of re-scanning the whole raw log.<\/li>\n<li>Completed German, Italian and Brazilian Portuguese translations for the 1.3.0 strings.<\/li>\n<\/ul>\n\n<h4>1.3.0<\/h4>\n\n<ul>\n<li>Latest AI assistant detections shown on the dashboard and in the Live Log.<\/li>\n<li>New notice when raw logs approach the 30-day purge.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: Live Log screen \u2014 chronological journal of raw bot requests.<\/li>\n<li>New: 404 Monitor screen \u2014 broken URLs hit by bots, grouped and ranked.<\/li>\n<li>New: trends on dashboard cards (vs previous period).<\/li>\n<li>New: onboarding notice and helpful empty state before the first bot visit.<\/li>\n<li>New: German, Italian and Brazilian Portuguese translations.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: Contents screen \u2014 sortable, filterable overview of every page, post and term visited by bots.<\/li>\n<li>New: 30-day bot hits chart in the post editor metabox.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Initial release.<\/li>\n<\/ul>","raw_excerpt":"Google crawls you. AIs read you. See everything: search engine and AI crawler analytics for every post, page and term.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/342349","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=342349"}],"author":[{"embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/nicolastrimardeau"}],"wp:attachment":[{"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=342349"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=342349"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=342349"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=342349"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=342349"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/en-au.wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=342349"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}