Claude-skill-registry crawl-to-markdown

Use when web.run fails to parse a webpage and you need raw Markdown via Crawl4AI.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/crawl-to-markdown" ~/.claude/skills/majiayu000-claude-skill-registry-crawl-to-markdown && rm -rf "$T"
manifest: skills/data/crawl-to-markdown/SKILL.md
source content

Use this skill only after the built-in

web.run
tool fails to return usable content for a page.

What this skill does

  • Crawls one or more URLs with Crawl4AI.
  • Returns raw Markdown for each URL.

How to run

This script uses uv inline metadata. If

uv
is available just run:

uv run scripts/crawl_to_markdown.py https://example.com

Multiple URLs:

uv run scripts/crawl_to_markdown.py https://example.com https://example.org

Or pipe a newline-delimited list:

printf "https://example.com\nhttps://example.org\n" | uv run scripts/crawl_to_markdown.py

Troubleshooting

Crawl succeeds but output is blank

Some sites don't match the default

--selector
and can return empty/whitespace Markdown. The script will retry without CSS selection automatically, but you can also force it explicitly:

uv run scripts/crawl_to_markdown.py --selector '' https://example.com

uv cache permission errors

If

uv
fails accessing its cache directory (e.g.
~/.cache/uv
), either point it at a writable cache directory:

uv --cache-dir .uv-cache run scripts/crawl_to_markdown.py https://example.com

Or avoid the cache entirely:

uv --no-cache run scripts/crawl_to_markdown.py https://example.com

Output format

For each URL, the script prints a header and raw Markdown content:

URL: https://example.com
<raw markdown>
---

If a crawl fails, the output includes an error block for that URL.