> SpecStream is the live web data engine for teams and agents. This is the Markdown copy of https://specstream.ai/docs/integrations/open-notebook. Every page, with what SpecStream does and costs: https://specstream.ai/llms.txt

# Open Notebook

Open Notebook reads every web link you add as a source with its URL engine. Set two environment variables and its Firecrawl engine reads pages through SpecStream's Extract API, at $0.80 per 1,000 pages, with no code change.

[SpecStream for Open NotebookAI assistants](https://specstream.ai/integrations/open-notebook.md)

## What you need

-   An Open Notebook install you can configure, with Docker Compose or from source.
-   A SpecStream account. New accounts start with $10 of credit, no card. [Create one](https://specstream.ai/signup?utm_source=open-notebook).

1.  1

    ## 1. Get your SpecStream key

    [Get your key](https://specstream.ai/workspace/search?route=firecrawl&utm_source=open-notebook&utm_medium=howto) on the Search API screen of your SpecStream workspace. The same key works for search and for page reading.

2.  2

    ## 2. Set the Firecrawl variables

    Open Notebook's Firecrawl engine reads `FIRECRAWL_API_URL` and `FIRECRAWL_API_KEY` from the environment of its worker. Its documentation calls the address the base URL of a self-hosted Firecrawl; SpecStream answers Firecrawl's v2 scrape request at that base address.

    With Docker Compose, add both lines to the `environment` list of the `open_notebook` service in `docker-compose.yml`. From source, put them in `.env`. Write the address with no version: the Firecrawl client adds `/v2/scrape` itself.

    docker-compose.yml, open\_notebook service

    ```yaml
    environment:
          - FIRECRAWL_API_URL=https://api.specstream.ai/firecrawl
          - FIRECRAWL_API_KEY=YOUR_SPECSTREAM_KEY
    ```

3.  3

    ## 3. Restart Open Notebook

    The worker reads these variables when it starts. With Docker Compose, run `docker compose up -d` so the container is created again with the new environment. From source, stop and start the API and worker.

4.  4

    ## 4. Choose the URL engine

    Open **Settings**, then **Content Processing**. Leave **URL Processing Engine** at **Auto (Recommended)**, which tries Firecrawl first once a Firecrawl key is set, or pick **Firecrawl** to send every web link to SpecStream. Click **Save**.

    The setting applies to sources processed after you save. To read an existing web link again, choose **Refresh content** in its card menu.

5.  5

    ## 5. Check it

    Add a source with **Add URL** and paste a page that renders with JavaScript. When it finishes, the source holds the page's text and title. The call appears in your SpecStream workspace history.

## What Open Notebook sends

Open Notebook extracts web links with its content-core library. Its Firecrawl engine calls the Firecrawl Python SDK's `scrape` with the formats `markdown` and `html`, then keeps `markdown` as the source text and `metadata.title` as its title. SpecStream answers `POST https://api.specstream.ai/firecrawl/v2/scrape` in that shape, with `data.markdown` and `data.metadata`. The key goes as a Bearer token.

## Variables that have no effect

The engine choice comes from **Settings**, so `CCORE_URL_ENGINE` is overridden and does nothing. The Jina engine calls `https://r.jina.ai` directly and has no address variable, so it cannot be pointed at SpecStream. Use Firecrawl or Crawl4AI for that.

## Or use the Crawl4AI engine

Open Notebook can also send links to a remote Crawl4AI server, and SpecStream answers Crawl4AI's `/crawl` request. Set `CRAWL4AI_API_URL` to `https://api.specstream.ai/crawl4ai` and `CRAWL4AI_API_TOKEN` to your key, restart, and pick **Crawl4AI** as the **URL Processing Engine**. Do not set `OPEN_NOTEBOOK_ENABLE_CRAWL4AI`: it installs a local Chromium that the remote address does not need.

## Cost

Each page read is one Extract API page at $0.80 per 1,000 pages, and a page with no text is not charged. It comes out of your balance, with no quote and no approval. New accounts start with $10 of credit, no card. Open Notebook retries a failed fetch, and each retry that returns text is a page read. [Balance and billing](https://specstream.ai/docs/billing.md) has the details.

## Disconnect

Remove both variables and restart Open Notebook. Auto then falls back to Jina, Crawl4AI or a plain HTTP fetch. To end the key's access, revoke it in your SpecStream workspace under **Agents & API**, then **API keys**. Questions go to [support@specstream.ai](mailto:support@specstream.ai).

## More

[SpecStream for Open Notebook](https://specstream.ai/integrations/open-notebook.md) covers what it does in Open Notebook on one page. Every other tool has its guide in [Connect your tools](https://specstream.ai/docs/integrations.md). You see the most a request can cost before it starts, and the matches are paid from your balance. [Billing](https://specstream.ai/docs/billing.md) has the details. For help, email [support@specstream.ai](mailto:support@specstream.ai).
