Command-line tool for managing Affine documents and workspaces. Works with both cloud and self-hosted Affine instances.
First, verify affine-cli is installed:
bash
which affine-cli || npm list -g affine-cli
If not installed, install globally:
bash
npm install -g affine-cli
Or run directly with npx:
bash
npx affine-cli <command>
bash
# 1. Login (get token from https://app.affine.pro/settings/tokens)
affine-cli auth login --token YOUR_TOKEN
# 2. Check status
affine-cli auth status
# 3. List workspaces
affine-cli workspace list
# 4. List documents
affine-cli doc list
Self-hosted:
bash
affine-cli auth login --url https://your-affine.example.com --token YOUR_TOKEN
ModuleCommandsauthlogin, logout, statusworkspacelistdoclist, all, info, create, delete, copy, update, search, replace, append, publish, unpublishtagslist, create, add, remove, delete, infofolderall, list, create, delete, update, clear, add, move, removecollectionlist, info, create, update, delete, add, removefileupload, delete, cleandatabaselist, columns, query, create, insert, update, delete, removecommentslist, create, update, delete, resolvejournallist, create, info, append, update
bash
# Create today's journal
affine-cli journal create
# Append to today's journal
affine-cli journal append --content "# Morning\n- Reviewed tasks\n- Team standup"
# Append to specific date
affine-cli journal append --date 2025-04-10 --content "# Notes\nMeeting with team"
# View journal
affine-cli journal info --date 2025-04-10
# List recent journals
affine-cli journal list --count 7
bash
# Find a document by title
affine-cli doc search -q "meeting notes"
# Create from file (README.md, etc.)
affine-cli doc create -t "Q2 Planning" -c "@planning.md"
# Create with tags
affine-cli doc create -t "Project Alpha" -c "# Project\nDetails" --tags "work,important" --icon "📁"
# View document content
affine-cli doc info -i DOC_ID --content markdown
# Add content to document
affine-cli doc append -i DOC_ID --content "\n\n## Update\nNew content here"
# Search with tag filter
affine-cli doc search -q "budget" --tag finance
bash
# Create tag
affine-cli tags create --name "review"
# Add tag to document
affine-cli tags add -d DOC_ID --tag review
# List all tags
affine-cli tags list
# Find documents with tag
affine-cli tags info --tag review
bash
# Create folder
affine-cli folder create --name "Projects"
# List root folders
affine-cli folder all
# List folder contents
affine-cli folder list --id FOLDER_ID
# Move document to folder
affine-cli folder move --id FOLDER_ID -d DOC_ID
bash
# List databases in a doc
affine-cli database list --doc DOC_ID
# Query data (filters)
affine-cli database query --doc DOC_ID --id DB_ID -q '[{"column":"Status","operator":"eq","value":"Done"}]'
# Insert new row
affine-cli database insert --doc DOC_ID --id DB_ID --content '[{"Task":"Review PR","Status":"Todo"}]'
# Update rows
affine-cli database update --doc DOC_ID --id DB_ID --values '{"Status":"Done"}' -q '[{"column":"Task","operator":"contains","value":"Review"}]'
Priority: env vars > local .env > global config
Files:
~/.affine-cli/affine-cli.env<project>/.envEnvironment variables:
AFFINE_API_TOKEN - Required, get from Settings → TokensAFFINE_BASE_URL - Server URL (default: https://app.affine.pro)AFFINE_WORKSPACE_ID - Default workspace