Capture handwritten task lists from Supernote notes and send them to Todoist.
This is a standalone Supernote plugin repo. The plugin package identity is NoteTaskBot (Android package, .snplg name). Offline Supernote SDK docs and extracted TypeScript live under sdk-reference/ — reference only, not a runtime dependency.
This standalone repo was developed from scratch, using scaffolding and extracted SDK/plugin tools from apclark31.
- Write a list in a note (one task per line)
- Lasso the handwriting
- Tap -> Todoist in the lasso menu
- The plugin OCRs your writing and always creates a new parent task named:
<YYYY-MM-DD> | <file name> | <page> | <lasso location>- Example:
2026-08-11 | Meeting Notes | 3 | Top - Lasso location is an estimated vertical quarter of the page:
Top,Upper,Lower, orBottom
- Example:
- Each recognized line becomes its own subtask under that parent
- If the parent was deleted before subtasks finish syncing, the plugin creates a new parent and places the subtasks there
- A review screen shows the recognized text, project, parent task, and subtasks created
- Supernote with plugin support
- Wi-Fi for Todoist API
- A Todoist project where captured tasks should be created
- Todoist API token
NoteTaskBot uses its own config file (separate from SuperTask):
/MyStyle/NoteTaskBot/notetaskbot-config.json
On first run, the plugin creates a template with YOUR_TOKEN_HERE. Edit via USB:
{
"apiToken": "your_todoist_token_here",
"targetProjectId": "your_todoist_project_id"
}Set targetProjectId to the Todoist project where tasks should be generated. In Todoist, pick the project by its title, then use that project's project_id (from the project URL or the Todoist API). Example URL form: https://app.todoist.com/app/project/<project-name>-<project_id> — the trailing id segment is what goes in targetProjectId.
If SuperTask is already configured on the same device, newer builds can reuse that token automatically (fallback reads MyStyle/SuperTask/supertask-config.json). You still need to set targetProjectId for NoteTaskBot.
Get your token at Todoist Developer Settings.
NoteTaskBot uses react-native-fs for config storage. Use the native build on Windows:
npm install
powershell -ExecutionPolicy Bypass -File .\build-native.ps1The output .snplg should be ~7 MB (includes app.npk). A ~260 KB build is JS-only and cannot read your config file.
Copy build/outputs/NoteTaskBot.snplg to MyStyle/ on the device, then install via Settings > Apps > Plugins.
On first capture after this build, the device will prompt for file read, file write (MyStyle config), and internet. Choose Always allow if you want capture to work after closing the plugin. "Allow this time only" expires when the plugin UI closes.
Parent page numbers follow the host SDK (1-based). Official plugin docs for this firmware live in Plugin-Assets/ (see SDK-Release-Notes.md).
| Symptom | Likely cause | Fix |
|---|---|---|
| "No Todoist API token" | Config not edited or JS-only build | Set token in notetaskbot-config.json, or rebuild with build-native.ps1 |
| "Permission required: plugin.permission.…" | User denied host permission, or chose "this time only" then closed the plugin | Re-lasso, tap Retry, and choose Always allow |
| "Could not recognize handwriting" | OCR failed | Lasso again with clearer writing; check Log screen |
| "Todoist 401" | Invalid/expired token | Regenerate token in Todoist developer settings |
| Success on device but no tasks in Todoist | Wrong project or viewing subtasks | Open the Todoist project you set as targetProjectId and look for a new parent named <date> | <file> | <page> | <quarter> — subtasks are nested under it |
| Plugin crashes on open | Installed JS-only build without RNFS | Rebuild with build-native.ps1 and reinstall |
node dev-server.jsAdd debugServerUrl in a local config.local.js (gitignored) for log streaming during development. See config.local.example.js.
| Path | Purpose |
|---|---|
sdk-reference/CLAUDE.md |
Development practices, SDK patterns, Todoist notes |
sdk-reference/SDK-REFERENCE.md |
API reference notes |
sdk-reference/official-docs-extracted.md |
Ratta official docs dump |
sdk-reference/src/ |
Extracted sn-plugin-lib TypeScript source |
Plugin-Assets/ |
Official Ratta plugin docs dump + SDK release notes |