AI Crawler-spårning
Besökskollen kan visa exakt vilka AI-bottar som hämtar din sajt, GPTBot, ClaudeBot, PerplexityBot och fler, när du installerar en kort kodsnutt på din server.
Varför mäta AI-crawlers?
AI-bottar kör inte JavaScript, så de syns inte i din vanliga statistik. Ändå avgör de om dina sidor kan citeras av ChatGPT, Perplexity, Claude och andra. Att mäta deras besök ger dig:
- Vilka AI-modeller känner till din sajt , Varje plattform har sin egen bot. Ser du PerplexityBot men ingen GPTBot? Då vet du var du står hos respektive AI.
- Vilka sidor som indexeras mest , Sidor som AI:n hämtar ofta är de som har störst chans att citeras. Det styr var du bör lägga din optimeringsenergi.
- När indexeringen pågår , Daglig GPTBot-trafik = OpenAI uppdaterar sin syn på din sajt. Långa pauser kan signalera att innehållet inte uppfattas som färskt nog.
Så fungerar det
Snippet-koden du installerar kollar User-Agent på varje request till din server. När en AI-crawler matchar gör den ett asynkront POST till https://besokskollen.se/api/ai-crawl med crawler-namn och URL. Allt körs server-side, ingen påverkan på besökarens upplevelse.
Vi lagrar bara crawler-namn, URL, User-Agent och tidsstämpel. Inga personuppgifter, inga cookies. Spårningen gäller bara bottar, riktiga besökare ignoreras.
Installation
Välj plattform. Byt ut YOUR_SITE_ID mot ditt sajt-ID (samma som i din vanliga tracking-snippet). Snippet:en kan köras parallellt med vår vanliga JS-tracker, de stör inte varandra.
Tips: är du inloggad hittar du samma kodsnuttar färdigifyllda med ditt sajt-ID under AI Insights på sajtens dashboard, tillsammans med en testknapp som verifierar installationen.
Next.js (App Router eller Pages)
Lägg till i din befintliga middleware.ts (eller skapa en ny). Vercel kör middleware vid edge, minimal latens.
// middleware.ts (create in project root, or merge into your existing middleware)
import { NextResponse } from 'next/server';
import type { NextRequest, NextFetchEvent } from 'next/server';
const SITE_ID = 'YOUR_SITE_ID';
const AI_API = 'https://besokskollen.se/api/ai-crawl';
const AI_CRAWLER_PATTERNS = [
'OAI-SearchBot', 'ChatGPT-User', 'GPTBot', 'Claude-User',
'Claude-SearchBot', 'Claude-Web', 'ClaudeBot', 'anthropic-ai',
'Perplexity-User', 'PerplexityBot', 'Google-Extended', 'GoogleOther',
'Google-CloudVertexBot', 'Google-NotebookLM', 'GoogleAgent-Mariner', 'MistralAI-User',
'Grok-DeepSearch', 'xAI-Grok', 'GrokBot', 'Applebot-Extended',
'Applebot', 'meta-externalfetcher', 'Meta-ExternalFetcher', 'meta-externalagent',
'Meta-ExternalAgent', 'Amazonbot', 'cohere-ai', 'cohere-training-data-crawler',
'Bytespider', 'CCBot', 'DuckAssistBot', 'Diffbot',
'YouBot',
];
export function middleware(request: NextRequest, event: NextFetchEvent) {
const ua = request.headers.get('user-agent') || '';
const matched = AI_CRAWLER_PATTERNS.some(p =>
ua.toLowerCase().includes(p.toLowerCase())
);
if (matched) {
// waitUntil keeps the report alive after the response is sent
// (a plain fire-and-forget fetch can be cancelled on serverless hosts)
event.waitUntil(
fetch(AI_API, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
siteId: SITE_ID,
pathname: request.nextUrl.pathname,
userAgent: ua,
}),
}).catch(() => {})
);
}
return NextResponse.next();
}
export const config = {
matcher: ['/((?!_next|favicon.ico).*)'],
};WordPress
Enklast: använd WordPress-pluginen
Pluginen Savri Analytics (version 1.1.0 eller senare) rapporterar AI-botbesök automatiskt, inget kodande behövs.
Öppna pluginen på wordpress.orgLägg till i ditt temas functions.php eller skapa en mu-plugin. wp_remote_post med 'blocking' => false körs asynkront och påverkar inte sidladdningen.
// Add to functions.php in your active theme (or as an mu-plugin)
add_action('template_redirect', function () {
$site_id = 'YOUR_SITE_ID';
$api = 'https://besokskollen.se/api/ai-crawl';
$patterns = array(
'OAI-SearchBot', 'ChatGPT-User', 'GPTBot', 'Claude-User',
'Claude-SearchBot', 'Claude-Web', 'ClaudeBot', 'anthropic-ai',
'Perplexity-User', 'PerplexityBot', 'Google-Extended', 'GoogleOther',
'Google-CloudVertexBot', 'Google-NotebookLM', 'GoogleAgent-Mariner', 'MistralAI-User',
'Grok-DeepSearch', 'xAI-Grok', 'GrokBot', 'Applebot-Extended',
'Applebot', 'meta-externalfetcher', 'Meta-ExternalFetcher', 'meta-externalagent',
'Meta-ExternalAgent', 'Amazonbot', 'cohere-ai', 'cohere-training-data-crawler',
'Bytespider', 'CCBot', 'DuckAssistBot', 'Diffbot',
'YouBot',
);
$ua = $_SERVER['HTTP_USER_AGENT'] ?? '';
foreach ($patterns as $p) {
if (stripos($ua, $p) !== false) {
wp_remote_post($api, array(
'blocking' => false, // async, never slows down the page
'timeout' => 1,
'headers' => array('Content-Type' => 'application/json'),
'body' => wp_json_encode(array(
'siteId' => $site_id,
'pathname' => $_SERVER['REQUEST_URI'] ?? '/',
'userAgent' => $ua,
)),
));
break;
}
}
});Node.js / Express
Generisk middleware för Express, Fastify eller liknande. Använder fetch (Node 18+), ingen extra dependency.
// Express middleware, add before your routes
const SITE_ID = 'YOUR_SITE_ID';
const AI_API = 'https://besokskollen.se/api/ai-crawl';
const AI_CRAWLER_PATTERNS = [
'OAI-SearchBot', 'ChatGPT-User', 'GPTBot', 'Claude-User',
'Claude-SearchBot', 'Claude-Web', 'ClaudeBot', 'anthropic-ai',
'Perplexity-User', 'PerplexityBot', 'Google-Extended', 'GoogleOther',
'Google-CloudVertexBot', 'Google-NotebookLM', 'GoogleAgent-Mariner', 'MistralAI-User',
'Grok-DeepSearch', 'xAI-Grok', 'GrokBot', 'Applebot-Extended',
'Applebot', 'meta-externalfetcher', 'Meta-ExternalFetcher', 'meta-externalagent',
'Meta-ExternalAgent', 'Amazonbot', 'cohere-ai', 'cohere-training-data-crawler',
'Bytespider', 'CCBot', 'DuckAssistBot', 'Diffbot',
'YouBot',
];
app.use((req, res, next) => {
const ua = req.get('user-agent') || '';
const matched = AI_CRAWLER_PATTERNS.some(p =>
ua.toLowerCase().includes(p.toLowerCase())
);
if (matched) {
fetch(AI_API, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ siteId: SITE_ID, pathname: req.path, userAgent: ua }),
}).catch(() => {});
}
next();
});Vilka AI-bottar spåras?
Vi känner igen dessa AI-modellers crawlers idag. Listan uppdateras allt eftersom nya bots dyker upp.
Vanliga frågor
Påverkar snippet:en min sajts prestanda?
Nej. Alla varianter använder asynkron eller fire-and-forget-fetch som kör i bakgrunden utan att blockera responsen till besökaren eller boten.
Vad händer om en bot blockeras av min CDN/brandvägg?
Då får snippet:en aldrig se requesten, och vi får ingen rapport. Det är korrekt beteende. Om du vill se ALLA bots inklusive blockerade behöver du logga på edge/CDN-nivå istället.
Kan jag rapportera fler crawlers själv?
Just nu är listan av kända crawlers central, endast bots vi känner igen sparas. Om du upptäcker en ny AI-crawler vi missar: hör av dig så lägger vi till den.