Chongpo Chen1 downloadsGenerate AI flashcards and review them with FSRS spaced repetition scheduler.
Generate AI-powered flashcards from your Obsidian notes, then review them using the FSRS (Free Spaced Repetition Scheduler) algorithm — all locally within your vault.
| Method | Steps |
|---|---|
| Community Plugins | Settings → Community plugins → Browse → "RecallFlow AI" → Install & Enable |
| BRAT | Add repo URL in BRAT → Enable plugin |
| Manual | Download main.js, manifest.json, styles.css → copy to <vault>/.obsidian/plugins/recallflow-ai/ → Reload & Enable |
| Setting | Description |
|---|---|
| Base URL | OpenAI-compatible endpoint (default: https://api.openai.com/v1) |
| API Key | Credential — stored locally in vault data |
| Model | Model ID (e.g., gpt-4o, claude-3-5-sonnet, deepseek-chat) |
| Test Connection | Verify your API key, base URL, and model configuration |
| UI & Card Language | Interface language + default AI card language |
| Max New / Day | Cap on new cards per day across all sessions |
| Max Review / Day | Cap on due review cards per day across all sessions |
| Rerun Today's Cards | Cramming mode — re-quiz without FSRS impact |
| Edit Cards | Open Card Manager to browse/search/edit/delete |
| Activity Heatmap | 12-month daily review visualisation |
| Command | Description |
|---|---|
| Start review session | Open review modal for cards due today |
| Generate AI flashcards from selection | Create cards from highlighted text |
| Generate AI flashcards from entire note | Create cards from active Markdown note |
Right-click context menu also offers generation when text is selected.
| Type | Front | Answer |
|---|---|---|
| Q&A | Open-ended question | Free-text answer |
| Cloze | Sentence with {____} blanks |
Array of terms |
| Choice | Question + 4 options (A–D) | One correct option |
All three types are generated together. The AI decides the mix based on your note content.
Requirements: Node.js 18+, npm
npm install
npm run dev # Watch mode — writes main.js on change
npm run build # Production bundle
npm run lint # ESLint check
Copy main.js, manifest.json, styles.css into <vault>/.obsidian/plugins/recallflow-ai/ for local testing.
src/
├── main.ts Entry point, commands, ribbon, menus
├── types.ts Type definitions, defaults
├── services/
│ ├── fsrsService.ts FSRS-5 scheduler, due-card queue, limits
│ ├── i18n.ts Translations (en / zh / ja / ko)
│ └── llmService.ts LLM prompt, API call, parser
└── ui/
├── cardManageModal.ts Browser, search, edit, delete
├── cardPreviewModal.ts AI preview with editing & regenerate
├── reviewModal.ts Interactive review, ratings, cramming
└── settingsTab.ts Settings, test connection, heatmap
| Dependency | Role |
|---|---|
| Obsidian API | Plugin lifecycle, UI, vault I/O |
| TypeScript | Type-safe development |
| esbuild | Bundling to main.js |
ESLint + eslint-plugin-obsidianmd |
Code quality |
See CONTRIBUTING.md. Open an issue for large changes, submit PRs that pass npm run build && npm run lint.
See RELEASING.md for the release checklist and Community directory submission process.