RecallFlow AI
approvedby Chongpo Chen
Generate AI flashcards and review them with FSRS spaced repetition scheduler. - This plugin has not been manually reviewed by Obsidian staff.
RecallFlow AI
Generate AI-powered flashcards from your Obsidian notes, then review them using the FSRS (Free Spaced Repetition Scheduler) algorithm β all locally within your vault.
β¨ Features
π§ AI Flashcard Generation
- From selection β highlight text and generate a single focused card via right-click or command palette
- From entire note β process the full Markdown document into 3β6 mixed-type flashcards
- Preview & refine β inspect, edit, and regenerate AI-generated cards before saving
- Three card types: Q&A, Cloze (fill-in-the-blank), Multiple Choice
π FSRS Spaced Repetition
- Cards follow FSRS across 4 lifecycle states: New β Learning (~10minβ1d) β Review (e.g., 3d β 10d β 1mo) β Relearning (β€1d)
- Interactive review: typed answers for Q&A, fill-the-blank for cloze, tap-to-select for choice
- Four ratings: Again (1), Hard (2), Good (3), Easy (4) to fine-tune memory curve
- Configure maximum new and review cards per day
π₯ Cramming Mode (Rerun)
- Re-quiz today's reviewed cards without affecting FSRS scheduling
- Full state persistence β navigate freely without losing answers
π Card Manager
- Search, edit, validate, and delete flashcards
- View metadata: card type, FSRS state, last review, due date, source, creation time
π Activity Heatmap
- 12-month GitHub-style contribution grid of daily review counts
π Multi-Language UI
- English, δΈζ, ζ₯ζ¬θͺ, νκ΅μ΄
- AI-generated card language configurable independently
π Privacy-First
- No telemetry, no background network requests
- All data stored locally in vault plugin data
- Review works entirely offline
π How It Works
- Configure your LLM endpoint (base URL, API key, model) in Settings β RecallFlow AI
- Generate cards from selection or entire note via commands, ribbon, or right-click
- Preview in the generation modal β edit, regenerate, then confirm to save
- Review due cards in the immersive modal β answer, rate, repeat
- Rerun to cram today's cards without resetting the FSRS algorithm
- Manage your card library with search, edit, and validation tools
π Installation
| 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 |
βοΈ Settings
| 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 |
π― Commands
| 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.
π¬ Card Types
| 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.
π§ Development
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.
Project Structure
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
Tech Stack
| 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 |
π Privacy & Data
- No telemetry β zero background network requests
- Generation data: note text + model name β your configured LLM endpoint only
- All data local β cards, history, stats, settings stored in vault plugin data by Obsidian
π License
π€ Contributing
See CONTRIBUTING.md. Open an issue for large changes, submit PRs that pass npm run build && npm run lint.
π Releasing
See RELEASING.md for the release checklist and Community directory submission process.
For plugin developers
Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.