GEO-Score
TjenesterOm osLærToplisteRapporterPriserBlog

GEO-Score

Det bedste GEO-analyseværktøj

Test dit indhold til AI-søgemaskiner som ChatGPT, Perplexity og Claude. Få handlingsrettede indsigter til at forbedre din synlighed.

Få GEO-indholdstips

Ressourcer

  • Vidensbase
  • Hvad er GEO?
  • GEO-blog
  • GEO Score Checker
  • Topliste
  • AI-ordliste
  • Case studies
  • GEO Insights
  • Rapporter

GEO-værktøjer

  • Komplet website GEO-revision
  • GEO-analyse
  • AI Visibility Checker
  • ROI-beregner
  • Schema Validator
  • Perplexity SEO-tjekker
  • ChatGPT SEO-tjekker
  • Google AI-tilstand-tjekker
  • AI-crawler-tjek
  • Agent readiness-tjek
  • llms.txt-generator
  • Query fan-out-værktøj
  • AI Bot Log Analyzer
  • Konkurrentsammenligning
  • Professionelle tjenester
  • Alle værktøjer

Analyser dine

  • Blogindlæg
  • Produktsider
  • Landingssider
  • Forsider
  • Servicesider

GEO-Score

  • Om os
  • Privatlivspolitik
  • Vilkår og betingelser
  • Kontakt
  • White Label
  • Byg din succes

Følg GEO-Score

Guides til AI-søgning

AI Search OptimizationPerplexity SEOChatGPT SEOLLM SEOAI Visibility CheckerAlle guides →
GDPR-kompatibelData hostet i EULavet i Holland
KVK: 61855111BTW: NL004509498B76© 2026 GEO-score.onlineGEO-Score er en del af Be-Found.
Styrk din blogging med Bloffee
  1. Forside
  2. Guides
  3. AI-bots i logs

Teknisk GEO

Find AI-bots i dine serverlogs (og tjek, at de er ægte)

Din analytics kan ikke se AI-crawlere. Dine serverlogs kan. Her er kommandoer til at kopiere, de officielle IP-lister og en tjekliste til privatliv.

Opdateret og faktatjekket 19. oktober 2026

Vil du hellere undgå kommandolinjen?

Indsæt din log i vores gratis AI Bot Log Analyzer. Den kører i din browser, så din log bliver aldrig uploadet.

Åbn AI Bot Log Analyzer

Hvorfor din analytics ikke viser AI-bots

Værktøjer som Google Analytics tæller besøg med et lille script, der kører i browseren. En crawler, der kun henter din HTML, kører aldrig scriptet og dukker derfor aldrig op.

Din webserver noterer hver forespørgsel, fra både mennesker og bots. Den registrering er din adgangslog.

Logs svarer på tre spørgsmål: hvilke bots kommer forbi, hvilke sider henter de, og får de siden eller en fejl.

Hvor du finder dine logs

  • nginx: standardformatet “combined” har allerede alt, hvad du skal bruge. På Debian og Ubuntu ligger filen som regel i /var/log/nginx/access.log.
  • Apache: brug også combined-formatet. “Common”-formatet har ingen user agent, så det kan ikke vise bots. Tilføj %{User-agent}i til dit LogFormat.
  • Bag et CDN eller en proxy? Så viser det første felt måske din proxys IP ved hver forespørgsel. Opsæt først din servers real-IP-indstilling (eller log den videresendte klient-IP), ellers fejler alle IP-tjek nedenfor.
  • Ingen adgang til rå logs? Kig i din udbyders kontrolpanel, eller sæt et CDN foran dit site. Mere om det nedenfor.

Kilder

  • Dokumentation for nginx’ logmodul (åbner i en ny fane)
  • Dokumentation for Apache-logfiler (åbner i en ny fane)

Læs én loglinje

Her er én linje i combined-formatet med en opdigtet IP-adresse. Hver del svarer på et spørgsmål.

Eksempel på loglinje (combined-format)
203.0.113.7 - - [19/Oct/2026:08:01:02 +0000] "GET /pricing HTTP/1.1" 200 5123 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko); compatible; GPTBot/1.4; +https://openai.com/gptbot"
  • IP-adresse: hvor forespørgslen kom fra. Den tjekker du mod de officielle lister.
  • Tidspunkt: hvornår det skete.
  • Forespørgsel: metoden og siden. Her GET /pricing.
  • Statuskode: 200 betyder leveret, 301/302 omdirigeret, 403 blokeret, 404 ikke fundet, 5xx en serverfejl.
  • Bytes: hvor meget der blev sendt tilbage.
  • User agent: hvem den besøgende påstår at være. Her GPTBot. Alle kan skrive det, så alene beviser det intet.

De AI-bots, du skal kigge efter

Listen kommer fra hvert firmas egen dokumentation, tjekket den 19. oktober 2026.

AI-crawlere og -fetchere med deres officielle IP-lister
User agentFirmaHvad den gørFølger robots.txtIP-liste
OAI-SearchBotOpenAISøgeindeksJaOAI-SearchBot JSON (åbner i en ny fane)
GPTBotOpenAITræningJaGPTBot JSON (åbner i en ny fane)
ChatGPT-UserOpenAIBrugerforespørgselDelvistChatGPT-User JSON (åbner i en ny fane)
Claude-SearchBotAnthropicSøgeindeksJaClaude-SearchBot JSON (åbner i en ny fane)
ClaudeBotAnthropicTræningJaClaudeBot JSON (åbner i en ny fane)
Claude-UserAnthropicBrugerforespørgselJaClaude-User JSON (åbner i en ny fane)
PerplexityBotPerplexitySøgeindeksJaPerplexityBot JSON (åbner i en ny fane)
Perplexity-UserPerplexityBrugerforespørgselNejPerplexity-User JSON (åbner i en ny fane)
GooglebotGoogleSøgemaskineJaGooglebot JSON (åbner i en ny fane)
Google-AgentGoogleBrugerforespørgselNejGoogle-Agent JSON (åbner i en ny fane)Google-Agent JSON (åbner i en ny fane)Google-Agent JSON (åbner i en ny fane)
bingbotMicrosoftSøgemaskineJabingbot JSON (åbner i en ny fane)
ApplebotAppleSøgemaskineJaApplebot JSON (åbner i en ny fane)
meta-externalagentMetaTræningJaIkke offentliggjort
meta-webindexerMetaSøgeindeksJaIkke offentliggjort
meta-externalfetcherMetaBrugerforespørgselDelvistIkke offentliggjort
AmazonbotAmazonTræningJaIkke offentliggjort
Amzn-SearchBotAmazonSøgeindeksJaIkke offentliggjort
Amzn-UserAmazonBrugerforespørgselDelvistIkke offentliggjort
DuckAssistBotDuckDuckGoSøgeindeksJaDuckAssistBot JSON (åbner i en ny fane)
MistralAI-UserMistral AIBrugerforespørgselJaIkke offentliggjort
MistralAI-IndexMistral AISøgeindeksIkke oplystIkke offentliggjort
MistralAI-TrainingMistral AITræningJaIkke offentliggjort
CCBotCommon CrawlTræningJaCCBot JSON (åbner i en ny fane)

Google-Extended og Applebot-Extended er robots.txt-tokens, ikke crawlere. De dukker aldrig op i en log.

Anthropic offentliggør ikke fulde user agent-strenge. I logs ser de sådan ud: “compatible; Claude-User/1.0; +claudebot@anthropic.com”.

Kommandoer til at kopiere

De virker på en log i combined-format. Vi testede dem den 19. oktober 2026 med grep og awk på macOS. Erstat access.log med din egen fil.

Tæl forespørgsler pr. AI-bot
grep -oE 'GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User|meta-externalagent|Amazonbot|Applebot|DuckAssistBot|MistralAI-User|CCBot' access.log | sort | uniq -c | sort -rn
Statuskoder pr. bot
awk -F'"' '{ split($3,a," "); if (match($6,/GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User/)) print substr($6,RSTART,RLENGTH), a[1] }' access.log | sort | uniq -c
Topsider for én bot
grep 'OAI-SearchBot' access.log | awk '{print $7}' | sort | uniq -c | sort -rn | head
Kun fejl (4xx og 5xx) for AI-bots
awk -F'"' '$6 ~ /GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|Perplexity-User/ { split($3,a," "); if (a[1] >= 400) print a[1], $2 }' access.log
Søg i ældre, komprimerede logs
zgrep -c 'GPTBot' /var/log/nginx/access.log.*.gz

Tjek hver bot-IP med Python

Scriptet henter de officielle IP-lister og skriver VERIFIED eller NOT IN LIST for hver botlinje. Det bruger kun Pythons standardbibliotek.

verify_bots.py
# Usage: python3 verify_bots.py access.log
import ipaddress, json, re, sys, urllib.request

LISTS = {
    "GPTBot": "https://openai.com/gptbot.json",
    "OAI-SearchBot": "https://openai.com/searchbot.json",
    "ChatGPT-User": "https://openai.com/chatgpt-user.json",
    "ClaudeBot": "https://claude.com/crawling/bots.json",
    "Claude-User": "https://claude.com/crawling/bots.json",
    "Claude-SearchBot": "https://claude.com/crawling/bots.json",
    "PerplexityBot": "https://www.perplexity.com/perplexitybot.json",
    "Perplexity-User": "https://www.perplexity.com/perplexity-user.json",
    "Googlebot": "https://developers.google.com/static/crawling/ipranges/common-crawlers.json",
    "bingbot": "https://www.bing.com/toolbox/bingbot.json",
}
cache = {}

def networks(url):
    if url not in cache:
        req = urllib.request.Request(url, headers={"User-Agent": "log-check/1.0"})
        data = json.load(urllib.request.urlopen(req, timeout=20))
        cache[url] = [ipaddress.ip_network(p.get("ipv4Prefix") or p.get("ipv6Prefix"))
                      for p in data["prefixes"]]
    return cache[url]

bot = re.compile("|".join(sorted(map(re.escape, LISTS), key=len, reverse=True)))
for line in open(sys.argv[1], errors="replace"):
    ua = line.split('"')[5] if line.count('"') >= 6 else line
    match = bot.search(ua)
    if not match:
        continue
    try:
        ip = ipaddress.ip_address(line.split()[0])
    except ValueError:
        continue
    ok = any(ip in net for net in networks(LISTS[match.group(0)]))
    print("VERIFIED   " if ok else "NOT IN LIST", match.group(0), ip)

Er det virkelig GPTBot? Tjek IP’en

En user agent er bare tekst. Alle kan sende “GPTBot”. Perplexity anbefaler selv at kombinere user agent med IP-tjek.

Metode 1: de officielle IP-lister

OpenAI, Anthropic, Perplexity, Google, Microsoft (Bing), Apple, DuckDuckGo og Common Crawl offentliggør JSON-lister over de IP-intervaller, deres bots bruger. Står IP’en på listen, kom forespørgslen fra firmaets netværk. Linkene står i tabellen ovenfor.

Metode 2: omvendt DNS

Google: slå værtsnavnet for IP’en op. Det skal ende på googlebot.com, google.com eller googleusercontent.com, og et opslag på navnet skal give den samme IP tilbage. Bing virker på samme måde, med navne der ender på search.msn.com.

Omvendt DNS-tjek for Googlebot
host 66.249.66.1
# 1.66.249.66.in-addr.arpa domain name pointer crawl-66-249-66-1.googlebot.com.
host crawl-66-249-66-1.googlebot.com
# crawl-66-249-66-1.googlebot.com has address 66.249.66.1  ← same IP: real Googlebot

“Ikke på listen” betyder ikke altid falsk. Lister ændrer sig, og Bings JSON-fil blev sidst lavet i januar 2024. Se det som “tjek det”, ikke som bevis.

Anthropic advarer om, at blokering på IP måske ikke virker korrekt og ikke garanterer et varigt fravalg. Brug robots.txt til at fravælge.

Kilder

  • Google: verificér Googlebot (åbner i en ny fane)
  • Bing: verificér bingbot (åbner i en ny fane)
  • Perplexity: bots (åbner i en ny fane)

Hvad tallene fortæller dig

  • Træning, søgning og brugerforespørgsler er forskellige. GPTBot og ClaudeBot indsamler træningsdata. OAI-SearchBot, Claude-SearchBot og PerplexityBot bygger søgeindekser. ChatGPT-User, Claude-User og Perplexity-User henter en side, fordi en person spørger om den lige nu.
  • Mange 403- eller 5xx-svar betyder, at du blokerer eller ødelægger AI-adgangen. Tjek din firewall, dit CDN’s botindstillinger og din robots.txt.
  • Forespørgsler på robots.txt og llms.txt viser, hvilke bots der læser dine regler. OpenAI siger, at OAI-SearchBot og GPTBot kan tilføje en robots.txt-markør til deres user agent, når de henter filen.
  • Brugerforespørgsler kan springe robots.txt over. Ifølge OpenAI gælder robots.txt-regler måske ikke for ChatGPT-User, og ifølge Perplexity ignorerer Perplexity-User dem som regel.
  • Et besøg er ikke et citat. Det betyder, at en bot læste din side, ikke at et AI-svar vil citere den.
  • Opsæt robots.txt til AI-crawlere
  • Sådan får du AI til at citere dine sider

Ingen serveradgang? Brug dit CDN

Cloudflares AI Crawl Control (tidligere AI Audit) viser, hvilke AI-tjenester der crawler dit site, og hvilke crawlere der ignorerer dine regler. Ifølge Cloudflare er det med i alle abonnementer.

Cloudflare Logpush kan eksportere forespørgselslogs med felter som ClientIP, ClientRequestUserAgent, ClientRequestPath og EdgeResponseStatus. Vores analyzer læser også de JSON-linjer.

Kilder

  • Cloudflare AI Crawl Control (åbner i en ny fane)
  • Felter i Cloudflare Logpush (åbner i en ny fane)

Logs og privatliv (GDPR)

IP-adresser kan være personoplysninger. EU-Domstolen fastslog det for dynamiske IP-adresser i Breyer-sagen (C-582/14, 19. oktober 2016), og betragtning 30 i GDPR nævner IP-adresser som onlineidentifikatorer.

Bot-IP’er tilhører firmaer, men den samme log rummer også dine besøgendes IP’er. En praktisk tilgang:

  • Filtrér botlinjerne fra først, og arbejd med dem.
  • Gem kun rå logs, så længe du har brug for dem, for eksempel til sikkerhed. GDPR fastsætter ikke et antal dage; den siger, at personoplysninger ikke må gemmes længere end nødvendigt.
  • Gem totaler (bot, dag, side, status, verificeret eller ej) i stedet for IP’er.
  • Forkort eller hash en IP, når du har tjekket den.
  • Upload ikke rå logs til et eksternt værktøj uden en databehandleraftale. Vores analyzer kører i din browser, så intet bliver uploadet.

Dette er generel information, ikke juridisk rådgivning.

Kilder

  • EU-Domstolen, sag C-582/14 (Breyer) (åbner i en ny fane)
  • GDPR betragtning 30 (åbner i en ny fane)

Ofte stillede spørgsmål

Hvordan ser jeg, om ChatGPT besøger mit site?

Søg i din adgangslog efter OAI-SearchBot (ChatGPT-søgning), ChatGPT-User (en brugers forespørgsel) og GPTBot (træning). Tjek derefter IP’erne mod OpenAIs lister.

Hvorfor viser Google Analytics ikke GPTBot?

Google Analytics tæller besøg via et script i browseren. Crawlere, der kun henter din HTML, kører det ikke.

Hvordan ved jeg, om en GPTBot-forespørgsel er ægte?

Tjek dens IP mod openai.com/gptbot.json. Står den ikke på listen, så behandl forespørgslen som ikke verificeret.

Hvilke bots ignorerer robots.txt?

Ifølge deres egen dokumentation: bots, der henter en side, fordi en bruger bad om det. OpenAI siger, at robots.txt måske ikke gælder for ChatGPT-User, Perplexity siger, at Perplexity-User som regel ignorerer den, og Google siger det samme om sine brugerudløste fetchere.

Hvad betyder 403-fejl for AI-bots?

Din server, firewall eller dit CDN afviste forespørgslen. Vil du findes i AI-søgning, så find reglen, der blokerer botten, og ret den.

Må jeg logge IP-adresser?

Som regel ja, til et klart formål som sikkerhed, men IP’er kan være personoplysninger. Gem logs kort tid, gem totaler i stedet for IP’er, og nævn logningen i din privatlivspolitik. Dette er ikke juridisk rådgivning.

Lær mere

  • Gratis AI Bot Log Analyzer (kører i din browser)
  • Opsæt robots.txt til AI-crawlere
  • Opslag: user agents for AI-bots
  • Guiden til llms.txt
  • Robots.txt-generator til AI-bots
  • Følg besøg fra AI-værktøjer

Sørg for, at bots finder noget værd at læse

Crawlet er ikke citeret. Se, hvordan AI-værktøjer læser din side, på 22 punkter.

Analysér min side