Export your Basecamp 3 data to Markdown files using the official Basecamp CLI.
- Python 3.8+
- Basecamp CLI
# macOS / Linux
curl -fsSL https://basecamp.com/install-cli | bash
# Or via Homebrew
brew install --cask basecamp/tap/basecamp-clibasecamp auth loginpip install -r requirements.txt# Export all projects
python extractor.py --all
# Export specific project
python extractor.py --project 12345678
# Export to custom directory
python extractor.py --all --output ~/MyExports
# Export only messages and todos (skip docs and campfire)
python extractor.py --all --tools messages,todos~/Downloads/Basecamp-Exports/
├── Project Name 1/
│ ├── Messages/
│ │ ├── Message Title 1.md
│ │ └── Message Title 2.md
│ ├── To-dos/
│ │ ├── To-do Title 1.md
│ │ └── To-do Title 2.md
│ ├── Docs/
│ │ └── Document Title.md
│ └── Campfire/
│ └── Chat.md
└── Project Name 2/
└── ...
- ✅ Uses official Basecamp API (no scraping)
- ✅ Exports Messages, To-dos, Docs, and Campfire
- ✅ Markdown output with YAML frontmatter
- ✅ Incremental sync (only new/updated items)
- ✅ Project-specific or full export modes
- ✅ Configurable output directory
- ✅ Dry-run mode for testing
Create a config.json in the project root or use environment variables:
{
"output_dir": "~/Downloads/Basecamp-Exports",
"tools": ["messages", "todos", "docs", "campfire"],
"include_completed_todos": true
}MIT