Neurocloud386 downloadsBYOK semantic/AI vault search, Gemini/OpenAI-assisted Todoist task generation, using Notes-to-Todoist and Email-to-Todoist (optional) workflows.
Semantic Todoist Sync is for people who live in Obsidian, but still need their actual action items to land in Todoist.
It builds a local semantic index of your vault, uses your own AI API key to understand note context, turns notes or forwarded emails into Todoist-ready tasks, writes those tasks back into Obsidian for traceability, and keeps the two sides synced. It can also preview a practical workday schedule from your Todoist tasks. The plugin keeps local Todoist and scheduler memory files so it can answer questions about existing tasks, plan from prior scheduling choices, and avoid pestering external APIs more than it needs to.
AI-assisted project: Please review the code, security model, and workflow assumptions before using it with vault content, emails, or Todoist data you care about.
Semantic vault search and question-answering
Ask questions across your vault using ranked note context. The plugin can also pull in compact task references from its local Todoist table, so answers can point to tasks you already created instead of pretending they do not exist.
Notes-To-Todoist
Turn meeting notes, project notes, or selected text into main tasks and subtasks. The tasks are inserted back into the note with Semantic Todoist Sync markers, then synced to Todoist with local OIDs so later updates can be reconciled.
Email-To-Todoist
Forward task-heavy emails into a user-owned Cloudflare Worker queue. The plugin can pull them into Obsidian, use AI plus vault context to identify the real tasks, write a note log, and sync the tasks into Todoist.
Schedule Today's Tasks
Build a preview of today's work from overdue tasks and tasks due soon. The preview keeps existing Todoist times fixed, estimates missing durations, lets you adjust or swap tasks before applying, and writes only the approved due times and durations back to Todoist.
The 0.7 line makes task capture more grounded, lighter, and easier to keep in sync. In 0.7.19, 48 remains a broad local semantic-evidence ceiling per task. Provider input now uses one batch-wide shared optional evidence pool capped at 48 unique records after stable-ID deduplication—not 48 per task—while protected current-source, mandatory, and material facts remain included. Final Sources/Context lists contain only evidence actually used or cited, not a count of retrieved candidates. Same-note source threads can retain more than two independently relevant facts when they pass scope and materiality checks, and stale or mismatched routing sidecars rebuild locally from the current index. Useful non-action history can contribute when it passes the same checks.
Task descriptions now keep reliable task-scoped history and all materially useful local detail while sending less repeated context. Important decisions and handoffs stay grounded without crowding out the work at hand or merely repeating the task title.
Better context and task details
Task generation starts with the current note's request, then adds task-scoped semantic context without mixing neighboring work. The broad local semantic- evidence ceiling is 48 records per task; provider input uses one batch-wide shared optional pool capped at 48 unique records after stable-ID deduplication—not 48 per task. Protected current-source, mandatory, and material facts remain included while weaker optional matches are trimmed for the current request. Descriptions include all materially useful task-local detail beyond the title or requested action, carry selected facts and citations through the workflow, and final Sources/Context lists show only evidence actually used or cited—not retrieved-candidate counts. Blank descriptions stop the save, and a parseable response can be retried once only after the plugin confirms its own prepared evidence is complete. You can also let task prompt profiles follow the selected model automatically or choose one manually, with better grounding for named artifacts and useful execution detail.
Less repetition and simpler workflows
Shared context and facts are reused across task and description steps, and final dedup reuses stable IDs to serialize repeated evidence once while keeping task-specific semantic signals intact. Same-note source threads can retain more than two independently relevant facts when each passes its own checks; useful non-action history can contribute only after passing those checks. Matching review decisions and handoffs remain available when repeated context is merged. Local section titles use note and project context by default, so everyday captures need less setup. Automatic semantic-index compatibility rebuilds keep the last-good index available until a compatible replacement is ready. Settings, local time display, and mobile controls are clearer, with more responsive layouts, separate result limits, and bounded resource settings. Stale or mismatched semantic-routing sidecars rebuild locally from the current index.
Reliable models, references, and sync
OpenAI defaults to GPT 5.6 Terra at Medium reasoning with GPT 5.6 Luna at Medium as the same-provider fallback; provider, model, and reasoning choices remain configurable. Task-reference snapshots and semantic indexes upgrade or repair themselves automatically, reuse compatible data, and preserve Todoist IDs/OIDs, parent/subtask links, and project relationships through moves and swaps.
Smoother Obsidian experience
Mobile-safe indexing, persistence, and settings continue to work across desktop and mobile layouts, with more reliable styling on supported Obsidian versions.
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.
OpenAI API keys to open OpenAI Platform's key page.OpenAI 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.
Optional: configure Schedule Today's Tasks.
Settings > Semantic Todoist Sync > Schedule Today.Apply.Schedule today's tasks prompt is created in the prompts folder and can be edited there. Settings still control the scheduler rules; the prompt coordinates the duration-estimation request.Optional: configure task deduplication.
Settings > Semantic Todoist Sync > Setup.Optional: publish an MCP bridge manifest.
Settings > Semantic Todoist Sync > Setup.Publish MCP bridge manifest off unless a separate Obsidian MCP server is installed and configured to read the plugin data directory.task-reference-snapshot.json, and task-reference-index.json.bridge-manifest.json, because stock MCPVault blocks .obsidian paths by default.semantic_todoist.search_semantic_index, semantic_todoist.get_todoist_snapshot, and semantic_todoist.get_reference_table.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 and creates Todoist-ready tasks from the selected or active note.Run: dropdown sits below the chat box. Choose Schedule today's tasks or another prompt template, then press Run.Run executes only the selected dropdown action. It does not send a chat question or run the default task generator unless that is the selected prompt template.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.action: schedule-today marks a prompt as the scheduler action. Scheduler settings remain authoritative, while the prompt coordinates duration estimates, split suggestions, and practical sequencing guidance.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: Schedule today's tasksSemantic Todoist Sync: Undo last schedule today applySemantic 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.
Task Workflows lets you choose Local (recommended) or AI section titles. Local uses project/purpose/topic/focus frontmatter, then falls back to the note title, folder, or generated task title; it keeps the current syntax and avoids a separate section-title AI request.
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.
Mobile paths are covered by simulated iPadOS/iOS validation. Physical-device testing is still required before claiming real-device support. Background polling and sync run only while Obsidian is open and the plugin is loaded because of mobile limits. The scheduler preview uses compact controls on narrow screens, so you can adjust blocks without relying on desktop drag-and-drop.
Semantic Todoist Sync is released under the GNU General Public License v3.0. See LICENSE for details.