تودویست
Todoist
مدیریت تسکها و پروژهها با Todoist - ساده، قدرتمند و چندپلتفرمی
نمای کلی
نود Todoist در n8n امکان اتوماسیون کامل مدیریت وظایف و پروژهها را فراهم میکند.
Todoist چیست؟
Todoist یکی از محبوبترین اپلیکیشنهای مدیریت وظایف در جهان است که با بیش از ۳۰ میلیون کاربر، ابزاری قدرتمند برای سازماندهی کارهای شخصی و تیمی ارائه میدهد.
مفاهیم کلیدی:
- Tasks (تسکها): واحد اصلی کار. هر تسک شامل عنوان، توضیحات، تاریخ سررسید، اولویت و لیبل است
- Projects (پروژهها): دستهبندی تسکها در پروژههای مختلف (مثل "کار"، "شخصی"، "خرید")
- Sections (سکشنها): تقسیمبندی درون پروژه (مثل "در حال انجام"، "تکمیل شده") - شبیه Kanban
- Labels (لیبلها): برچسبهای سراسری برای دستهبندی بینپروژهای (مثل "فوری"، "جلسه")
- Filters (فیلترها): کوئریهای هوشمند برای نمایش تسکها بر اساس شرایط خاص
- Priorities (اولویتها): ۴ سطح اولویت: Priority 1 (فوری/قرمز)، Priority 2 (بالا/نارنجی)، Priority 3 (متوسط/آبی)، Priority 4 (عادی/بدون رنگ)
تاریخهای طبیعی (Natural Language):
Todoist قادر به تشخیص تاریخ از متن طبیعی است: "tomorrow at 3pm"، "every Monday"، "next Friday"، "in 3 days". این قابلیت در API با فیلد due_string قابل استفاده است.
سیستم Karma:
Todoist یک سیستم امتیازدهی (Karma) دارد که بر اساس تکمیل تسکها و فعالیت، به کاربران سطح میدهد.
همکاری تیمی:
اشتراکگذاری پروژه، واگذاری تسک (Assign)، کامنتگذاری روی تسکها، و Activity Log.
محدودیتهای API:
- Rate Limit: حداکثر ۴۵۰ درخواست در ۱۵ دقیقه
- پلن رایگان: ۵ پروژه فعال، ۵ نفر همکار در هر پروژه
- پلن Pro: پروژه و همکار نامحدود، یادآوری، فیلترهای پیشرفته
احراز هویت
احراز هویت Todoist
روش ۱: API Token (سادهترین روش)
#### دریافت توکن:
- 1وارد حساب Todoist شوید
- 2به Settings (تنظیمات) بروید
- 3بخش Integrations را باز کنید
- 4روی Developer کلیک کنید
- 5API Token خود را کپی کنید
#### تنظیم در n8n:
- 1در n8n به Credentials بروید
- 2Todoist API را انتخاب کنید
- 3توکن را در فیلد API Token وارد کنید
- 4Test Connection بزنید
توکن نمونه: 0123456789abcdef0123456789abcdef01234567روش ۲: OAuth2 (برای اپلیکیشنها)
برای ساخت اپلیکیشنهایی که از طرف کاربران دیگر عمل میکنند:
- 1به [Todoist App Management](https://developer.todoist.com/appconsole.html) بروید
- 2یک App جدید بسازید
- 3Client ID و Client Secret دریافت کنید
- 4Redirect URL را از n8n کپی کنید
- 5Scopes مورد نیاز:
data:read- خواندن دادههاdata:read_write- خواندن و نوشتنdata:delete- حذف دادههاproject:delete- حذف پروژه
نکات امنیتی:
- API Token دسترسی کامل به حساب شما دارد - آن را محرمانه نگه دارید
- برای اشتراکگذاری Workflow با دیگران از OAuth2 استفاده کنید
- توکن را در Environment Variable ذخیره کنید
عملیاتهای موجود
createTask
ایجاد یک تسک جدید در Todoist با تمام جزئیات شامل عنوان، توضیحات، تاریخ سررسید، اولویت و لیبل
getTask
دریافت اطلاعات کامل یک تسک بر اساس شناسه
updateTask
ویرایش جزئیات یک تسک موجود (عنوان، توضیحات، اولویت، تاریخ و ...)
closeTask
علامتگذاری تسک به عنوان انجامشده (Complete). برای تسکهای تکراری، تاریخ بعدی تنظیم میشود
reopenTask
بازگرداندن تسک تکمیلشده به حالت فعال
deleteTask
حذف دائمی یک تسک از Todoist (غیرقابل بازگشت)
listTasks
دریافت لیست تسکهای فعال با امکان فیلتر بر اساس پروژه، لیبل، فیلتر و تاریخ
createProject
ایجاد یک پروژه جدید در Todoist
getProject
دریافت اطلاعات کامل یک پروژه بر اساس شناسه
updateProject
ویرایش نام، رنگ و تنظیمات یک پروژه موجود
deleteProject
حذف یک پروژه و تمام تسکهای آن (غیرقابل بازگشت)
listProjects
دریافت لیست تمام پروژههای کاربر
createLabel
ایجاد یک لیبل (برچسب) جدید برای دستهبندی تسکها
listLabels
دریافت لیست تمام لیبلهای تعریفشده کاربر
کاربردهای متداول
۱. تبدیل خودکار ایمیل به تسک
هر ایمیل مهم به طور خودکار به تسک تبدیل شود:
Gmail Trigger (ایمیل جدید با لیبل "Action Required")
→ Todoist (createTask)
Content: "پیگیری ایمیل: {{$json.subject}}"
Description: "از: {{$json.from}}\n{{$json.snippet}}"
Project: پروژه "ایمیلها"
Priority: 3
Due_string: "tomorrow"
Labels: ["ایمیل", "پیگیری"]۲. ایجاد تسکهای Daily Standup
هر روز صبح تسکهای استندآپ تیم ایجاد شود:
Schedule (هر روز ساعت 8:30)
→ Todoist (createTask)
Content: "استندآپ روزانه - {{$now.toFormat('yyyy/MM/dd')}}"
Description: "- کارهای دیروز\n- کارهای امروز\n- موانع"
Project: پروژه "تیم"
Priority: 4
Due_string: "today at 9am"
Labels: ["جلسه", "تیم"]۳. یادآوری ددلاین پروژه
هشدار برای تسکهایی که ددلاینشان نزدیک است:
Schedule (هر روز ساعت 9)
→ Todoist (listTasks)
Filter: "due before: +2 days & !completed"
→ IF (تسکها وجود دارد)
→ Loop
→ Telegram (sendMessage)
Text: "هشدار ددلاین: {{$json.content}}\nسررسید: {{$json.due.string}}"۴. پیگیری درخواستهای مشتری
هر درخواست جدید از فرم وبسایت به تسک تبدیل شود:
Webhook (فرم تماس)
→ Todoist (createTask)
Content: "درخواست مشتری: {{$json.name}}"
Description: "نام: {{$json.name}}\nایمیل: {{$json.email}}\nموضوع: {{$json.subject}}\nپیام: {{$json.message}}"
Project: پروژه "مشتریان"
Section: "جدید"
Priority: 3
Labels: ["مشتری", "{{$json.category}}"]۵. تبدیل Bug Report به تسک
گزارش باگ از GitHub Issues به Todoist:
GitHub Trigger (Issue جدید با لیبل "bug")
→ Todoist (createTask)
Content: "باگ #{{$json.number}}: {{$json.title}}"
Description: "{{$json.body}}\n\nلینک: {{$json.html_url}}"
Project: پروژه "توسعه"
Section: "باگها"
Priority: {{$json.labels.includes('critical') ? 4 : 2}}
Labels: ["باگ", "github"]۶. Action Items جلسات
بعد از هر جلسه، action items به صورت تسک ثبت شوند:
Webhook (از Notion/Google Docs)
→ Code (استخراج action items)
→ Loop
→ Todoist (createTask)
Content: "{{$json.action}}"
Description: "جلسه: {{$json.meetingTitle}}\nمسئول: {{$json.assignee}}"
Due_string: "{{$json.deadline}}"
Labels: ["جلسه", "action-item"]۷. خط تولید محتوا (Content Pipeline)
مدیریت فرآیند تولید محتوا با سکشنها:
Webhook (ایده جدید محتوا)
→ Todoist (createTask)
Content: "محتوا: {{$json.title}}"
Project: پروژه "تولید محتوا"
Section: "ایدهها"
Description: "کلیدواژه: {{$json.keywords}}\nپلتفرم: {{$json.platform}}"
Labels: ["محتوا", "{{$json.type}}"]
// وقتی تسک تکمیل شد → انتقال به سکشن بعدی
Todoist Trigger (تسک تکمیل در سکشن "نوشتن")
→ Todoist (createTask)
Content: همان تسک در سکشن "ویرایش"۸. عادتسازی و Habit Tracking
ایجاد تسکهای تکراری برای عادتهای روزانه:
// تنظیم یکباره
HTTP Request (POST) → Todoist API
→ createTask: "ورزش صبحگاهی" / due_string: "every day at 7am"
→ createTask: "مطالعه" / due_string: "every day at 9pm"
→ createTask: "گزارش هفتگی" / due_string: "every friday at 5pm"
// گزارش عملکرد
Schedule (هر هفته)
→ Todoist API (completed tasks)
→ Code (محاسبه درصد تکمیل)
→ Telegram (ارسال گزارش)۹. پیگیری فاکتورهای پرداختنشده
برای هر فاکتور صادرشده یک تسک یادآوری:
Webhook (فاکتور صادر شد)
→ Todoist (createTask)
Content: "پیگیری فاکتور #{{$json.invoiceNumber}} - {{$json.clientName}}"
Description: "مبلغ: {{$json.amount}} تومان\nتاریخ صدور: {{$json.date}}"
Due_string: "in 7 days"
Priority: 3
Labels: ["فاکتور", "مالی"]
// وقتی پرداخت شد → تکمیل تسک
Webhook (پرداخت موفق)
→ Todoist (listTasks)
Filter: "search: فاکتور #{{$json.invoiceNumber}}"
→ Todoist (closeTask)۱۰. داشبورد حجم کار تیم
بررسی توزیع تسکها بین اعضای تیم:
Schedule (هر روز ساعت 17)
→ Todoist (listProjects)
→ Loop (پروژهها)
→ Todoist (listTasks)
→ Code (گروهبندی بر اساس assignee)
→ Code (محاسبه آمار هر نفر)
→ Telegram (sendMessage)
Text: "گزارش حجم کار تیم:\n{{$json.report}}"نکات حرفهای
نکات حرفهای
۱. تاریخهای طبیعی (Natural Language Dates)
Todoist از عبارات طبیعی برای تاریخ پشتیبانی میکند. از فیلد due_string استفاده کنید:
"tomorrow at 3pm" → فردا ساعت ۳ بعدازظهر
"every monday" → هر دوشنبه (تکراری)
"every weekday" → هر روز کاری
"next friday at 10am" → جمعه آینده ساعت ۱۰
"in 3 days" → ۳ روز بعد
"Jan 15 2025" → تاریخ مشخص
"every 2 weeks" → هر ۲ هفته
"every last friday" → آخرین جمعه هر ماه۲. سیستم اولویت (توجه به ترتیب معکوس API)
در API مقادیر اولویت برعکس UI است:
API Priority 4 = UI Priority 1 (فوری - قرمز)
API Priority 3 = UI Priority 2 (بالا - نارنجی)
API Priority 2 = UI Priority 3 (متوسط - آبی)
API Priority 1 = UI Priority 4 (عادی - بدون رنگ)۳. سکشنها برای گردشکار Kanban
از سکشنها برای ایجاد جریان کار شبیه Kanban استفاده کنید:
پروژه: "توسعه محصول"
├── سکشن: Backlog
├── سکشن: In Progress
├── سکشن: Review
└── سکشن: Done۴. لیبلها برای دستهبندی بینپروژهای
لیبلها سراسری هستند و بین همه پروژهها مشترکند - ایدهآل برای:
- نوع کار:
@meeting,@email,@call - انرژی مورد نیاز:
@quick,@deep-work - ابزار:
@laptop,@phone
۵. فیلترهای هوشمند (Smart Filters)
در listTasks از فیلترهای Todoist استفاده کنید:
"today" → تسکهای امروز
"overdue" → تسکهای عقبافتاده
"priority 1" → فقط تسکهای فوری
"no date" → تسکهای بدون تاریخ
"assigned to: me" → تسکهای من
"7 days" → تسکهای ۷ روز آینده
"#ProjectName & priority 1" → فوریهای یک پروژه خاص۶. توضیحات با Markdown
فیلد description از Markdown پشتیبانی میکند:
**متن Bold**
[لینک](https://example.com)
- لیست آیتم ۱
- لیست آیتم ۲۷. زیرتسک (Sub-tasks) با parent_id
برای شکستن تسکهای بزرگ به مراحل کوچکتر:
createTask: "طراحی وبسایت" → دریافت task_id
createTask: "طراحی وایرفریم" / parent_id: task_id
createTask: "طراحی UI" / parent_id: task_id
createTask: "کدنویسی" / parent_id: task_id۸. تسکهای تکراری (Recurring Tasks)
با due_string تسکهای تکراری بسازید:
"every day at 9am" → هر روز
"every monday,wednesday" → دوشنبه و چهارشنبه
"every 1st" → اول هر ماه
"every! day" → هر روز (تسک عقبافتاده ایجاد نمیشود)۹. واگذاری تسک (Assignee) در پروژههای مشترک
در پروژههای اشتراکی میتوانید تسکها را به اعضا واگذار کنید:
- ابتدا collaborator ID را از API دریافت کنید
- در
createTaskازassignee_idاستفاده کنید - کاربر مسئول اعلان دریافت میکند
۱۰. کامنتگذاری روی تسکها
از Comments API برای افزودن یادداشت و بروزرسانی وضعیت استفاده کنید:
HTTP Request (POST) → https://api.todoist.com/rest/v2/comments
Body: { "task_id": "123", "content": "وضعیت بروزرسانی شد" }۱۱. Activity Log برای گزارشگیری
از Sync API برای دریافت تاریخچه فعالیتها استفاده کنید:
HTTP Request → https://api.todoist.com/sync/v9/activity/get
→ تسکهای تکمیلشده، ایجادشده، حذفشده۱۲. دریافت تسکهای تکمیلشده
REST API فقط تسکهای فعال را برمیگرداند. برای تکمیلشدهها:
HTTP Request → https://api.todoist.com/sync/v9/completed/get_all
Query: project_id=XXXXX&limit=50۱۳. Template Projects (پروژههای الگو)
یک پروژه الگو بسازید و برای هر پروژه جدید، تسکها را کپی کنید:
Todoist (listTasks) → Filter: project_id = TEMPLATE_PROJECT
→ Loop → Todoist (createTask) → project_id = NEW_PROJECT۱۴. Quick Add Syntax
در فیلد content میتوانید از سینتکس سریع استفاده کنید:
"خرید شیر #خرید @فوری p1 tomorrow"
→ پروژه: خرید
→ لیبل: فوری
→ اولویت: 1
→ سررسید: فردا(توجه: این فقط در Quick Add UI کار میکند، در API فیلدها جداگانه ارسال شوند)
۱۵. عملیات دستهای (Bulk Operations)
برای ایجاد چندین تسک از Loop استفاده کنید و Rate Limit رعایت کنید:
Spreadsheet (لیست تسکها)
→ Split In Batches (10)
→ Loop
→ Todoist (createTask)
→ Wait (2 seconds)
→ Next Batchرفع مشکلات
خطاهای رایج و راهحلها
۱. خطای 401 Unauthorized - توکن نامعتبر
علت: API Token اشتباه، منقضی شده یا کپی ناقص
راهحل
- به Settings > Integrations > Developer بروید و توکن جدید بگیرید
- مطمئن شوید توکن کامل (۴۰ کاراکتر) کپی شده
- فاصله یا کاراکتر اضافی در ابتدا/انتها نباشد
- Credential در n8n را بروزرسانی و Test کنید
۲. خطای 403 Forbidden - قابلیت Premium
علت: دسترسی به قابلیتی که فقط در پلن Pro/Business موجود است
راهحل
- Reminders فقط در پلن Pro موجود است
- فیلترهای پیشرفته ممکن است نیاز به پلن Pro داشته باشند
- پلن خود را ارتقا دهید یا از قابلیتهای پلن رایگان استفاده کنید
۳. خطای 404 Not Found - تسک یا پروژه یافت نشد
علت: شناسه (ID) اشتباه یا آیتم حذف/آرشیو شده
راهحل
- شناسه تسک/پروژه را مجدداً بررسی کنید
- تسک ممکن است قبلاً حذف یا تکمیل شده باشد
- از
listTasksیاlistProjectsبرای دریافت شناسههای صحیح استفاده کنید - شناسهها در Todoist عددی هستند (مثل: 2995104339)
۴. خطای 429 Too Many Requests - محدودیت Rate Limit
علت: ارسال بیش از ۴۵۰ درخواست در ۱۵ دقیقه
راهحل
- بین درخواستها Wait Node اضافه کنید (حداقل 2 ثانیه)
- عملیات Bulk را Batch کنید
- از
Retry on Failاستفاده وRetry-Afterheader را رعایت کنید
Loop → Todoist (createTask) → Wait (2 seconds) → Next۵. خطای Invalid due_string - تاریخ نامعتبر
علت: فرمت تاریخ قابل تشخیص نیست
راهحل
- از عبارات استاندارد انگلیسی استفاده کنید: "tomorrow", "next monday", "Jan 15"
- برای تاریخ دقیق از
due_date(YYYY-MM-DD) استفاده کنید - تاریخهای فارسی مستقیماً پشتیبانی نمیشوند - از
due_dateبجایdue_stringاستفاده کنید
۶. خطای project_id Not Found
علت: شناسه پروژه اشتباه یا پروژه حذف شده
راهحل
- ابتدا
listProjectsاجرا کنید و شناسه صحیح را پیدا کنید - شناسه پروژه Inbox: با
listProjectsقابل دریافت است (پروژه باis_inbox_project: true) - مطمئن شوید پروژه آرشیو نشده باشد
۷. تداخل Sync (Sync Conflicts)
علت: تغییرات همزمان از چند منبع (اپ موبایل + API)
راهحل
- همیشه آخرین وضعیت را با
getTaskبخوانید سپس تغییر دهید - از Sync API بجای REST API برای عملیات پیچیده استفاده کنید
- در Workflow خود بررسی وجود تسک قبل از ویرایش اضافه کنید
۸. خطای Label Not Found
علت: نام لیبل اشتباه یا لیبل وجود ندارد
راهحل
- در REST API v2، لیبلها با نام (string) ارسال میشوند نه ID
- نام لیبل Case-Sensitive است
- ابتدا
listLabelsاجرا کنید و نام صحیح را بررسی کنید - برای ایجاد خودکار: لیبلها در
createTaskاگر وجود نداشته باشند، خودکار ساخته میشوند
