Install
openclaw skills install cloudflare-browser-rendering-skillUse Cloudflare Browser Rendering REST APIs to extract rendered webpage content as Markdown or crawl whole sites asynchronously. Use when normal web_fetch is...
openclaw skills install cloudflare-browser-rendering-skillUse this skill to bridge the gap between lightweight web_fetch and full interactive browser automation.
Routing rule:
web_fetch for simple static pages and quick reads.browser when the task requires interaction such as login, clicking, typing, or manual flow control.web_fetch/markdown/crawlbrowserIf uncertain, start with web_fetch. Escalate to /markdown if the page is incomplete or empty. Escalate to /crawl only when multiple pages are needed.
Read references/decision-guide.md for routing details and references/*.md for endpoint notes.
Expect these environment variables to be available before running the scripts:
CLOUDFLARE_API_TOKENCLOUDFLARE_ACCOUNT_IDThe token needs Browser Rendering Write for /markdown and crawl creation. Reading crawl results can use Browser Rendering Read or Write.
Use scripts/cf_markdown.py.
Examples:
python3 scripts/cf_markdown.py --url https://example.com
python3 scripts/cf_markdown.py --url https://example.com --wait-until networkidle0
python3 scripts/cf_markdown.py --url https://example.com --wait-until networkidle0 --timeout-ms 60000
python3 scripts/cf_markdown.py --url https://example.com --cache-ttl 0 --json
python3 scripts/cf_markdown.py --html '<div>Hello</div>'
python3 scripts/cf_markdown.py --url https://example.com --user-agent 'Mozilla/5.0 ...'
python3 scripts/cf_markdown.py --url https://example.com --cookies-json '[{"name":"session","value":"abc","domain":"example.com"}]'
python3 scripts/cf_markdown.py --url https://example.com --authenticate-json '{"username":"u","password":"p"}'
python3 scripts/cf_markdown.py --url https://example.com --reject-request-pattern-json '["/^.*\\\\.(css)$/"]'
Guidelines:
--wait-until networkidle0 or networkidle2 for SPA/JS-heavy pages.--timeout-ms (for example 60000), then consider falling back to domcontentloaded if full idle waiting is too slow.--cache-ttl 0 when freshness matters more than speed.--json when you want full API output for debugging.Use scripts/cf_crawl.py.
Examples:
python3 scripts/cf_crawl.py start --url https://developers.cloudflare.com/workers/ --depth 2 --limit 20 --format markdown
python3 scripts/cf_crawl.py wait --job-id <job_id> --poll-seconds 5
python3 scripts/cf_crawl.py results --job-id <job_id> --limit 20 --status completed
python3 scripts/cf_crawl.py run --url https://developers.cloudflare.com/workers/ --depth 2 --limit 20 --format markdown --wait
python3 scripts/cf_crawl.py run --url https://developers.cloudflare.com/workers/ --depth 2 --limit 20 --format markdown --wait --fetch-results --results-status completed --out-json out/crawl.json --out-markdown out/crawl.md
python3 scripts/cf_crawl.py start --url https://example.com --source links --goto-options-json '{"timeout":30000}'
Guidelines:
depth and modest limit.run --wait for one-shot jobs.run --wait --fetch-results when you want a full one-command workflow.start + wait + results when you want more control.--out-json and --out-markdown for large outputs instead of dumping everything into chat.For large crawls:
status=completed./markdown returns incomplete content, retry with --wait-until networkidle0./crawl is overkill for the task, fall back to /markdown on key URLs.browser.web_fetch when possible.scripts/cf_markdown.py - rendered single-page Markdown extractionscripts/cf_crawl.py - async crawl job helperreferences/decision-guide.md - routing and fallback guidancereferences/markdown-endpoint.md - focused notes on /markdownreferences/crawl-endpoint.md - focused notes on /crawl