Python för SEO: nybörjarguide till att skriva skript med ChatGPT eller Claude

  • Uppdaterad
  • Lästid 17 min
Python for SEO beginner guide, Marketer Coffee
Innehåll 18
  1. Vad kan Python egentligen göra för en SEO-specialist?
  2. Behöver ni kunna koda innan ni börjar?
  3. Vilken är den enklaste uppsättningen för att köra SEO-skript?
  4. Hur bör ni prompta ChatGPT eller Claude för att skriva ett SEO-skript?
  5. Exempel 1: hur kontrollerar ni statuskoder för en lista med URL:er?
  6. Exempel 2: hur extraherar ni titlar och metabeskrivningar i bulk?
  7. Exempel 3: hur hittar ni sökord inom “striking distance” i en export från Search Console?
  8. Exempel 4: hur ser ni vilka sidor som tappat klick mellan två perioder?
  9. Vilka SEO-uppgifter bör ni skripta härnäst, och vilka bör ni lämna åt verktyg?
  10. Hur använder ni AI-assistenter för att förstå kod, inte bara skriva den?
  11. När är det värt att ta in Marketer Coffee?
  12. Vanliga frågor om Python för SEO
    1. Är Python värt att lära sig för SEO 2026?
    2. Kan ChatGPT eller Claude skriva SEO-skript som fungerar på första försöket?
    3. Vilka Python-bibliotek bör en SEO-nybörjare lära sig först?
    4. Hur får jag ut fler än 1 000 rader från Search Console?
    5. Är det säkert att köra SEO-skript mot vilken webbplats som helst?
  13. Vad bör ni komma ihåg om Python för SEO?

Python för SEO innebär att använda korta skript för de repetitiva delarna av sökarbetet: kontrollera hundratals URL:er, hämta titlar och metabeskrivningar och dela upp exporter från Search Console snabbare än ett kalkylark tillåter. Ni behöver inte bli utvecklare för att få nytta av det. 2026 kan ni beskriva uppgiften för ChatGPT eller Claude på vanlig svenska, få tillbaka ett fungerande skript, köra det och kontrollera resultatet.

Den färdighet som spelar roll är inte att memorera syntax. Det är att veta vad man ska be om, hur man kör koden säkert och hur man avgör om resultatet stämmer. En nybörjare som kan läsa ett skript på 20 rader och upptäcka ett felaktigt kolumnnamn får mer gjort än någon som kopierar kod i blindo.

Den här guiden ger er en uppsättning som tar ungefär tio minuter, ett promptmönster som ger användbara skript och fyra testade exempel som ni kan köra i dag: en kontroll av statuskoder, en extraktion av titlar och metabeskrivningar, en sökning efter sökord inom “striking distance” i data från Search Console och en periodjämförelse som visar vilka sidor som tappat klick.

Varje skript nedan kördes på exempeldata före publiceringen, så ni kan kopiera det som utgångspunkt och anpassa det med er AI-assistent.

Vad kan Python egentligen göra för en SEO-specialist?

Python är mest användbart där ni upprepar samma kontroll på många rader data. Om en uppgift tar mer än en timme i ett kalkylark, eller om ni gör den varje månad, är den en kandidat för ett skript.

Typiska nybörjarvänliga uppgifter är:

  • Kontrollera statuskoder och omdirigeringar för en lista med URL:er efter en migrering
  • Extrahera titlar, metabeskrivningar, H1:or eller canonical-taggar från många sidor
  • Filtrera och gruppera exporter från Search Console efter sökfråga, sida eller mönster
  • Jämföra två tidsperioder för att hitta sidor eller sökfrågor som tappat trafik
  • Slå ihop data från olika verktyg via en gemensam URL-kolumn
  • Hämta fler rader från Search Console än gränssnittet låter er exportera

Python ersätter inte en crawler som Screaming Frog eller en allt-i-ett-plattform. Det fyller luckorna mellan dem: den enstaka frågan som ert verktyg inte besvarar, eller rapporten som ni bygger på samma sätt varje månad. Vår lista över SEO-verktyg vi använder täcker den kommersiella delen av verktygslådan.

Behöver ni kunna koda innan ni börjar?

Nej, men ni behöver kunna läsa kod tillräckligt bra för att kontrollera den. AI-assistenter skriver trovärdig kod snabbt, och trovärdig är inte samma sak som korrekt. Ett skript kan köras utan fel och ändå räkna fel kolumn eller hoppa över hälften av era URL:er.

Ett realistiskt mål för en nybörjare är detta: ni kan öppna ett skript, hitta var det läser in indatafilen, se vilka kolumner det använder och förstå vad det skriver ut. Den nivån tar några kvällar, inte månader. Be assistenten lägga till kommentarer till varje block och be den förklara varje rad ni inte följer.

Tre vanor skyddar er mot de flesta misstag:

  1. Testa först på ett litet urval. Kör skriptet på 10 URL:er eller 20 rader där ni redan vet svaret.
  2. Stickprovskontrollera resultatet. Öppna tre resultat manuellt i webbläsaren eller i den ursprungliga exporten och jämför.
  3. Klistra aldrig in hemligheter. Ge inte en AI-chatt era API-nycklar, kundlösenord eller personuppgifter från exporter.

Vilken är den enklaste uppsättningen för att köra SEO-skript?

Ni har två bra alternativ: en notebook i webbläsaren som inte kräver någon installation, eller Python på er egen dator.

Två sätt att köra Python för SEO som nybörjare
AlternativBäst förBra att veta
Google Colab (notebook i webbläsaren)Första experimenten, delning med kollegorIngen installation. Ladda upp en CSV till sessionen och kör cellerna en i taget. Filerna försvinner när sessionen avslutas om ni inte sparar dem i Drive.
Python på er datorÅterkommande rapporter, större filer, schemalagda uppgifterInstallera Python 3 från python.org och kör sedan pip install requests beautifulsoup4 pandas i en terminal. Kör skript med python script_name.py.
Kodredigerare (valfritt)Bekväm läsning och redigering av skriptVS Code eller valfri redigerare med stöd för Python markerar fel och gör indrag synliga.

Exemplen i den här guiden använder tre bibliotek. requests hämtar webbsidor. Beautiful Soup (paketnamn beautifulsoup4) läser HTML och hittar taggar. pandas arbetar med tabeller, vilket är vad det mesta av SEO-data är. Alla tre är gratis, väldokumenterade och välkända för AI-assistenter, vilket betyder att genererad kod som använder dem brukar vara pålitlig.

Hur bör ni prompta ChatGPT eller Claude för att skriva ett SEO-skript?

Beskriv indata, utdata och specialfallen, inte bara målet. “Skriv ett Python-skript som kontrollerar mina URL:er” ger generisk kod. En specifik prompt ger något som ni kan köra på första försöket.

En promptstruktur som fungerar bra:

  1. Kontext: “Jag är SEO-specialist, inte utvecklare. Jag kör Python 3 lokalt.”
  2. Indata: “Jag har en fil urls.txt med en URL per rad.” Eller klistra in rubrikraden och två exempelrader från er CSV.
  3. Uppgift: “Registrera för varje URL HTTP-statuskoden utan att följa omdirigeringar, och omdirigeringens mål om det finns ett.”
  4. Utdata: “Spara en CSV med kolumnerna url, status, redirect_to_or_error och skriv ut resultaten.”
  5. Specialfall: “Stanna inte om en URL får timeout eller om domänen inte kan slås upp. Använd en timeout på 10 sekunder.”
  6. Begränsningar: “Använd bara requests, Beautiful Soup och pandas. Lägg till en kommentar ovanför varje block.”

När skriptet misslyckas, klistra in hela felmeddelandet i chatten och berätta vad ni körde. Både ChatGPT och Claude är bra på att rätta sin egen kod när de ser den exakta traceback-utskriften. Om resultatet ser fel ut i stället för att skriptet kraschar, beskriv vad ni förväntade er och vad ni fick, med en exempelrad.

De fyra exemplen nedan byggdes på det här sättet och kortades sedan ner och testades.

Exempel 1: hur kontrollerar ni statuskoder för en lista med URL:er?

Det här skriptet läser URL:er från en textfil, begär var och en utan att följa omdirigeringar och sparar statuskoderna i en CSV. Det är det första ni bör köra efter en migrering, en uppdatering av omdirigeringskartan eller en upprensning av sitemap.

Skapa en fil som heter urls.txt med en URL per rad, spara skriptet bredvid den som check_status.py och kör det.

import csv
import requests

HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; MySEOCheck/1.0)"}

with open("urls.txt", encoding="utf-8") as f:
    urls = [line.strip() for line in f if line.strip()]

results = []
for url in urls:
    try:
        r = requests.get(url, headers=HEADERS, timeout=10, allow_redirects=False)
        results.append([url, r.status_code, r.headers.get("Location", "")])
    except requests.RequestException as e:
        results.append([url, "ERROR", type(e).__name__])

with open("status_report.csv", "w", newline="", encoding="utf-8") as f:
    writer = csv.writer(f)
    writer.writerow(["url", "status", "redirect_to_or_error"])
    writer.writerows(results)

for row in results:
    print(*row, sep="\t")

Vad ni ska titta efter i resultatet:

  • 200: sidan laddas. Bra för URL:er som ska vara aktiva och indexerbara.
  • 301 eller 308: permanent omdirigering. Kontrollera att målet i den tredje kolumnen är rätt sida och inte startsidan som standard.
  • 302 eller 307: tillfällig omdirigering. Ofta ett tecken på att en permanent omdirigering har satts upp felaktigt.
  • 404 eller 410: sidan är borta. Okej om det är avsiktligt, ett problem om URL:en finns i er sitemap eller i interna länkar.
  • 5xx eller ERROR: problem med servern eller anslutningen. Kör igen senare; om det kvarstår, ta upp det med er utvecklare.

Skriptet använder allow_redirects=False med avsikt. Om ni låter requests följa omdirigeringar skulle en kedja av 301:or visas som 200 och ni skulle helt missa omdirigeringen. Be er assistent om en version som följer kedjan och listar varje steg om ni granskar omdirigeringskedjor.

Var försiktiga med antalet förfrågningar. För några hundra URL:er på er egen webbplats är det inga problem. För tusentals, be assistenten lägga in en kort paus mellan förfrågningarna, och rikta aldrig ett sådant skript mot en webbplats som ni inte har tillstånd att testa.

Exempel 2: hur extraherar ni titlar och metabeskrivningar i bulk?

Det här skriptet hämtar varje URL, läser HTML-koden med Beautiful Soup och registrerar titeln, metabeskrivningen och deras längd. Det är ett snabbt sätt att hitta saknade, tomma eller dubblerade snippets på en grupp sidor, till exempel alla produkter i en kategori.

import csv
import requests
from bs4 import BeautifulSoup

HEADERS = {"User-Agent": "Mozilla/5.0 (compatible; MySEOCheck/1.0)"}

def get_title_and_description(html):
    soup = BeautifulSoup(html, "html.parser")
    title = soup.title.get_text(strip=True) if soup.title else ""
    tag = soup.find("meta", attrs={"name": lambda v: v and v.lower() == "description"})
    description = tag.get("content", "").strip() if tag else ""
    return title, description

with open("urls.txt", encoding="utf-8") as f:
    urls = [line.strip() for line in f if line.strip()]

with open("meta_report.csv", "w", newline="", encoding="utf-8") as out:
    writer = csv.writer(out)
    writer.writerow(["url", "title", "title_length", "description", "description_length"])
    for url in urls:
        try:
            r = requests.get(url, headers=HEADERS, timeout=10)
        except requests.RequestException:
            continue
        if r.status_code != 200:
            continue
        title, desc = get_title_and_description(r.text)
        writer.writerow([url, title, len(title), desc, len(desc)])
        print(url, "|", title or "MISSING TITLE", "|", desc or "MISSING DESCRIPTION")

Två detaljer gör skriptet robustare än det första utkast som de flesta assistenter ger. För det första hittar det metabeskrivningen oavsett versaler, eftersom vissa CMS-mallar skriver ut name="Description". För det andra hoppar det över svar som inte är 200, så att felsidor inte förorenar rapporten med titlar som “Page not found”.

Öppna meta_report.csv i ert kalkylark och sortera efter title_length och description_length. Noll betyder att det saknas. Sortera sedan efter titel för att hitta dubbletter. Längden är bara en grov riktlinje: Google skriver om snippets när den anser att en annan text passar sökfrågan bättre, så se detta som en hygienkontroll, inte som en rankinglösning. Vår guide till on-page SEO förklarar vad ni ska skriva när ni vet vilka sidor som behöver arbete.

En begränsning: requests laddar ner den råa HTML-koden, så titlar som läggs till med JS efter inladdningen syns inte. För webbplatser som bygger mycket på JS kan ni behöva en headless-webbläsare, ett steg bortom nybörjarnivå.

Exempel 3: hur hittar ni sökord inom “striking distance” i en export från Search Console?

Det här skriptet läser filen Queries från en export från Search Console och listar sökfrågor med ett betydande antal visningar där er genomsnittliga position ligger mellan 4 och 15. Det är ofta de snabbaste vinsterna: Google anser redan att sidan är relevant, men den ligger strax under eller längst ner på första sidan.

I Search Console, öppna rapporten Resultat, välj ett datumintervall, klicka på Exportera och välj CSV. Ni får en ZIP-fil med flera CSV-filer. Det här skriptet använder Queries.csv.

import pandas as pd

df = pd.read_csv("Queries.csv")
df.columns = ["query", "clicks", "impressions", "ctr", "position"]
df["ctr"] = df["ctr"].str.rstrip("%").astype(float)

opportunities = df[
    df["position"].between(4, 15) & (df["impressions"] >= 500)
].sort_values("impressions", ascending=False)

print(opportunities.to_string(index=False))
opportunities.to_csv("striking_distance.csv", index=False)

Skriptet byter namn på kolumnerna vid inläsningen, eftersom exporten använder etiketter som “Top queries” och lagrar CTR som text med ett procenttecken. Genom att göra om CTR till ett tal kan ni sortera och filtrera på det. Om ert Search Console-gränssnitt är på ett annat språk ändras kolumnetiketterna men ordningen är densamma, och därför tilldelar skriptet namn efter position.

Justera de två tröskelvärdena efter er webbplats. Ett litet lokalt företag kanske använder 50 visningar i stället för 500. En stor butik kanske smälter ner intervallet till position 5 till 12. För varje sökfråga i resultatet, hitta sidan som rankar och kontrollera sedan om sökfrågan faktiskt besvaras i titeln, H1:an och de första styckena.

En gräns som är värd att känna till: Google anger att exporter från Search Console-gränssnittet begränsas till 1 000 rader. För större webbplatser returnerar Search Console API upp till 25 000 rader per förfrågan, och ni kan bläddra vidare med parametern startRow. Att sätta upp API-åtkomst kräver ett Google Cloud-projekt och inloggningsuppgifter, vilket är ett bra andra projekt när de här skripten känns bekväma.

Exempel 4: hur ser ni vilka sidor som tappat klick mellan två perioder?

Det här skriptet jämför två exporter av Pages från Search Console och listar sidorna med störst minskning av klick, bredvid deras genomsnittliga position före och efter. Det är kärnan i en månatlig SEO-kontroll och mycket snabbare än att matcha rader för hand.

Exportera rapporten Sidor två gånger: en gång för den senaste perioden (sparad som Pages_last.csv) och en gång för den föregående perioden (Pages_prev.csv). Använd lika långa perioder, och om er verksamhet är säsongsbetonad, jämför med samma veckor ett år tidigare.

import pandas as pd

cols = ["page", "clicks", "impressions", "ctr", "position"]
now = pd.read_csv("Pages_last.csv", names=cols, header=0)
before = pd.read_csv("Pages_prev.csv", names=cols, header=0)

merged = now.merge(before, on="page", how="outer", suffixes=("_now", "_before"))
merged[["clicks_now", "clicks_before"]] = merged[["clicks_now", "clicks_before"]].fillna(0).astype(int)
merged["click_change"] = merged["clicks_now"] - merged["clicks_before"]

losers = merged.sort_values("click_change").head(10)
print(losers[["page", "clicks_before", "clicks_now", "click_change",
              "position_before", "position_now"]].to_string(index=False))

Den yttre sammanslagningen spelar roll. En sida som försvunnit från den senaste exporten visar clicks_now som 0 och position_now som tom, vilket är precis den sortens sida ni vill fånga. En ny sida visas med clicks_before som 0. En vanlig uppslagning i ett kalkylark döljer ofta båda fallen.

Läs resultatet parvis. Tappade klick med sämre position tyder på ett rankingproblem: kontrollera sidan, dess konkurrenter och eventuella nyliga ändringar. Tappade klick med stabil position betyder oftast färre sökningar eller en förändrad resultatsida, till exempel en ny AI Overview eller fler annonser. Vår guide om att följa upp SEO-resultat beskriver hur ni skiljer på de orsakerna.

Vilka SEO-uppgifter bör ni skripta härnäst, och vilka bör ni lämna åt verktyg?

Skripta uppgifter som är specifika för er webbplats eller er rapportering; köp verktyg för uppgifter som kräver skala eller infrastruktur.

Skripta själv eller använda ett dedikerat verktyg?
UppgiftPython-skriptDedikerat verktyg
Statuskoder för en känd URL-listaJa, enkelt och snabbtFungerar också i vilken crawler som helst
Fullständig crawl av webbplatsen med renderingMöjligt, men tar tid att byggaBättre: crawlerprogram
Anpassade rapporter från Search ConsoleJa, perfekt med pandasLooker Studio för dashboards
Slå ihop data från flera verktygJa, pandas merge på URLKalkylark får problem i stor skala
Rankingspårning över tidRekommenderas inteBättre: rankingverktyg
Gruppera sökord efter ämneJa, med hjälp av en AI-assistentVissa plattformar har det inbyggt
Data om bakåtlänkarBara via ett betalt APIBättre: verktyg för bakåtlänkar

Bra nästa projekt: gruppera sökfrågor efter ett ord de innehåller, till exempel “pris” eller ett stadsnamn, och koppla sidedata från Search Console till konverteringar i GA4 via URL:en.

Hur använder ni AI-assistenter för att förstå kod, inte bara skriva den?

Be om förklaringar på den nivå ni behöver och testa sedan er förståelse genom att ändra en sak. Klistra in ett skript och fråga: “Förklara det här rad för rad för någon som kan Excel men inte Python.” Ställ sedan en specifik fråga, till exempel “Vad skulle jag ändra för att också extrahera H1:an?”, och gör ändringen själva innan ni ber om svaret.

Den mest värdefulla följdfrågan är “Vad kan få det här skriptet att ge felaktiga resultat utan att visa något fel?” Den får assistenten att lista tysta felkällor, som fel teckenkodning, dubblerade rader eller ett filter som tar bort mer än ni räknar med.

När är det värt att ta in Marketer Coffee?

Skript besvarar frågor; de avgör inte vilka frågor som är viktiga. Marketer Coffee är en byrå för AI SEO och GEO, och vi använder den här typen av automatisering i större projekt: tekniska upprensningar, innehållsprogram och arbete med AI-synlighet. Två resultat från våra kunder, i branscher som inte har med den här guidens exempel att göra:

  • Aldi.pl (detaljhandel). De organiska klicken ökade från 367 127 till 852 724 per månad på 12 månader (+132 %) genom produktinnehåll, Product-schema, en slankare arkitektur och samordnade butiksdata. Läs kundcaset om Aldi.
  • Planika (designeldstäder). Sju artiklar lokaliserade för USA tog en webbplats som Google inte hade indexerat till 1 052 besök från USA per månad, och Ahrefs registrerade 401 omnämnanden i Google AI Overviews, 136 omnämnanden i Perplexity och 20 omnämnanden i ChatGPT. Läs kundcaset om Planika.

Vem vi passar för: företag med stora eller internationella webbplatser där dataarbete, innehåll och AI-sökning behöver en gemensam plan. Vem vi inte passar för: den som bara behöver ett enda skript; en AI-assistent och den här guiden hjälper er bättre och kostar ingenting.

Om ni vill se hur AI-motorer i dag beskriver er webbplats, kör vår kostnadsfria analys av AI-synlighet. Mer om tjänsten finns på vår sida om AI SEO.

Vanliga frågor om Python för SEO

Är Python värt att lära sig för SEO 2026?

Ja, på en grundläggande nivå. När ChatGPT eller Claude skriver det mesta av koden ligger värdet i att veta vad man ska be om och hur man kontrollerar resultatet. Några kvällars övning räcker för att automatisera statuskontroller, granskningar av metadata och rapporter från Search Console.

Kan ChatGPT eller Claude skriva SEO-skript som fungerar på första försöket?

Ofta, om ni beskriver indatafilen, utdatakolumnerna och specialfallen. Testa alltid på ett litet urval där ni vet svaret, och klistra in hela felmeddelandet till assistenten om något misslyckas.

Vilka Python-bibliotek bör en SEO-nybörjare lära sig först?

requests för att hämta sidor, Beautiful Soup för att läsa HTML och pandas för att arbeta med CSV- och kalkylarksdata. De här tre täcker de flesta SEO-skript på nybörjarnivå.

Hur får jag ut fler än 1 000 rader från Search Console?

Exporten från gränssnittet begränsas till 1 000 rader. Search Console API returnerar upp till 25 000 rader per förfrågan och stöder bläddring med startRow, så ett Python-skript som använder API:et kan hämta mycket större datamängder.

Är det säkert att köra SEO-skript mot vilken webbplats som helst?

Kör dem på webbplatser som ni äger eller har tillstånd att testa, håll nere antalet förfrågningar, ange en timeout och lägg in pauser för stora listor. Dela aldrig API-nycklar eller kunddata i en AI-chatt.

Vad bör ni komma ihåg om Python för SEO?

Börja i liten skala, testa på data ni känner till och låt AI-assistenten skriva medan ni tänker. De fyra skripten i den här guiden täcker de vanligaste behoven för nybörjare: statuskoder, metadata, sökfrågor inom striking distance och periodjämförelser. Vart och ett ersätter en återkommande uppgift i kalkylark och kan byggas ut en prompt i taget.

Om ni hellre vill ha ett team som kombinerar den här typen av analys med innehåll och strategi för AI-sökning, boka en kostnadsfri konsultation.

Källor: Google Search Console Help, “Export data directly from a Search Console report” (exportgräns på 1 000 rader); Google for Developers, Search Console API, Search Analytics: query reference (rowLimit 1 till 25 000, startRow); officiell dokumentation för requests, Beautiful Soup och pandas; skript testade av Marketer Coffee på exempeldata med Python 3.13 (november 2026); Marketer Coffee, kundcase om Aldi och Planika (andra branscher).

Leave a Reply

Your email address will not be published. Required fields are marked *

Vill du ha liknande resultat för din webbplats?

Boka ett kostnadsfritt samtal på 30 minuter. Du får med dig tre konkreta SEO-möjligheter, oavsett om vi arbetar tillsammans eller inte.

Boka ett kostnadsfritt samtal