Skip to content

goneflyin/anydo-export

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Any.do One-Time Export

This tool reads a Playwright storage-state export from your own authenticated browser session and converts current Any.do data into JSON files for migration to another system.

Unofficial Project

This project is unofficial and is not affiliated with, endorsed by, or supported by Any.do.

Usage Responsibility

Use this tool only for exporting your own data and only if your use complies with Any.do's terms and all applicable laws.

Why This Exists

This project exists to provide a small, practical, one-time export path for personal data portability when an official export flow is unavailable or insufficient.

Purpose

Use this tool to:

  • Back up your own tasks
  • Analyze your data
  • Migrate to another system
  • Create AI-friendly structured exports

How It Works

This project reads a Playwright storageState export (with IndexedDB included) from your own authenticated browser session and converts it to structured JSON.

It does not bypass login, call private APIs directly, modify your Any.do account, or automate task changes.

Disclaimer

This code is offered as a convenience and as an example for others. It is provided without guarantees, and it is not actively maintained.

Output Files

  • anydo_export.json — full export from Any.do web IndexedDB (anydo-sync-db)
  • anydo_completed_tasks.json — only tasks with status == "CHECKED"
  • anydo_export_summary.json — counts and quick overview
  • anydo_export_flat.json — normalized AI-friendly export (tasks, lists, labels, tags)

Security / Redaction

The exporter redacts sensitive auth-like fields in output (keys containing:

  • token
  • password
  • auth
  • idSalt

Redacted values are replaced with "[REDACTED]".

Redaction is best-effort only. Exported files may still contain sensitive personal or account-related data (for example: task content, notes, participant information, location metadata, and other fields outside current redaction rules). Review output files carefully before sharing them with other people, tools, or AI systems.

Tested With

  • Any.do web at https://app.any.do (observed March 2026)
  • Playwright storageState({ indexedDB: true })
  • Python 3.14.3

Requirements

  • Python 3.9+
  • A Playwright storage-state file with IndexedDB included

Prerequisite Input

The script expects a Playwright storage-state file at:

  • anydo_storage_state.json

That file must include IndexedDB for https://app.any.do.

How To Generate anydo_storage_state.json

In a Playwright-enabled session (Codex + Playwright MCP):

  1. Navigate to https://app.any.do/
  2. Log in normally (email/password/2FA)
  3. Run this in Playwright context:
await page.context().storageState({ path: 'anydo_storage_state.json', indexedDB: true });

This writes anydo_storage_state.json in the current project directory.

Run Export

From this directory:

python3 export_anydo.py

Or with a custom input/output path:

python3 export_anydo.py anydo-state.json --output-full anydo_export.json --output-completed anydo_completed_tasks.json --output-summary anydo_export_summary.json

Generate Flat AI-Friendly Export

After anydo_export.json exists, run:

python3 flatten_anydo_export.py

Or with custom input/output files:

python3 flatten_anydo_export.py anydo_export.json --output anydo_export_flat.json

This creates anydo_export_flat.json with list names resolved on each task and simplified task fields for downstream AI import.

Example Output (Summary)

Example output from python3 export_anydo.py:

{
  "database": "anydo-sync-db",
  "taskCounts": {
    "all": 115,
    "completed": 77,
    "active": 38
  }
}

JSON Shape (Flat Export)

Top-level keys in anydo_export_flat.json:

  • exportedAt
  • source
  • taskCounts
  • lists
  • tags
  • labels
  • tasks

Known Limitations

  • Schema-dependent: Any.do IndexedDB structure may change and break decoding.
  • Best-effort redaction: output is not guaranteed safe for public sharing.
  • Single-user utility: no multi-account orchestration or long-term maintenance guarantees.

Technical Notes

Data flow is:

  1. IndexedDB records in Playwright storage state
  2. Decode encoded key/value structures
  3. Emit full and flat JSON exports

Optional Cleanup

After successful export, remove the storage-state file to reduce exposure:

rm -f anydo_storage_state.json

Support

No active support is provided for this project.

About

Export your Any.do web data from Playwright storage state into JSON

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages