Neurocloud77 downloadsBYOK semantic/AI vault search, Gemini/OpenAI-assisted Todoist task generation, using Notes-to-Todoist and Email-to-Todoist (optional) workflows.
AI vibecoded project: Semantic Todoist Sync was built collaboratively with AI using OpenAI Codex. If you're concerned, please review the code, security model, and workflow assumptions before using it with your Obsidian vault content, emails, or Todoist data.
Build a local semantic index of your vault to search, answer questions, and identify tasks from notes using AI and vault context. Generate actionable tasks from notes or forwarded emails, insert those tasks into notes for traceability, and synchronize them with Todoist. The plugin supports 2-way task sync between Obsidian and Todoist, local OID-based reference tracking, task-aware chat, configurable prompts, and mostly local reconciliation to reduce repeated API calls.
Semantic vault search and question-answering
Build a local semantic index of your Obsidian vault so you can search and query across your notes (similar to the Copilot plugin). The plugin ranks relevant note context, uses recent matching notes when useful, and can include compact synced-task references from the local Todoist table so task-aware questions can find existing OID-backed tasks.
Notes-To-Todoist
Generate actionable tasks from your Obsidian notes, insert them back into the note with Semantic Todoist Sync markers, and synchronize them with Todoist. Existing note tasks can be preserved using local OIDs (Obsidian IDs) and a local Todoist snapshot/reference table to reduce API calls, speed up reconciliation, update changed Todoist fields back into notes, and recover Todoist task links when needed.
Email-To-Todoist
Forward emails containing tasks to a user-owned Cloudflare Domain and Worker process. The plugin can retrieve those emails, use AI plus ranked vault context to identify actionable main tasks and subtasks, log the created tasks into Obsidian (to keep a record), and synchronize them into Todoist.
#STSubSync lines stable across Todoist updates, and skips auto-sync/index queues for plugin-generated note writes.#STSubSync subtasks as authoritative and reapplies the configured indentation when updating note lines.state/pending.json queue-state key so empty checks avoid repeated KV list operations.Open Settings > Semantic Todoist Sync > Setup (all the details are in there - but summary below)
The setup tab is step-wise with links to open each provider pages in the browser, gives you the field to paste each key or token directly beside the step, and includes validation buttons so you can confirm each connection before moving on.
Add an AI provider key.
Gemini API keys to open Google AI Studio's key page.Google Gemini API key.Test AI.Add Todoist access.
Token instructions if Todoist does not open directly to the token page.Todoist web settings to open Todoist's browser settings.Todoist API token.Test Todoist.Choose your workflow.
Recover Todoist IDs to match note task names against existing Todoist tasks and rebuild the local table.Rebuild the semantic index.
The sidebar is the main working surface:
Ask queries the vault using the active note and semantic index.Tasks runs the configured default task-generation prompt directly.Prompts opens reusable markdown prompts from the prompt folder.New chat clears the visible conversation.Index rebuilds the semantic vault index.When task context is relevant, chat can also use the local Todoist reference table and semantic task chunks. Task links are shown as descriptive linked text rather than full raw URLs.
Prompt files live in the configured prompts folder, defaulting to Semantic Todoist Sync/Prompts. Prompt frontmatter controls behavior:
---
createTasks: true
insertResponse: true
syncTasks: true
taskGenerationTemplate: false
taskHeading: '## Semantic Todoist Sync - Summary'
---
createTasks: false runs a normal prompt response, such as a summary.createTasks: true with taskGenerationTemplate: true marks the prompt as a dedicated Todoist task-generation prompt.createTasks: true with taskGenerationTemplate: false runs the original prompt response first, then runs the configured task-generation prompt as a separate second step.insertResponse controls whether the response is inserted into the active note.syncTasks controls whether generated tasks sync to Todoist after insertion.taskHeading controls the heading inserted above the response or generated task list.Semantic Todoist Sync: Open sidebarSemantic Todoist Sync: Rebuild semantic vault indexSemantic Todoist Sync: Ask AI with active contextSemantic Todoist Sync: Prompt AI from command paletteSemantic Todoist Sync: Run promptsSemantic Todoist Sync: Search vault semanticallySemantic Todoist Sync: Process pending email tasksSemantic Todoist Sync: Create Todoist tasks from active noteSemantic Todoist Sync: Sync note tasks with TodoistSemantic Todoist Sync: Rebuild local Todoist reference table- This is based directly from the amazing "Another Simple Todoist Sync" and "Ultimate Todoist Sync" plugins which work well!
Main tasks use #STsync. Subtasks use #STSubSync (to not conflict with the default markers from those other 2 plugins)
- [ ] Review the draft agreement #STsync #Legal !!4 ///Notes_26_05_22_Agreement %%[p:: Legal Review]%% {{2026-06-01}} 📅 2026-05-28 %%[oid:: A1B2C]%%
- [ ] Confirm comments were addressed #STSubSync #Legal !!3 %%[oid:: D4E5F]%%
Local task marker: %%[oid:: A1B2C]%%
Todoist IDs are stored in the local index/reference table, but are viewable in the plugin's settings, not in note text.
Subtasks are kept indented under their parent tasks during insertion and sync. If Todoist updates or older note content collapse the indentation, sync normalization repairs subtasks to the configured indentation width.
It is recommended, when writing meeting notes, to flag action items with a consistent marker such as #todo so task extraction has a strong signal. Settings include separate plain-language instruction areas for main tasks, subtasks, section titles, dates, deadlines, tags, priorities, descriptions, links, and optional source/citation behavior.
Release history is maintained in CHANGELOG.md.
This repository includes the files Obsidian expects for community plugin review:
README.mdCHANGELOG.mdLICENSEmanifest.jsonversions.jsonEach GitHub release tag matches the version in manifest.json and includes main.js, manifest.json, and styles.css as release assets.
The plugin has been tested and is functional on iPadOS/iOS mobile Obsidian apps, However, background polling and sync run only while Obsidian is open and the plugin is loaded (limitations of iPadOS/iOS).
Semantic Todoist Sync is released under the GNU General Public License v3.0. See LICENSE for details.