RecallFlow AI

approved

by Chongpo Chen

Generate AI flashcards and review them with FSRS spaced repetition scheduler. - This plugin has not been manually reviewed by Obsidian staff.

Updated today0BSD

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.

ko-fi


✨ 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

  1. Configure your LLM endpoint (base URL, API key, model) in Settings β†’ RecallFlow AI
  2. Generate cards from selection or entire note via commands, ribbon, or right-click
  3. Preview in the generation modal β€” edit, regenerate, then confirm to save
  4. Review due cards in the immersive modal β€” answer, rate, repeat
  5. Rerun to cram today's cards without resetting the FSRS algorithm
  6. Manage your card library with search, edit, and validation tools

πŸš€ Installation

MethodSteps
Community PluginsSettings β†’ Community plugins β†’ Browse β†’ "RecallFlow AI" β†’ Install & Enable
BRATAdd repo URL in BRAT β†’ Enable plugin
ManualDownload main.js, manifest.json, styles.css β†’ copy to <vault>/.obsidian/plugins/recallflow-ai/ β†’ Reload & Enable

βš™οΈ Settings

SettingDescription
Base URLOpenAI-compatible endpoint (default: https://api.openai.com/v1)
API KeyCredential β€” stored locally in vault data
ModelModel ID (e.g., gpt-4o, claude-3-5-sonnet, deepseek-chat)
Test ConnectionVerify your API key, base URL, and model configuration
UI & Card LanguageInterface language + default AI card language
Max New / DayCap on new cards per day across all sessions
Max Review / DayCap on due review cards per day across all sessions
Rerun Today's CardsCramming mode β€” re-quiz without FSRS impact
Edit CardsOpen Card Manager to browse/search/edit/delete
Activity Heatmap12-month daily review visualisation

🎯 Commands

CommandDescription
Start review sessionOpen review modal for cards due today
Generate AI flashcards from selectionCreate cards from highlighted text
Generate AI flashcards from entire noteCreate cards from active Markdown note

Right-click context menu also offers generation when text is selected.


πŸ’¬ Card Types

TypeFrontAnswer
Q&AOpen-ended questionFree-text answer
ClozeSentence with {____} blanksArray of terms
ChoiceQuestion + 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

DependencyRole
Obsidian APIPlugin lifecycle, UI, vault I/O
TypeScriptType-safe development
esbuildBundling to main.js
ESLint + eslint-plugin-obsidianmdCode 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

0BSD

🀝 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.