>- Crawl, scrape, and convert websites to Markdown using the local kreuzcrawl CLI and its MCP server. Use when the user wants to fetch a page, follow links across a domain, enumerate URLs, or drive a real browser. Covers installation, the subcommands (scrape, crawl, map, interact, mcp, serve), output formats (JSON + Markdown), browser fallback, and when to prefer the MCP server over shelling out.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add thedixitjain/the-mega-skill-library --skill kreuzcrawl --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Kreuzcrawl?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/thedixitjain-kreuzcrawl)More formats (shields.io, HTML) on the badges page.
---
name: kreuzcrawl
description: ">- Crawl, scrape, and convert websites to Markdown using the local kreuzcrawl CLI and its MCP server. Use when the user wants to fetch a page, follow links across a domain, enumerate URLs, or drive a real browser. Covers installation, the subcommands (scrape, crawl, map, interact, mcp, serve), output formats (JSON + Markdown), browser fallback, and when to prefer the MCP server over shelling out."
category: mcp-and-integrations
source_repo: hashgraph-online/awesome-codex-plugins
source_path: "plugins/kreuzberg-dev/plugins/plugins/kreuzcrawl/skills/kreuzcrawl/SKILL.md"
source_url: https://github.com/hashgraph-online/awesome-codex-plugins/blob/HEAD/plugins/kreuzberg-dev/plugins/plugins/kreuzcrawl/skills/kreuzcrawl/SKILL.md
---
# Kreuzcrawl
Kreuzcrawl is a Rust-native web crawler and scraper. It fetches static HTML
with `reqwest`, falls back to headless Chrome when a page needs JS or trips a
WAF, and converts every result to clean Markdown via the built-in
HTML→Markdown engine.
Use this skill when the user wants to:
- Scrape a single URL to Markdown plus structured metadata.
- Crawl a site following links bounded by depth, page count, and concurrency.
- Enumerate URLs from sitemaps without paying for rendering.
- Drive a real browser (click, type, scroll) and capture the resulting DOM.
- Run the same operations from another agent harness via MCP tools.
## Installation
The plugin shells out to a `kreuzcrawl` binary on `PATH`. Install one of:
```bash
brew install kreuzberg-dev/tap/kreuzcrawl
# or run without a persistent install (the CLI proxy package self-installs the binary):
npx @kreuzberg/kreuzcrawl-cli --help
uvx --from kreuzcrawl-cli kreuzcrawl --help
# or build from source:
cargo install --git https://github.com/kreuzberg-dev/kreuzcrawl kreuzcrawl-cli --features all
```
The `serve` and `mcp` subcommands are gated behind non-default cargo features
(`api` and `mcp`). The Homebrew tap is built with all features, so both
subcommands work out of the box. A from-source build must pass
`--features mcp` (and `--features api` for `serve`), or `--features all`, to
include them.
Verify:
```bash
kreuzcrawl --version
```
Headless fallback needs Chrome/Chromium reachable locally (`chromiumoxide`
launches it on demand). Skip the install if you only plan to use
`--browser-mode never`.
## Command map
```text
kreuzcrawl scrape <url> # single page → JSON or Markdown
kreuzcrawl crawl <url...> # follow links, BFS, depth-bounded
kreuzcrawl map <url> # enumerate URLs via sitemaps + link extraction
kreuzcrawl interact <url> # browser actions: click, type, scroll
kreuzcrawl mcp # MCP server (stdio) — auto-registered (`mcp` feature)
kreuzcrawl serve # REST API server (`api` feature)
```
Batch behaviour is built into `crawl`: pass multiple seed URLs and the engine
fans out via `batch_crawl` internally.
### Shared flags
| Flag | Default | Notes |
| ----------------------- | -------- | -------------------------------------------------- |
| `--format` | `json` | `json` or `markdown`. |
| `--timeout` | `30000` | Request timeout in milliseconds. |
| `--browser-mode` | `auto` | `auto`, `always`, or `never`. |
| `--browser-endpoint` | — | Optional CDP `ws://` or `wss://` URL. |
| `--respect-robots-txt` | off | Pass to obey `robots.txt`. |
| `--config <json>` | — | Inline JSON or `@file.json` to override defaults. |
The `--config` flag accepts the full `CrawlConfig` schema. Anything you set
explicitly on the CLI overrides the corresponding JSON field.
## Scrape a single page
```bash
kreuzcrawl scrape https://example.com --format markdown
```
JSON output (default) carries the rendered Markdown, page metadata
(`PageMetadata`), links by category, images, feeds, JSON-LD blocks, and
HTTP response metadata. Use Markdown output when piping into a file the user
will read.
See the `scraping-html-to-markdown` skill for the full flag surface.
## Crawl a site
```bash
kreuzcrawl crawl https://example.com \
--depth 3 --max-pages 200 --concurrent 8 --rate-limit 250 \
--stay-on-domain --respect-robots-txt --format markdown
```
Crawling is BFS by default, bounded by `--depth`, `--max-pages`, and
`--concurrent`. Per-domain politeness is enforced by `--rate-limit`
(milliseconds between requests to the same origin).
See the `crawling-a-site` skill for the recommended defaults and the full
flag surface.
## Map URLs
```bash
kreuzcrawl map https://example.com --limit 500 --search docs --format markdown
```
`map` reads `sitemap.xml` (and nested sitemaps), then falls back to link
extraction from the seed page. It does not render pages — use it to plan a
crawl or to feed URLs into another tool.
## Browser interaction
```bash
kreuzcrawl interact https://example.com \
--actions '[{"type":"click","selector":"#load-more"},
{"type":"wait","milliseconds":500},
{"type":"scrape"}]'
```
Action types are `click`, `type`, `press`, `scroll`, `wait`, `screenshot`,
`executeJs`, and `scrape` (to wait for an element, use `wait` with a
`selector` field). The result wraps the final HTML under
`interaction.final_html`. See the `automating-the-browser` skill for the full
action schema and limits.
## MCP server
When this plugin is installed in a Claude Code / Codex / Cursor / Gemini /
opencode harness, the MCP server is auto-registered:
```text
kreuzcrawl mcp
```
`mcp` is a stdio-transport server and takes no arguments. It requires a binary
built with the `mcp` feature (see Installation).
Prefer MCP tools over shelling out when both are available:
- Typed schemas surface argument errors before the call.
- Results stream back as structured tool output instead of stdout text.
- No `--format` juggling — the harness pulls whatever shape it needs.
Fall back to the CLI when you need to script a pipeline, capture stderr, or
chain with shell tools.
## Headless fallback
In `--browser-mode auto` (default), the engine:
1. Fetches statically via `reqwest`.
2. Detects WAF blocks (8 vendors) and JS-only shells.
3. Re-fetches through headless Chrome with a real fingerprint when needed.
Force the browser path with `--browser-mode always` when you already know
the page needs JS. Use `--browser-mode never` for hot loops where the cost
of a stray Chrome launch is unacceptable.
Point `--browser-endpoint ws://host:9222/devtools/browser/<id>` at an
already-running Chrome to skip the local launch.
See the `headless-fallback` skill for symptoms, costs, and external-CDP
patterns.
## Output formats
| Mode | Use when |
| ---------- | ------------------------------------------------------- |
| `json` | Downstream consumer needs metadata, links, images, etc. |
| `markdown` | Human reader or LLM-context payload. |
Markdown output skips metadata. If you need both, run with `--format json`
and read `result.markdown.content`.
## Robots, rate limits, ethics
- `--respect-robots-txt` is off by default; pass it for any crawl on a host
you do not own.
- The default `--rate-limit 200` already produces a polite cadence; raise it
for shared hosts.
- Identify the crawler honestly via `--user-agent`. Do not impersonate a
browser unless the operator has approved it.
## Cross-references
- `skills/crawling-a-site/SKILL.md` — multi-page crawl with depth, page
caps, concurrency, rate limits, and domain scoping.
- `skills/scraping-html-to-markdown/SKILL.md` — single-page rendering, the
Markdown output shape, and common pitfalls.
- `skills/mapping-urls/SKILL.md` — `map`: sitemap + link URL discovery,
filtering, and seeding a crawl.
- `skills/automating-the-browser/SKILL.md` — `interact`: the full scripted
action schema, limits, and result shape.
- `skills/serving-the-api/SKILL.md` — `serve`: the Firecrawl-v1-compatible
REST API server and its endpoints.
- `skills/headless-fallback/SKILL.md` — when and how to force the browser
backend.
---
**Source:** [`hashgraph-online/awesome-codex-plugins`](https://github.com/hashgraph-online/awesome-codex-plugins) → `plugins/kreuzberg-dev/plugins/plugins/kreuzcrawl/skills/kreuzcrawl/SKILL.md`
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!