Skip to main content

keep-to-memos

CI

Moves a Google Keep Takeout export into a Memos instance over HTTP. Stdlib only, Python 3.10+.

Usage

  1. Download a Takeout export from https://takeout.google.com.
  2. Create a personal access token in Memos under Settings -> Access Tokens.

Then run the importer:

uvx --from keep-to-memos keep-to-memos \
  --url https://your-memos-instance \
  --token memos_pat_... \
  /path/to/takeout-*.zip

The source argument takes the zip or an unpacked Takeout/Keep folder. Set MEMOS_URL and MEMOS_TOKEN instead of the flags to keep the token out of your shell history. --url defaults to http://localhost:5230.

Run from a terminal and the importer prompts for whatever is missing, with the token hidden. Non-interactive runs fail fast. To install permanently, use uv tool install keep-to-memos or pipx install keep-to-memos.

Flags:

  • --dry-run prints what would be imported. Needs no token or server.
  • --include-trashed also imports trashed notes. Off by default.
  • --no-throttle skips the 0.5s pause between writes. Only safe on Postgres or MySQL; SQLite returns SQLITE_BUSY under back-to-back writes.

What it imports

  • Images as embedded attachments
  • Original created and edited timestamps
  • Labels as #tags, title as a heading, pinned state, color as a #color/* tag
  • Archived notes stay archived
  • Checklists as markdown task lists

Re-running is safe. Each note maps to a deterministic memo ID, so the second run skips what exists; empty memos from a failed run are deleted and retried.

Notes

  • Zip input is extracted to a temp dir and deleted afterward.
  • Writes are spaced 0.5s apart with 5xx retries; memos' SQLite path returns SQLITE_BUSY under back-to-back writes.
  • Attachments are created unbound, then attached via SetMemoAttachments; binding at creation fails on some builds.
  • The gateway is protobuf-backed: bodies use camelCase (createTime), update_mask snake_case (update_time).

Development

See CONTRIBUTING.md. After editing testdata/Takeout, rebuild the fixture with python3 testdata/make_zip.py.

License

MIT, see LICENSE.

Metadata

Release files for keep-to-memos 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for keep-to-memos 1.0.0
File Size Uploaded
keep_to_memos-1.0.0.tar.gz 72.2 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for keep-to-memos 1.0.0
File Interpreter ABI Platform
keep_to_memos-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 87.9 kB

Release files / keep_to_memos-1.0.0.tar.gz

Download URL keep_to_memos-1.0.0.tar.gz
Size 72.2 kB
Tags Source
SHA-256 checksum
How to use checksums
bbf260de46671e58c16ff5e8159eb7fdf69f21b25fa66f8d34c5e52305795949
BLAKE2b-256 checksum
How to use checksums
11e846cfce3ac297400e122dcc9cd938ec6cec4f4d836dcd017b128a21f50a2e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release files / keep_to_memos-1.0.0-py3-none-any.whl

Download URL keep_to_memos-1.0.0-py3-none-any.whl
Size 15.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
0564d290ff57b6a75459bf45620dc565e7d43de3783a64e5c1019647ba343735
BLAKE2b-256 checksum
How to use checksums
0189fb8c7c9332abb45f9a5b08e1beec400d857e1b1bacda1ad94947a22da42a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 2, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page