# Drain Google Keep into tasks

This guide drains Google Keep inbox notes into `gkeep_inbox.md` as Obsidian tasks. A note is archived in Keep only after its current content is verified in the vault. Keep never deletes the note.

## Before you start

Install the CLI and point it at your vault. Add a `gkeep:` block to `~/.config/bob/config.yml` (or `$BOB_CONFIG_FILE`):

```
gkeep:
  email: user@example.com
  token_command: pass show gkeep/master_token
  token_store_command: pass insert -m -f gkeep/master_token
```

`email` must be the Google account that owns the notes. The token commands print and store a master token (`aas_et/…`); they never put the token on argv. `uv` must be on `PATH` so the adapter can run. Tests and this page use synthetic names; do not paste a live cookie into a log or ticket.

## 1\. Store the master token and check the setup

```
bob gkeep login
bob gkeep doctor -b /path/to/vault
```

`login` reads a Google sign-in cookie from a hidden TTY prompt (or stdin when stdin is not a TTY), exchanges it for a master token, stores that token, then checks Keep reachability. `doctor` walks config, account, token, adapter, Keep, the target note, and git. Confirm every check is `ok` or an explained skip. Exit 2 with a login hint means the stored value is missing or is still a sign-in cookie.

## 2\. Inspect the Keep and vault inboxes

```
bob gkeep -b /path/to/vault
```

Output

```
Keep
REF      AGE  KIND  STATE  NOTE
3f9c2e1  2d   note  new    Buy milk
a1b2c3d  5h   note  pinned Weekly plan

Vault · gkeep_inbox.md
AGE  STATUS  TASK
3d   [ ]     Call the bank

1 new · 1 pinned · → bob gkeep pull
```

Confirm each `STATE`. `new` and `revised` notes are written on pull. `pending` notes are already in the vault and archive only. `pinned` and `shared` stay in Keep unless you pass `--include-pinned`, `--include-shared`, or `-i REF`. `bob gkeep list -s vault` skips the network.

## 3\. Preview the Markdown, then write without archiving

```
bob gkeep pull -d -b /path/to/vault
```

The dry run prints the exact Markdown a pull would write and changes nothing. It still snapshots Keep. Confirm the previewed task text.

```
bob gkeep pull -n -b /path/to/vault
```

`-n` writes and verifies tasks, then leaves notes in Keep. Open `gkeep_inbox.md` and confirm the new checkbox lines.

## 4\. Pull and archive

```
bob gkeep pull -b /path/to/vault
```

Confirm the command exits 0 and `bob gkeep` reports `✓ Keep inbox is clear` (pinned or shared notes may remain). A Git vault also gets a scoped commit of the target note plus import receipts. A URL-only Keep note clips into the reading queue during this pull instead of becoming a task; see [Save a link to your reading queue](<https://bobs-org.github.io/guides/save-link-to-reading-queue/index.md>).

## If it goes wrong

Exit 2 is setup: missing config, no token, unknown `-i`, or a missing target note. Run `bob gkeep doctor` and `bob gkeep login`. Exit 1 is a runtime failure (auth, network, adapter, lock, verify, or commit). Notes edited in Keep during the pull stay in Keep. Retry after the reported step is fixed; leave any receipts from the failed attempt in place. Pass `-i REF` from `bob gkeep list` to pull one note.

## Related

- [Bob Gkeep](<https://bobs-org.github.io/gkeep/index.md>)
- [bob gkeep](<https://bobs-org.github.io/reference/cli/gkeep/index.md>)
- [Save a link to your reading queue](<https://bobs-org.github.io/guides/save-link-to-reading-queue/index.md>)
- [Run the morning review walk](<https://bobs-org.github.io/guides/run-morning-review/index.md>)
