Jak analyzovat velké crawly ze Screaming Frogu v DuckDb

Screaming Frog je průmyslový standard pro crawlování webů. Zvládne i miliony adres a exportuje použitelná data. Jenže co s těmi daty dál? Excel se s milionem řádků už pořádně trápí a Google Sheets má ještě nižší limity.

Před lety jsem na velké crawly používal BigQuery a Looker Studio, ale byl to šílený opruz. Dnes mám mnohem lepší řešení: DuckDb. Je to rychlá analytická databáze, která zvládne miliony řádků a desítky GB dat, funguje lokálně bez serveru a provoz zvládnete i bez IT podpory.

Proč právě DuckDb

DuckDb je relativně nová databáze speciálně navržená pro analytiku. Na rozdíl od tradičních databází jako MySQL nebo PostgreSQL není určená pro transakční zpracování (tisíce malých zápisů), ale pro analytické dotazy nad velkými objemy dat.

Její hlavní výhody pro SEO analytiku:

DuckDb můžete používat přes příkazovou řádku (CLI), vlastní grafické rozhraní, různá IDE (TablePlus, Beekeeper Studio, DBeaver, VSCode s rozšířením) nebo z programovacích jazyků jako Python, R či Node.js. A nově i přes AI s MCP serverem, ale k tomu se dostaneme později.

Kompletní workflow krok za krokem

1. Crawl ve Screaming Frogu

Nejprve spustíte crawl webu ve Screaming Frogu jako obvykle. Nastavte si potřebné parametry (rychlost, hloubka, filtry) podle velikosti a charakteru webu.

Screaming Frog - crawl webu

2. Export do CSV

Po dokončení crawlu exportujte data do CSV souborů. V menu zvolte Bulk Export a vyberte tabulky, které budete potřebovat. Pro komplexní analýzu obvykle exportuji:

Screaming Frog - export do CSV

3. Spuštění DuckDb a založení databáze

Otevřete terminál (PowerShell, CMD nebo Terminal na Macu) a spusťte DuckDb s názvem nové databáze:

duckdb muj-crawl.duckdb

Tím vytvoříte nový soubor databáze a otevře se interaktivní prostředí DuckDb.

4. Import CSV souborů

V prostředí DuckDb importujte CSV soubory pomocí jednoduchých SQL příkazů:

CREATE TABLE internal_all AS FROM 'internal_all.csv';
CREATE TABLE internal_html AS FROM 'internal_html.csv';
CREATE TABLE external_all AS FROM 'external_all.csv';
CREATE TABLE all_inlinks AS FROM 'all_inlinks.csv';
CREATE TABLE all_outlinks AS FROM 'all_outlinks.csv';

DuckDb automaticky rozpozná strukturu CSV souborů včetně hlaviček a datových typů.

DuckDb CLI - import CSV

5. Ověření importu

Zkontrolujte, že se data správně načetla:

SELECT COUNT(*) FROM internal_html;

6. Ukončení

Až budete hotovi, ukončete DuckDb příkazem:

.quit

Databáze zůstane uložená v souboru a příště ji můžete znovu otevřít stejným příkazem jako při vytvoření.

Grafické rozhraní DuckDb

Příkazová řádka je efektivní, ale někdy se hodí vizuální nástroj. DuckDb má experimentální vestavěné GUI, které spustíte přidáním parametru -ui:

duckdb muj-crawl.duckdb -ui

Rozhraní se otevře v prohlížeči a nabídne:

GUI je zatím experimentální a má své mouchy, ale pro interaktivní práci je velmi pohodlné. Alternativně můžete použít profesionální nástroje jako TablePlus nebo DBeaver, které DuckDb také podporují.

DuckDb GUI - SQL dotaz

Propojení s AI přes MCP

Tady to začíná být opravdu zajímavé. DuckDb můžete propojit s Claude Desktop pomocí MCP (Model Context Protocol) serveru. To znamená, že se můžete na svá data ptát přirozeným jazykem a AI za vás sestaví SQL dotazy.

Jak MCP zprovoznit

Podrobný návod najdete v článku Close the Loop: Faster Data Pipelines with MCP, DuckDB & AI na blogu MotherDuck.

Pokud nechcete studovat, můžete zkusit zadat Claude tento prompt:

Na základě článku https://motherduck.com/blog/faster-data-pipelines-with-mcp-duckdb-ai/ bych si chtěl zprovoznit MCP server, přes který bych se mohl dotazovat na lokálně uložená data v DuckDb databázi. Pro dotazování použiju Claude Desktop. Pomůžeš mi to zprovoznit?

Práce s AI

Jakmile máte MCP nakonfigurovaný, připojíte databázi v Claude Desktop a můžete se ptát přirozeným jazykem:

Claude za vás sestaví správný SQL dotaz, spustí ho a výsledky přehledně zobrazí. Zvládne i složitější dotazy s JOINy mezi tabulkami, což by vám ručně mohlo zabrat hodně času.

Claude Desktop - dotazování na data

Praktické SQL dotazy pro SEO

I bez AI se vám budou hodit připravené SQL dotazy na běžné SEO analýzy. Tady je několik, které používám nejčastěji.

Přímé odkazy na interní chyby 4xx

SELECT
  Source, Destination, Anchor, "Alt Text", "Status Code", "Link Position"
FROM all_inlinks
WHERE
  "Status Code" BETWEEN 400 AND 499
  AND Type = 'Hyperlink'
  AND Source != Destination
  AND Destination LIKE 'https://www.example.com/%'

Pro externí 4xx chyby změňte podmínku na NOT LIKE.

Přesměrování vedoucí na chyby 4xx

SELECT Source, Destination, "Status Code"
FROM all_inlinks
WHERE
  "Status Code" BETWEEN 400 AND 499
  AND Type = 'HTTP Redirect'
  AND Destination LIKE 'https://www.example.com/%'

Neindexovatelné stránky v sitemapách

SELECT
  ai.Source, ai.Destination, ai."Status Code", ih."Indexability Status"
FROM all_inlinks ai
JOIN internal_html ih ON ai.Destination = ih.Address
WHERE
  ai.Type = 'XML Sitemap'
  AND ih.Indexability = 'Non-Indexable'

Sirotci – stránky odkazované jen ze sitemap

Stránky, na které nevede žádný odkaz z obsahu webu, ale jsou v sitemapě:

SELECT DISTINCT Destination
FROM all_inlinks
WHERE
  Type = 'XML Sitemap'
  AND Destination NOT LIKE '%/sitemaps/%.xml'
  AND Destination NOT IN (
    SELECT DISTINCT Destination
    FROM all_inlinks
    WHERE
      Type IN ('Hyperlink', 'HTTP Redirect')
      AND Destination != Source
  )
ORDER BY Destination

Indexovatelné stránky mimo sitemapy

SELECT *
FROM internal_html
WHERE
  Indexability = 'Indexable'
  AND Address NOT IN (
    SELECT DISTINCT Destination
    FROM all_inlinks
    WHERE Type = 'XML Sitemap'
  )

Vzor pro JOIN dotazy

Když potřebujete propojit informace z více tabulek, použijte JOIN. Tento vzor vybere určité stránky z internal_html a připojí k nim odkazy z all_inlinks:

SELECT
  b.Source, b.Destination, b.Anchor, b."Alt Text", b."Link Position"
FROM internal_html a
JOIN all_inlinks b
  ON a.Address = b.Destination
WHERE
  a.Indexability = 'Indexable'

Co by šlo vylepšit

Popsané workflow funguje skvěle, ale vždy je co vylepšovat.

Podrobné instrukce pro AI – pokud používáte propojení s Claude, můžete si připravit detailní instrukce ve formě projektů, custom GPT, Gems nebo claude.md souboru pro Claude Code. AI pak bude lépe rozumět struktuře vašich dat a bude sestavovat přesnější dotazy.

DuckLake – autoři DuckDb pracují na formátu pro data lakes, který by umožnil propojit více crawlů stejného webu. Šlo by pak snadno porovnávat crawly z různých období a sledovat vývoj webu v čase.

Závěr

Kombinace Screaming Frog + DuckDb je mocný nástroj pro SEO analytiku velkých webů. Zvládnete s ní analyzovat miliony URL, které by Excel nikdy nezvládl, a to bez nutnosti platit za cloudové služby nebo složitě nastavovat servery.

A pokud přidáte propojení s AI přes MCP, dostanete nástroj, kterým můžete provádět komplexní analýzy pomocí přirozených otázek v češtině. To je budoucnost SEO analytiky.

Máte dotazy nebo potřebujete pomoct s nastavením? Napište mi na mprokop@prokopsw.cz.