# Gemini Notebook / NotebookLM

> Import NotebookLM Takeout chat history and preserve notebook resources separately.

Gemini Notebook, formerly NotebookLM, is separate from Gemini Apps, AI Studio,
Jules, and Antigravity. Hansard reads the NotebookLM product's Google Takeout
export through an explicit CLI command. The app's export picker and browser
extension do not currently capture this product.

## Source IDs

| Source       | Use it for                                                               |
| ------------ | ------------------------------------------------------------------------ |
| `notebooklm` | NotebookLM Takeout ZIP or extracted folder containing Chat History HTML. |

## How the import works

Google Takeout places chat HTML beside a notebook's metadata and resources.
Hansard reverses the exported MODEL/USER blocks into chronological prompts and
replies, preserving their text, formatting, and literal citation markers.
Notebook metadata, uploaded sources, notes, and generated artifacts are kept
separately in raw storage. Resources belonging to notebooks with no exported
chat are also retained when the export contains at least one chat. They never
become synthetic user messages or tool calls. An export containing only
sources and notes is rejected as a conversation import.

The export has no account identity, so an explicit account label identifies
the archive account. A chat's exported filename supplies its conversation ID;
moving the ZIP or renaming a notebook does not by itself create another chat.
Message timestamps and source message IDs are absent. Hansard preserves the
message order with unknown times and excludes the conversation from dated
activity. Notebook creation and last-viewed metadata are retained separately
and never used as message times. Each raw member has a verified SHA-256 hash.

An identical export is skipped. A longer chat must retain the exact archived
message prefix before it can replace the normalized transcript. Shorter or
rewritten histories, and changed metadata or resources without additional
messages, report conflicts because the export provides no trustworthy update
clock. Previous raw snapshots remain available after an accepted append.

## Import and keep current

**Import now**

In Google Takeout, select **NotebookLM**, create the export, and download it.
Import its ZIP or extracted folder:

```sh
hansard import notebooklm /path/to/takeout.zip --username Personal
```

**Keep current**

Download another Takeout export and reuse the same label or registered
account. This route is not watched automatically.

```sh
hansard import notebooklm /path/to/new-takeout.zip --account Personal
```

`--account-id` is an alias for `--account`. `--dry-run` previews without writing
sessions or accounts; `--json` reports import, skip, and conflict counts.
`--scope local|team` selects archive storage. Only `--since all` is supported.
Keep all parts of an export together in an extracted folder; a single ZIP
must contain each chat's notebook metadata and resources to preserve them.

## Review the import in the app

1. When the import finishes, open **Conversations** and select **Filter & sort**.
2. Set **Source** to **Gemini Notebook / NotebookLM** and set **Time** to the window you imported. Use **Folder** to narrow the list when you use this harness in several projects.
3. Select a conversation to check its messages, tool calls, files, commits, model, and token usage.

To keep archiving new sessions from a local harness, open **Settings → Imports**. **Automatic** follows every supported harness installed on this computer. **Custom** lets you turn individual harnesses on or off. Cloud sources and account exports never run from here; each needs its own import command. If a conversation you expect is missing after you reset the filters, run the import command on this page again with `--explain-skips` where the source supports it.

Set the time filter to **All time** because exported chats have no known dates.
Compare the prompt/reply order with the notebook. Citation markers remain
literal text; the export does not establish which source each marker names.
Sources and notes are raw resources, not additional transcript messages.

## What Hansard preserves

- Ordered prompts and replies, Markdown formatting, and literal citations.
- Account label, exported chat identity, notebook title, emoji, creation,
  last-viewed, and sharing metadata.
- Exact chat HTML, metadata JSON, source, note, and artifact bytes in raw storage.
- Prior accepted snapshots, content hashes, resource inventories, unknown
  notebook metadata paths, and explicit coverage gaps.

## Known limitations

- This is a partial manual-export route, not account-wide cloud enumeration.
  Takeout history completeness is unknown.
- Message IDs and timestamps, native account and notebook IDs, model names,
  measured token usage, thoughts, tool telemetry, and citation-to-source links
  are not supplied by the inspected export.
- Media and generated artifacts are preserved as raw bytes when included;
  they are not reconstructed as inline transcript attachments. Remote URLs are
  never downloaded. Unknown artifact formats remain raw-only.
- A sources-only export creates no archive session. A conflict leaves the
  existing archive unchanged; retain the incoming export for manual review.
- ZIPs are limited to 10,000 entries, each file to 64 MiB, the NotebookLM member
  set to 256 MiB, and extracted folder depth to 16. Linked paths, duplicate
  member names, duplicate chat IDs, unstable files, and unfamiliar chat framing
  are rejected.
- The native trial covers one exported prompt/reply pair and source metadata.
  The archive viewer showed the prompt and reply, formatting, literal citations,
  separate provider, and unknown time. Multi-turn append, conflicting exports,
  account separation, and offline replay are fixture-tested. Native multi-turn,
  artifacts, citation-source mapping, and full metadata display remain open.

## Refresh an existing archive

Reimport the original full export with the same account after a parser update:

```sh
hansard import notebooklm /path/to/takeout.zip --account Personal
```

If the original export is gone, the preserved raw snapshot supports:

```sh
hansard rebuild --from-raw --provider notebooklm --since all
```

Replay preserves account identity and the raw manifest. It cannot recover
content that Google omitted or a conflicting export that was not accepted.
