obsidian-ticktick-sync
SKILL.md
Obsidian TickTick Sync
Use this skill to keep a two-system workflow stable:
- Long-term project context in Obsidian notes
- Short-term tasks with deadlines/recurrence in TickTick (or Dida365)
This skill uses TickTick/Dida365 official OpenAPI and writes ticktick_task_id back to source markdown task lines.
It also syncs completion state for existing pushed tasks by default (sync:: pushed + ticktick_task_id).
Load References When Needed
- Read
references/metadata-schema.mdbefore parsing/updating markdown inline fields. - Read
references/runbook.mdfor rollout strategy (pendingfirst, thenskip) and retry handling. - Read
references/openapi-notes.mdif project/list mapping or recurrence mapping needs tuning.
Quick Start
1) Preflight
python3 skills/obsidian-ticktick-sync/scripts/doctor.py \
--vault-root "/path/to/Obsidian/Vault" \
--check-api \
--provider dida365 \
--access-token "$DIDA365_ACCESS_TOKEN"
2) Dry run (no remote write, no markdown mutation)
python3 skills/obsidian-ticktick-sync/scripts/sync.py \
--vault-root "/path/to/Obsidian/Vault" \
--provider dida365 \
--dry-run \
--sync-values pending
3) Real sync (push + writeback)
python3 skills/obsidian-ticktick-sync/scripts/sync.py \
--vault-root "/path/to/Obsidian/Vault" \
--provider dida365 \
--access-token "$DIDA365_ACCESS_TOKEN" \
--sync-values pending
# disable existing-task updates if you only want create-wave behavior
# --no-sync-existing
Typical Workflow
- Keep actionable checklist lines in project notes with inline fields (
sync,ticktick,ddl,recur,action_id). - Run
sync.pywith--sync-values pendingfor first wave. - Existing pushed tasks (
sync:: pushed+ticktick_task_id) are updated in place (including completion status from checkbox). - Review generated report in
<vault>/scripts/ticktick_sync_report_*.md. - Run second wave with
--sync-values pending,skipwhen ready.
Script Map
scripts/sync.py: One-command orchestrator (extract -> push -> writeback -> report)scripts/extract.py: Select candidate tasks from markdownscripts/push.py: Push selected tasks to TickTick/Dida365scripts/writeback.py: Writesync:: pushedandticktick_task_id:: ...back to markdownscripts/report.py: Render markdown report from JSON artifactsscripts/doctor.py: Environment and API preflight checks
Execution Rules
- Prefer running
sync.pyfirst; call lower-level scripts only when debugging. - Default filter is
ticktick=yesandsync in {pending}. - Default also runs an update wave for existing tasks (
sync in {pushed}) to sync completion/open status. - Default requires schedule signal: at least one of
ddlorrecur. - Existing tasks with
ticktick_task_idare updated by default insync.py; use--skip-existingto disable that. - Keep writeback immediate after successful push to avoid duplicate exports.
Common Commands
Export only (no push)
python3 skills/obsidian-ticktick-sync/scripts/extract.py \
--vault-root "/path/to/Obsidian/Vault" \
--sync-values pending \
--output /tmp/ticktick_extract.json
Push only (from extracted JSON)
python3 skills/obsidian-ticktick-sync/scripts/push.py \
--provider dida365 \
--access-token "$DIDA365_ACCESS_TOKEN" \
--input /tmp/ticktick_extract.json \
--output /tmp/ticktick_push.json
Sync existing pushed tasks only (completion/status)
python3 skills/obsidian-ticktick-sync/scripts/sync.py \
--vault-root "/path/to/Obsidian/Vault" \
--provider dida365 \
--access-token "$DIDA365_ACCESS_TOKEN" \
--sync-values pushed \
--existing-sync-values pushed \
--sync-existing
Writeback only
python3 skills/obsidian-ticktick-sync/scripts/writeback.py \
--input /tmp/ticktick_push.json \
--output /tmp/ticktick_writeback.json
Notes
- Providers supported:
dida365,ticktick. - Token input supports either
--access-tokenor--token-file. - API errors are kept in JSON reports with per-task context.
Weekly Installs
1
Repository
fancive/claude-skillsFirst Seen
12 days ago
Security Audits
Installed on
codex1