Quizler
unlistedby Omkar Bhad
Generate interactive flashcards from your notes using models from OpenAI (ChatGPT), Google (Gemini), Ollama (local LLMs), and more. Or manually create your own to use with the quiz UI.
What is Quizler?
Quizler is an Obsidian plugin that generates exam-style quizzes from your notes using AI. Select notes, pick a model, and test yourself — all without leaving your vault.
Pick your notes. Choose a provider. Quiz yourself instantly.
Features
- 7 Question Types — True/False, Multiple Choice, Select All That Apply, Fill in the Blank, Matching, Short Answer, Long Answer
- Multi-Provider AI — OpenAI, Google Gemini, Anthropic Claude, Mistral, Perplexity, Cohere, and Ollama (local)
- Dashboard — Central hub to manage saved quizzes, view history, configure settings, and launch quizzes
- Quiz History — Track every attempt with scores, timestamps, and per-question results
- Spaced Repetition — Built-in SRS scheduler (SM-2 algorithm) with due card tracking
- Export — Export quiz results to Markdown or JSON files in your vault
- MCP Server — Control quizzes programmatically from AI agents
- Keyboard Navigation — Arrow keys, number keys for quick answer, E to end
- Multi-Language — Generate questions in 22 languages
- LaTeX Support — Questions from notes containing math notation
- Difficulty Levels — Easy, Medium, Hard, or Mixed
Tech Stack
| Layer | Technology |
|---|---|
| Runtime | Obsidian Plugin API |
| Language | TypeScript 5.6 |
| UI | React 18, Custom CSS with purple accent system |
| AI Providers | LangChain (OpenAI, Google, Anthropic, Mistral, Cohere, Perplexity, Ollama) |
| Build | esbuild |
| Spaced Repetition | SM-2 algorithm |
Architecture
src/
├── generators/ # AI provider integrations
│ ├── anthropic/ # Claude (with streaming)
│ ├── cohere/
│ ├── google/ # Gemini
│ ├── mistral/
│ ├── ollama/ # Local models
│ ├── openai/
│ ├── perplexity/
│ ├── generator.ts # Base class & prompt engineering
│ ├── generatorFactory.ts
│ └── providers.ts
├── services/
│ ├── quizHistory.ts # Quiz persistence & attempt tracking
│ ├── quizExporter.ts # Markdown/JSON export
│ ├── quizReviewer.ts # Open quizzes from saved notes
│ ├── quizSaver.ts # Save questions to vault
│ ├── srsScheduler.ts # SM-2 spaced repetition engine
│ └── mcpInstaller.ts # MCP server auto-install
├── settings/ # Plugin settings UI & config
│ ├── general/
│ ├── generation/
│ ├── model/ # Per-provider settings
│ └── saving/
├── ui/
│ ├── components/ # Shared UI (AnswerInput, ModalButton)
│ ├── dashboard/ # Dashboard view & settings panel
│ ├── quiz/ # Quiz modal & all 7 question types
│ └── selector/ # Note selector with file tree
├── utils/
│ ├── types.ts # Question type definitions
│ ├── typeGuards.ts # Runtime type narrowing
│ ├── helpers.ts
│ └── markdownCleaner.ts
└── main.ts # Plugin entry point
How It Works
- User opens the generator and selects notes from the file tree
- Notes are parsed, cleaned, and sent to the chosen AI provider
- The provider generates structured questions (MC, T/F, matching, etc.)
- Questions are rendered in a React-based quiz modal with real-time feedback
- Results are saved with full history tracking and SRS scheduling
Getting Started
Prerequisites
- Obsidian 0.15.0+
- An API key for at least one supported provider (or Ollama for fully offline use)
Install from Community Plugins
- Settings → Community plugins → Browse → search Quiz Generator → Install → Enable
- Open plugin settings and enter your API key
- Click the brain icon in the sidebar or run "Open generator" from the command palette
Manual Install
# Download latest release files
# Place main.js, manifest.json, and styles.css into:
<vault>/.obsidian/plugins/quiz-generator/
Development
# Clone the repo
git clone https://github.com/omkarbhad/quizler-obsidian.git
cd quizler-obsidian
# Install dependencies
npm install
# Dev build (watch mode)
npm run dev
# Production build
npm run build
The build outputs main.js and styles.css to the project root, which Obsidian loads directly.
Supported Providers
| Provider | Notes |
|---|---|
| OpenAI | GPT-4o, GPT-4o-mini, and more |
| Google Gemini | Free tier, largest context window |
| Anthropic | Claude models with streaming support |
| Mistral | Lightweight, fast models |
| Perplexity | Fine-tuned LLaMA models |
| Cohere | Free tier available |
| Ollama | Local LLMs, fully offline |
Usage
Generating a Quiz
- Open the generator (sidebar icon or command palette)
- Select notes from the file tree
- Name your quiz and choose question count
- Click Generate quiz — the quiz UI opens automatically
Keyboard Shortcuts
| Control | Action |
|---|---|
| Click / Number keys | Answer a question |
| Arrow keys or A / D | Navigate between questions |
| Eye icon | Toggle answer feedback |
| Dots | Jump to any question |
| E | End quiz (when all answered) |
Dashboard
Open via command palette ("Open dashboard") or the sidebar brain icon.
- Quizzes tab — Replay, archive, export, or delete saved quizzes
- History tab — View all past attempts with scores and dates
- Settings panel — Configure provider, API key, question types, and difficulty inline
Spaced Repetition
Run "Review due cards (SRS)" from the command palette to quiz yourself on cards that are due. Quizler uses the SM-2 algorithm to schedule reviews based on your performance.
Question Format Reference
Quizler can open manually created questions from Markdown files using Obsidian callout syntax:
True or False
> [!question] HTML is a programming language.
>> [!success]- Answer
>> False
Multiple Choice
> [!question] Which is the correct translation of "house" in Spanish?
> a) Casa
> b) Maison
> c) Haus
> d) Huis
>> [!success]- Answer
>> a) Casa
Select All That Apply
> [!question] Which are elements on the periodic table?
> a) Oxygen
> b) Water
> c) Hydrogen
> d) Salt
> e) Carbon
>> [!success]- Answer
>> a) Oxygen
>> c) Hydrogen
>> e) Carbon
Fill in the Blank
> [!question] The Battle of `____` was fought in `____`.
>> [!success]- Answer
>> Gettysburg, 1863
Matching
> [!question] Match the medical term to its definition.
>> [!example] Group A
>> a) Hypertension
>> b) Bradycardia
>> c) Tachycardia
>> d) Hypotension
>
>> [!example] Group B
>> n) Fast heart rate
>> o) High blood pressure
>> p) Low blood pressure
>> q) Slow heart rate
>
>> [!success]- Answer
>> a) -> o)
>> b) -> q)
>> c) -> n)
>> d) -> p)
Short / Long Answer
> [!question] Who was the first President of the United States?
>> [!success]- Answer
>> George Washington was the first President of the United States.
Roadmap
- Private vault sync across devices
- Quiz sharing between users
- AI-powered answer grading for open-ended questions
- Flashcard mode (one-at-a-time review)
- Plugin marketplace themes
Contributing
Contributions are welcome! Please open an issue first for feature requests or major changes.
License
MIT © Omkar Bhad
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.