AI Decision System
Replayable, offline-verifiable records for AI-assisted go/no-go decisions: experiment promotions, typed model answers and human-approved actions.
翻譯準備中
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證OctoCrawl: readable Markdown and checked fields from public web pages, for AI agents, RAG and research. Failures come back with a reason. Self-host with REST, SDK or MCP.
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A transparent, verifiable web extraction system built for RAG and Agent workflows.
Most crawlers report "success" when they return empty pages, challenge screens, or the wrong content. W2L makes failure visible and fixable:檢視完整 README ↗Scrape pages. Crawl websites. Turn web content into usable data.
Octocrawl is an open-source web scraping and crawling toolkit for AI agents, RAG and research. Collect documentation for a knowledge base, extract product details for comparison, or turn web tables and listings into data for analysis. Each page comes with a source record.
Try a page in your browser, or connect your agent through hosted MCP or the REST API. No installation or API key is needed to try the hosted service.
| Capability | What you get |
|---|---|
| Scrape a page | Readable Markdown for LLM context, plus HTML, links, image URLs and page metadata. Request a screenshot on the browser lane. |
| Map a website | Discover URLs from sitemaps and page links, and filter them by a search term to find the pages you need. |
| Crawl a site or section | Follow links from a starting URL and collect each page's content, with path filters, depth and page limits. |
| Scrape a list of URLs | Submit a batch, retrieve results as they arrive, and keep the outcome of every URL, including failures. |
| Extract structured data | Get tables and repeated listings as JSON and CSV, or pass a JSON Schema for supported fields such as product names, prices and page labels. Extraction guide. |
| Read dynamic pages · local actions | Render JavaScript, click controls, scroll, load more items and follow pagination before extracting content. Browser actions. |
| Read PDF reports | Extract a PDF's text layer with page markers for citations. CSV, JSON and plain-text URLs also return their text. File support. |
| Revisit sources on a schedule · local workers | Run Monitors and send their events to an HTTPS endpoint with retried delivery. Monitor setup. |
Hosted Octocrawl offers scrape and map, and with an account crawl and batch jobs (up to 500 pages a crawl, 1,000 URLs a batch); keyless requests use HTTP, and an account key enables the browser lane. Run locally for larger jobs, page actions and Monitors; see Running Octocrawl for setup and self-hosting options. The web preview is a single-page trial, with five pages a day and up to 20 named fields.
null.npx, or self-host with Docker Compose. The server is AGPL-3.0; the client libraries are MIT.If Octocrawl helps your work, give the repository a star.
Connect your agent to hosted Octocrawl. No key is needed to start (steps for Claude Code, Cursor, OpenCode and Codex):
claude mcp add --transport http octocrawl https://mcp.octocrawl.dev/mcp
Without a key it reads 20 pages a day over HTTP. For more, sign in and make a key: an account gets 1,000 credits a month and the browser lane. The key goes in a header, never in the URL:
claude mcp add --transport http octocrawl https://mcp.octocrawl.dev/mcp --header "Authorization: Bearer oc_…"
Or run it on your own computer. You need Node.js 22.13+ or 24+:
npx octocrawl scrape https://example.com --markdown
pip install 'octocrawl-client[pandas]' # the Python client of a running API (npx octocrawl serve); [pandas] for to_pandas()
npm install @octocrawl/sdk # the TypeScript client; @octocrawl/mcp is the MCP server
npm install @octocrawl/ai-sdk # scrape and map as Vercel AI SDK tools, on hosted Octocrawl by default
Pages are read over HTTP first. For pages that only appear in a browser, install Chromium once with npx playwright install chromium; until then such a page comes back with a browser_not_installed warning that names the command.
To give your agent every tool, with no daily limit, run the API locally and connect the MCP server to it:
npx octocrawl serve # keep it running: the API on 127.0.0.1:8787
claude mcp add octocrawl -- npx -y @octocrawl/mcp # the published stdio server, a client of that API
The hosted service offers scrape and map, and with an account crawl and batch jobs. The local server adds larger jobs, the Amazon.sg product tool and the Monitor tools. To serve other machines yourself, npx octocrawl serve --hosted --token <token> refuses private addresses, robots overrides and saved logins as the hosted service does. Running Octocrawl covers all three; Docker Compose runs one on your own server. An agent installing Octocrawl for you (Cline, for one) can follow llms-install.md.
The test page below answers HTTP 200 but shows a Cloudflare check instead of content (fixture block-challenge-200). A crawler that trusts the status code counts it as a success. Octocrawl tries plain HTTP, then a browser, and reports the page as blocked, with what to do next:
npx octocrawl scrape http://127.0.0.1:8799/block/challenge-200
{
"status": "blocked",
"blockReason": "cloudflare_challenge",
"channelsTried": ["http", "browser_local"],
"markdown": null,
"snapshot": { "httpStatus": 200, "artifacts": [] },
"usage": { "wallMs": 1079, "bytesWire": null, "externalCostUsd": 0 },
"agentHints": [
"127.0.0.1 gates automated access on the lanes tried (http, browser_local); … a proxy or session you own is the supported route, or, on your own machine, getting through the check yourself in your own Chrome: handoff: true on a scrape (octocrawl scrape --handoff) …"
],
"evidenceRecord": { "schemaVersion": "w2l.evidence/1", "status": "blocked", "reason": "cloudflare_challenge", "lane": "browser_local", "…": "…" }
}
This is real output of octocrawl 0.4.1, trimmed (…) and rounded, against the repository's fixture server (FIXTURE_PORT=8799 node --import tsx packages/fixtures/src/cli.ts). bytesWire: null means wire bytes were not measured; artifacts: [] means no screenshot or DOM snapshot was made.
The site's docs at octocrawl.dev/docs cover MCP setup for four clients, task guides and limits. They are built from apps/public-web/content.
The full reference lives in docs/:
| Topic | Page |
|---|---|
The octocrawl command | Command line |
| Hosted, local and self-hosted servers, ports, tokens, proxies, robots.txt | Running Octocrawl |
| Options for a scrape and what a result carries | Scrape options and results |
| Many URLs, whole sites, site maps, webhooks | Batches, crawls and maps |
| Structured data from a JSON Schema | JSON extraction |
| PDF, CSV, XLSX, ZIP and JSON URLs | Files |
| Your login, enhanced access, handoff, your own Chrome | Access |
| Scheduled re-reads and HTTPS events | Monitors |
| Moving from Firecrawl | Firecrawl shim |
Walkthroughs of real runs are on the blog: Claude Code web scraping with MCP, Web scraping for RAG, Find all pages on a website, Scrape a website with login, in your own Chrome, Extract structured data without an LLM, Scrape a list of URLs and keep every failure.
For researchers, two guides walk through a real run: From a URL list to a CSV with evidence and Citing web data in a paper.
For the Monitor → result → HTTPS event → restart workflow, follow the onboarding guide.
You need Node.js 22.13+ or 24+ and npm. The PDF engine, pdf.js, needs 22.13 or later.
git clone https://github.com/77777R7/Octocrawl.git
cd Octocrawl
npm ci
npx playwright install chromium
npm run typecheck
npm test
npm run scrape -- https://example.com --markdown
npm run crawl -- https://example.com --max-pages 20
The packages are published from this repository. Each week the Install check workflow runs the npx line from an empty cache on macOS, Windows and Linux.
w2lThe product is called Octocrawl. Its earlier working name was W2L (Web-to-LLM).
Some identifiers still use the old name. They stay until a change renames them on purpose, because renaming them breaks existing setups and records:
W2L_API_PORT and W2L_TASK_ROOT;.w2l/;@w2l/* and the checkout's w2l command (npm run w2l);W2L and W2LError;w2l.evidence/1;w2l-research, which sites' robots.txt can name.The published packages already use the new name: octocrawl, @octocrawl/* and octocrawl-client. The full list is in AGENTS.md.
Run the fixture suite against the bare HTTP baseline:
npm run bench
The bare HTTP baseline has a high false-success rate on purpose. It has no content extraction, challenge detection or redirect handling. Benchmarks shows the expected output and the throughput and crash-recovery run.
packages/
contracts/ TypeScript types and ground-truth schema (MIT)
fixtures/ HTTP server with 56 ground-truth test cases
http-core/ robots.txt parser (ReDoS-resistant)
extract-tf/ Content extraction, HTML → Markdown, PDF text
runtime/ TaskStore, frontier, bounded crawl orchestrator
bench/ Benchmark runner, ladder CLI (w2l-ladder), scoring
cli/ octocrawl: scrape, crawl, batch, map, serve (AGPL)
api/ REST server (AGPL)
sdk/ TypeScript client (MIT)
ai-sdk/ scrape and map as Vercel AI SDK tools (MIT)
mcp/ stdio and restricted Streamable HTTP MCP server (AGPL)
public-preview/ Server for the public preview at octocrawl.dev
apps/public-web/ The octocrawl.dev site and its docs pages
python/ Python client octocrawl-client (MIT)
examples/ Runnable Monitor + Delivery workflow and webhook receiver
docs/ Reference, guides, ADRs and dated records (index: docs/README.md)
ROADMAP.md The current phase and what is paused
CHANGELOG.md Release notes
ROADMAP.md starts with a summary of the current phase. The earlier milestone checklist is in docs/roadmap/milestones.md.
We use the Developer Certificate of Origin (DCO) instead of a CLA. Every commit needs a Signed-off-by line:
git commit -s -m "Your commit message"
See CONTRIBUTING.md for details, including how to write docs.
Server-side code, the CLI (@octocrawl/cli, octocrawl) and the MCP server (@octocrawl/mcp): AGPL-3.0
Client libraries: MIT: the TypeScript SDK (@octocrawl/sdk, which includes the workspace's @w2l/contracts, also MIT), the AI SDK tools (@octocrawl/ai-sdk, which include the SDK) and the Python client (octocrawl-client)
See PHASE1_ENGINEERING_NOTES.md §1.3 for the rationale.
AGPL requires network-deployed modifications to remain open. Anyone can fork, modify, and host Octocrawl — as long as they share those modifications. The real differentiator is the name (trademark) and the hosted service, not the license lock.