task-sync

TotalClaw 作者 totalclaw

双向同步 TickTick (Dida) 和 Google Tasks,包括列表/项目映射、任务内容同步、完成同步和智能列表导出(今天、未来 7 天、全部)。当用户要求设置 OAuth、运行或安排同步、修复不匹配/已删除/已完成的任务或解决由于截止日期处理导致的 Google 日历重复行为时使用。

安装 / 下载方式

TotalClaw CLI推荐
totalclaw install totalclaw:totalclaw~jp1222-task-sync
cURL直接下载,无需登录
curl -fsSL https://skills.taituai.com/api/skills/totalclaw%3Atotalclaw~jp1222-task-sync/file -o jp1222-task-sync.md
## 概述(中文)

双向同步 TickTick (Dida) 和 Google Tasks,包括列表/项目映射、任务内容同步、完成同步和智能列表导出(今天、未来 7 天、全部)。当用户要求设置 OAuth、运行或安排同步、修复不匹配/已删除/已完成的任务或解决由于截止日期处理导致的 Google 日历重复行为时使用。

## 原文

# Task Sync

Operate and troubleshoot bidirectional task sync between TickTick and Google Tasks.

## Run

```bash
python {baseDir}/sync.py
```

## Setup Checklist

1. Python 3.10+ with: `google-auth google-auth-oauthlib google-api-python-client requests`
2. Enable Google Tasks API and run:
   ```bash
   python {baseDir}/scripts/setup_google_tasks.py
   ```
3. Create TickTick developer app and run:
   ```bash
   python {baseDir}/scripts/setup_ticktick.py
   ```
4. Configure `{baseDir}/config.json` token and data paths.

## Expected Behavior

- Sync Google Task Lists `<->` TickTick Projects by same name.
- Sync task title, completion status, and notes/content bidirectionally.
- Map TickTick priority to Google title prefix: `[★]` high, `[!]` medium.
- Export TickTick smart lists (Today, Next 7 Days, All) to Google Tasks one-way.

## Due-Date Rule (Calendar Duplicates)

- Keep due dates only in the "All" smart list.
- For other synced lists, forward date to TickTick then clear Google due date.
- Treat this as the source-of-truth rule when debugging duplicate Calendar items.

## Automation

```bash
# Cron: every 10 minutes
*/10 * * * * /path/to/python {baseDir}/sync.py >> /path/to/sync.log 2>&1
```

Use OpenClaw cron if available.

## Troubleshooting Workflow

1. Re-run both OAuth setup scripts if auth errors appear.
2. Verify `config.json` paths point to existing token files.
3. Run `python {baseDir}/sync.py` and inspect `sync_log.json` and `sync_db.json`.
4. Check API wrappers:
   - `{baseDir}/utils/google_api.py`
   - `{baseDir}/utils/ticktick_api.py`