Unofficial read-only CLI for Google Keep. Sign in once in Chrome. Then list notes, search, and read note text.
Built by True Frontier. Not affiliated with Google.
Same pattern as google-photos-cli, loom-cli, and google-recorder-cli.
The session stays on your machine, in a local Chrome profile. This tool does not print cookies, and it does not ship a cloud login.
- Python 3.10+
- Google Chrome
pipx install git+https://github.com/truefrontier/google-keep-cli.gitOr from a checkout:
pipx install .Playwright uses your installed Chrome (channel="chrome"). You do not need playwright install chromium.
keep login
keep list
keep list --limit 20
keep list --archived
keep list --compact | jq # piped → JSON automatically
keep list --select id,title --csv
keep search "picnic"
keep search "picnic" --compact --quiet
keep info <id>
keep info <id> --format json --compact
keep info <id> --format text
keep get <id>
keep get <id> -o note.txtkeep login opens Chrome. Sign in, wait until Keep loads, and the window closes. The profile is saved at ~/.keep-cli/chrome-profile/.
If a command says the session expired, run keep login again.
After login, the CLI opens Keep with your saved Chrome profile and collects notes from the same notes/v1/changes sync the web app uses. Search filters those notes locally by title and indexable text.
Read-only. It cannot create, edit, archive, delete, or share notes.
Inspired by CLI Printing Press agent UX:
- Piped stdout auto-uses JSON when
--formatistable(no--jsonneeded) --compactfor high-gravity fields only--select id,titleto project JSON/CSV fields--csvfor spreadsheet-friendly rows--quiet/-qto suppress status lines- Exit codes:
0ok,2usage,3not found,4auth,5api/runtime
- Sync collects what Keep streams while the page loads. Very large libraries may need a longer settle time in a future release.
- Archived notes are omitted unless you pass
--archived. - List items under a parent list are not expanded as separate rows; the parent list’s searchable text is included when Keep provides
indexableText.