Notion
Notion holds the long-form work that never reaches a commit: specs, RFCs, project pages, meeting notes. This collector indexes the pages you created or last edited, so that work shows up in standups and brag docs alongside your code.
Connect
Section titled “Connect”Notion doesn’t hand connections blanket access — you create a connection, then explicitly grant it the pages or databases you want indexed. Nothing else in your workspace is visible to DevRecall.
1. Create a connection at app.notion.com/developers/connections → New connection.
Notion asks for a name and an authentication method first — choose access token (also called an internal integration secret). OAuth is for multi-workspace apps and isn’t what you want here.
Capabilities appear after that step. The two DevRecall needs are on by default, but confirm they’re enabled:
- Read content — to see pages
- Read user information including email addresses — to work out which workspace member is you
That second one is not optional. Notion’s API can’t filter a search by author, and the token identifies a workspace bot, not a person — so without it DevRecall cannot tell your pages from your colleagues’ and will refuse to enable rather than index the wrong thing.
2. Give it access to your pages under the connection’s Content
access tab (or from a page: ••• → Connections). Nothing is visible
to the connection until you do this.
There’s no single “grant everything” button — but you don’t need one. Access inherits down the page tree, so granting a top-level page or a teamspace’s root covers every page nested underneath it. In practice a handful of grants (one per teamspace or top-level area) covers a whole workspace. Grant at the top, not per document.
That least-privilege default is Notion’s design, and it works in your favour here: DevRecall indexes exactly the areas you point it at, and nothing else.
3. Connect:
devrecall auth notionPaste the connection’s access token (ntn_…). DevRecall validates it,
lists the workspace members, and asks which one is you — matching
automatically if your email is already known from another source.
devrecall syncBackfill older pages
Section titled “Backfill older pages”devrecall sync looks at the recent window only:
devrecall backfill --since 90d --source notionWhat gets collected
Section titled “What gets collected”| Field | What |
|---|---|
| Title | The page’s title property |
| Action | created if you made the page, edited if you touched one |
| URL | Direct link back to the page |
| Parent | The database or page it lives under |
| Time | The page’s last_edited_time |
Only pages where you are the creator or the most recent editor are stored. Archived and trashed pages are skipped.
Page bodies are not fetched. Titles and metadata are enough to answer “what was I working on”, and pulling every block would multiply API calls against Notion’s ~3 requests/second limit. Comments aren’t collected yet for the same reason — they require a request per page.
Read-only. DevRecall never creates, edits, or deletes anything.
Where the data lives
Section titled “Where the data lives”One row per page in your local SQLite database
(~/.devrecall/devrecall.db), with page_id, url, parent_type,
parent_id, action, and created_at in metadata. The integration
secret is stored in ~/.devrecall/tokens/ with 0600 permissions.
Disable
Section titled “Disable”devrecall config set notion.enabled falseAlready-indexed pages stay. To revoke access entirely, delete the connection at app.notion.com/developers/connections.
Troubleshooting
Section titled “Troubleshooting”no workspace members visible — the connection is missing the
Read user information including email addresses capability. Enable it in
the connection’s settings and re-run devrecall auth notion.
Notion returned 403 — same cause, or the Read content capability is missing.
Sync succeeds but finds nothing — the connection only sees pages you
granted it. Add them under the connection’s Content access tab, or from
a page via ••• → Connections. Grant a top-level page or teamspace
root rather than individual documents: access inherits to every child page,
so one grant usually covers an entire area. Also check the pages were edited
inside the sync window; use devrecall backfill --source notion for older
ones.
Pages I only commented on don’t appear — DevRecall records the page creator and last editor. A comment doesn’t change either.