ticktick-cliManage TickTick tasks and projects from the command line with OAuth2 auth, batch operations, and rate limit handling.
Install via ClawdBot CLI:
clawdbot install Norickkevorkov/ticktick-cliManage TickTick tasks and projects from the command line.
http://localhost:8080Client ID and Client Secret# Set credentials and start OAuth flow
bun run scripts/ticktick.ts auth --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET
# Check authentication status
bun run scripts/ticktick.ts auth --status
# Logout (clear tokens, keep credentials)
bun run scripts/ticktick.ts auth --logout
# Use manual mode on headless servers
bun run scripts/ticktick.ts auth --client-id YOUR_CLIENT_ID --client-secret YOUR_CLIENT_SECRET --manual
This prints an authorization URL. Open it in a browser, approve access, then copy the full redirect URL (it looks like http://localhost:8080/?code=XXXXX&state=STATE) and paste it back into the CLI.
The CLI will open your browser to authorize access. After approving, tokens are stored in ~/.clawdbot/credentials/ticktick-cli/config.json.
# List all tasks
bun run scripts/ticktick.ts tasks
# List tasks from a specific project
bun run scripts/ticktick.ts tasks --list "Work"
# Filter by status
bun run scripts/ticktick.ts tasks --status pending
bun run scripts/ticktick.ts tasks --status completed
# JSON output
bun run scripts/ticktick.ts tasks --json
# Basic task creation
bun run scripts/ticktick.ts task "Buy groceries" --list "Personal"
# With description and priority
bun run scripts/ticktick.ts task "Review PR" --list "Work" --content "Check the new auth changes" --priority high
# With due date
bun run scripts/ticktick.ts task "Submit report" --list "Work" --due tomorrow
bun run scripts/ticktick.ts task "Plan vacation" --list "Personal" --due "in 7 days"
bun run scripts/ticktick.ts task "Meeting" --list "Work" --due "2024-12-25"
# With tags
bun run scripts/ticktick.ts task "Research" --list "Work" --tag research important
# Update by task name or ID
bun run scripts/ticktick.ts task "Buy groceries" --update --priority medium
bun run scripts/ticktick.ts task "abc123" --update --due tomorrow --content "Updated notes"
# Limit search to specific project
bun run scripts/ticktick.ts task "Review PR" --update --list "Work" --priority low
# Mark task as complete
bun run scripts/ticktick.ts complete "Buy groceries"
# Complete with project filter
bun run scripts/ticktick.ts complete "Review PR" --list "Work"
# Mark task as won't do
bun run scripts/ticktick.ts abandon "Old task"
# Abandon with project filter
bun run scripts/ticktick.ts abandon "Obsolete item" --list "Do"
# Abandon multiple tasks in a single API call
bun run scripts/ticktick.ts batch-abandon <taskId1> <taskId2> <taskId3>
# With JSON output
bun run scripts/ticktick.ts batch-abandon abc123def456... xyz789... --json
Note: batch-abandon requires task IDs (24-character hex strings), not task names. Use tasks --json to get task IDs first.
# List all projects
bun run scripts/ticktick.ts lists
# JSON output
bun run scripts/ticktick.ts lists --json
# Create new project
bun run scripts/ticktick.ts list "New Project"
# With color
bun run scripts/ticktick.ts list "Work Tasks" --color "#FF5733"
# Rename project
bun run scripts/ticktick.ts list "Old Name" --update --name "New Name"
# Change color
bun run scripts/ticktick.ts list "Work" --update --color "#00FF00"
none - No priority (default)low - Low prioritymedium - Medium priorityhigh - High prioritytoday - Due todaytomorrow - Due tomorrowin N days - Due in N days (e.g., "in 3 days")next monday - Next occurrence of weekdayYYYY-MM-DD or full ISO format--json - Output results in JSON format (useful for scripting)--help - Show help for any commandWhen using this skill as an AI agent:
--json flag for machine-readable outputlists --json to get valid project IDsExample agent workflow:
# 1. Get available projects
bun run scripts/ticktick.ts lists --json
# 2. Create a task in a specific project
bun run scripts/ticktick.ts task "Agent task" --list "PROJECT_ID" --priority high --json
# 3. Later, mark it complete
bun run scripts/ticktick.ts complete "Agent task" --list "PROJECT_ID" --json
Tokens are stored in ~/.clawdbot/credentials/ticktick-cli/config.json:
{
"clientId": "YOUR_CLIENT_ID",
"clientSecret": "YOUR_CLIENT_SECRET",
"accessToken": "...",
"refreshToken": "...",
"tokenExpiry": 1234567890000,
"redirectUri": "http://localhost:8080"
}
Note: Credentials are stored in plaintext. The CLI attempts to set file permissions to 700/600; treat this file as sensitive.
The CLI automatically refreshes tokens when they expire.
Run bun run scripts/ticktick.ts auth to authenticate.
Use bun run scripts/ticktick.ts lists to see available projects and their IDs.
--list to narrow the search to a specific projectThe CLI should auto-refresh tokens. If issues persist, run bun run scripts/ticktick.ts auth again.
This CLI uses the TickTick Open API v1.
The CLI makes multiple API calls per operation (listing projects to find task), so bulk operations can hit limits quickly.
The CLI supports TickTick's batch endpoint for bulk operations:
POST https://api.ticktick.com/open/v1/batch/task
{
"add": [...], // CreateTaskInput[]
"update": [...], // UpdateTaskInput[]
"delete": [...] // { taskId, projectId }[]
}
Use batch-abandon to abandon multiple tasks in one API call. The batch API method is also exposed for programmatic use.
AI Usage Analysis
Analysis is being generated⦠refresh in a few seconds.
Remote-control tmux sessions for interactive CLIs by sending keystrokes and scraping pane output.
Command-line tool to manage Google Workspace services including Gmail, Calendar, Drive, Sheets, Docs, Slides, Contacts, Tasks, People, Groups, and Keep.
Runs shell commands inside a dedicated tmux session named claw, captures, and returns the output, with safety checks for destructive commands.
A modern text-based browser. Renders web pages in the terminal using headless Firefox.
Write robust, portable shell scripts. Use when parsing arguments, handling errors properly, writing POSIX-compatible scripts, managing temp files, running commands in parallel, managing background processes, or adding --help to scripts.
NotebookLM CLI wrapper via `node {baseDir}/scripts/notebooklm.mjs`. Use for auth, notebooks, chat, sources, notes, sharing, research, and artifact generation/download.