fshy

Home / Google

Gemini Notebook (formerly NotebookLM) — source corpus

support.google.com/gemininotebook/answer/16269187?hl=enAI notebook / RAG productstorage/gemini-notebook-source-corpusJSONcomparereport an errorprovider JSON

Free allowance
Also 500,000 words/source cap and no page limit.
Verdict
caveatusable, with a named limit or an unprobed read path
Cost
free tier
Identity
emailno card, no phone
Binding limit
per-object-capper-object-cap 200 MB
Evidence
reported6 sources; a third party said so
Freshness
stale on 2026-11-05checked 2026-10-21 (inherited); stale on 2026-11-05
Free tierAlso 500,000 words/source cap and no page limit.
unit TB; metered on unstated
Pricenone stated
Limits
  • per-object-cap (binding) per-object-cap 200 MB source
per-object-cap 200 MB or 500,000 words. Notebook cap is per-user; source cap is per-notebook; 'sharing a notebook does not change the source limit for any collaborator'. Copy-protected PDFs are rejected outright. Consumer API is undocumented and Google has changed *enforced* limits without updating the published tables.
Bindingper-object-cap the per-object cap sets the shard size and therefore the object count; it bounds the total more tightly than any headline quota
Identityemail email
EgressNo egress metering or fee anywhere in the product. Reads happen through Google's own UI/API, not a CDN URL.
Per-object capper-object-cap 200 MB (200000000 bytes)
Retentionnot stated
Interfacerest, cli No official public API for consumer accounts. Working path is the reverse-engineered internal batchexecute API: notebooklm-py (19,838 stars, pushed 2026-10-21) exposes Python, CLI, MCP server, and a local REST server; notebooklm-mcp (202) and notebooklm-rest-api (91) wrap it.
Toolingpip install notebooklm-py; notebooklm source add, notebooklm ask, notebooklm generate, notebooklm download. Google Cloud has a *separate* documented Enterprise API (notebooks.sources.uploadFile) that requires a Workspace/Cloud entitlement.
Composes with100 notebooks x 50 x 200 MB = 1 TB per Google account. Google accounts are free and email-only, so N accounts linearise. Upskilling to Plus/Pro only raises the per-notebook source cap (100/300), so the notebook count stays at 200/500 — the free tier already gives the widest notebook multiplier per dollar.
ReliabilityREAD-BACK IS EXTRACTED TEXT, NOT ORIGINAL BYTES. There is no 'download source' button; the platform keeps a static extracted copy and the original file is not retrievable. Third-party extensions (Notebook Clipper, nlm tools, notebooklm-tui) export sources as Markdown/TXT/PDF of the *extracted text*; notebooklm-tui saves PDFs as per-page PNGs. It is a genuine 1 TB of free ingest, and a genuinely usable grounded-RAG corpus, but it is not a byte-exact archive. Rate limits apply and heavy use is throttled; the shared CI account-pool discussion in the wrapper's own docs is the tell.
Parsed numbers
  • per-object-cap 200 MB
Evidence 6
datesourcewhat it proved
2026-10-21support.google.com/gemininotebook/answer/16269187?hl=en'The current limit is 500,000 words per source or up to 200MB for local uploads. There's no page limit.'
2026-10-21support.google.com/gemininotebook/answer/16213268?hl=en'Notebooks | 100/user'; 'Sources | 50/notebook' (Standard column); 'Sharing a notebook does not change the source limit'
2026-10-21github.com/teng-lin/notebooklm-py19,838 stars, description 'Full programmatic access to Gemini Notebook's features—including capabilities the web UI doesn't expose'; pushed_at 2026-10-21T19:38:11Z
2026-10-21notebookclipper.com/docs/notebook/export-sourcesexport is 'the text Gemini Notebook extracted from each source, as Markdown, plain text or PDF' — not the original file
2026-10-21ainotechou.com/notelm-source/'元のPDFには戻らない!HTML形式への変換' (does not return to the original PDF)
2026-10-21docs.cloud.google.com/gemini/enterprise/notebooklm-enterprisseparate Enterprise API exists but is entitlement-gated
Unknown values 3
  • $.per_object_cap.notes the field may be stated in a source that was not read
  • $.retention.notes the field may be stated in a source that was not read
  • $.retention.stated the field may be stated in a source that was not read