nc://crawl4ai

v0.1.0Pinned
ThomSharktools/nodecode-crawl4ai: Extracts clean markdown from any URL through your own self-hosted Crawl4AI server. - a rewrite of mblauser/hermes-plugin-crawl4ai (MIT), credited to mblausera2a06bd· 9 Nov1 commit
test1 filecell.lisp4.6 KBclient.lisp12.1 KB

nodecode-crawl4ai

Crawl4AI Web Extract: turns any page into clean markdown through your own self-hosted Crawl4AI instance. A Nodecode rewrite of mblauser/hermes-plugin-crawl4ai by mblauser.

Crawl4AI is an open-source crawler that renders a page in its own browser and answers it as LLM-friendly markdown, so a JavaScript-heavy site extracts as readily as a static one. It runs on your machine or your own server: no page, and no text, leaves your network. The server is yours to run; the cell never installs, starts or stops it.

Get it

Tell the agent "add the crawl4ai cell", or run nodecode add nc://crawl4ai.

Set it up

Run the server first:

docker run -d -p 11235:11235 unclecode/crawl4ai

It prints a JWT on startup when auth is on. Then give the cell its address in /settings, or in ~/.nodecode/config.jsonc:

{
  "crawl4ai": { "url": "http://localhost:11235", "api_token": "the-jwt-it-printed" }
}

url is required and must be http:// or https://; api_token is optional, for a server started with auth off. timeout_seconds (default 60) is how long one page may take — the server renders it in a browser first. config.example.jsonc in this folder lists every member. A url that is not an http address refuses the start, and the folder's line in /cells says why.

The route it calls is the one Crawl4AI serves: POST /md with {"url": ...} and a bearer token. A server behind a path prefix works — put the whole prefix in url, without a trailing slash.

Use it

Ask the agent to read a page, or call the tool yourself:

Tool What it does
crawl4ai_extract One or more page addresses in, each page's title, address and markdown out — or one ERROR line for the page that failed.

/crawl https://example.com extracts one page without asking the model, and typed alone it asks for the address.

A page address pointing into a private, loopback or link-local network is refused before the request goes out, as the original plugin's SSRF check refused one. The bearer token never appears in an answer: every refusal is filtered for it.

The cell answers the same three shapes the original read: a markdown string, a markdown object carrying raw_markdown, and the title taken from the page's first # heading. A failed page is answered as ERROR: with the status and the server's own detail, so the model can repair the call instead of repeating it.

To switch it off, drop the folder or set "crawl4ai": {"enabled": false}: nothing is registered then.

Add nc://crawl4ai

  1. 1

    Install Nodecode

    Once per machine.

    $ curl -fsSL https://nodecode.ai/install.sh | sh
  2. 2

    Add the cell

    Pinned at a2a06bd.

    $ nodecode add nc://crawl4ai

    Or tell the agent add the crawl4ai cell.