Export Apple iCloud Notes to Markdown files safely
Project description
notesctl
Export Apple iCloud Notes to Markdown files safely.
Features
- Safe: Copies database before reading, uses read-only mode
- Complete: Exports text, formatting, and attachments
- Organized: Groups notes by folder with YAML frontmatter
Installation
# Using uv (recommended)
uv pip install .
# Or install in development mode
uv pip install -e ".[dev]"
Usage
# Export all notes
uv run notesctl export -o ~/notes-backup
# Export specific folder
uv run notesctl export --folder "Work" -o ~/work-notes
# Preview without writing (safe)
uv run notesctl export --dry-run
# List notes
uv run notesctl list-notes
# List folders
uv run notesctl list-folders
# Show statistics
uv run notesctl stats
Safety
This tool prioritizes safety:
- Copy-first: Database files are copied to temp directory before reading
- Read-only: SQLite connection uses URI mode=ro
- SELECT only: All queries are validated to be SELECT statements
- Dry-run mode: Preview exports without writing files
Development
# Install dev dependencies
uv pip install -e ".[dev]"
# Run tests
uv run pytest
# Run linter
uv run ruff check src tests
# Run type checker
uv run mypy src
# Format code
uv run ruff format src tests
Requirements
- macOS with Apple Notes
- Python 3.11+
- uv (recommended) or pip
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file notesctl-1.0.2.tar.gz.
File metadata
- Download URL: notesctl-1.0.2.tar.gz
- Upload date:
- Size: 64.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
661180ceccc153e674f3588af47e1bb117c4f44499e739602054d8c2e23c3326
|
|
| MD5 |
9e08e170e1bdbd3f2d014da0bf75602c
|
|
| BLAKE2b-256 |
740a193d2b4559a6613517ec71742b6e5a9f2e32319f4de08bba10f7621f949c
|
Provenance
The following attestation bundles were made for notesctl-1.0.2.tar.gz:
Publisher:
publish.yml on jwmoss/notesctl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
notesctl-1.0.2.tar.gz -
Subject digest:
661180ceccc153e674f3588af47e1bb117c4f44499e739602054d8c2e23c3326 - Sigstore transparency entry: 833497436
- Sigstore integration time:
-
Permalink:
jwmoss/notesctl@0938b198a414b609a266ba3fdd1fa0c0455ab513 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/jwmoss
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0938b198a414b609a266ba3fdd1fa0c0455ab513 -
Trigger Event:
release
-
Statement type:
File details
Details for the file notesctl-1.0.2-py3-none-any.whl.
File metadata
- Download URL: notesctl-1.0.2-py3-none-any.whl
- Upload date:
- Size: 24.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd7d69778fec484359c14cc8a2cc8145eef22f2198b9e3c1a1aac1991fc1a6fb
|
|
| MD5 |
c139e22687acc0651bf44b5305f410f1
|
|
| BLAKE2b-256 |
8fd3ee46fa9de92f060d097e4e0732f480f9abaadb6d510ff0957794eca77852
|
Provenance
The following attestation bundles were made for notesctl-1.0.2-py3-none-any.whl:
Publisher:
publish.yml on jwmoss/notesctl
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
notesctl-1.0.2-py3-none-any.whl -
Subject digest:
bd7d69778fec484359c14cc8a2cc8145eef22f2198b9e3c1a1aac1991fc1a6fb - Sigstore transparency entry: 833497439
- Sigstore integration time:
-
Permalink:
jwmoss/notesctl@0938b198a414b609a266ba3fdd1fa0c0455ab513 -
Branch / Tag:
refs/tags/v1.0.2 - Owner: https://github.com/jwmoss
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0938b198a414b609a266ba3fdd1fa0c0455ab513 -
Trigger Event:
release
-
Statement type: