Quizler

unlisted

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

Updated 1mo agoMIT
View on GitHub

Quizler

Turn your Obsidian notes into interactive quizzes with AI.

License: MIT TypeScript Obsidian React

Report Bug · Request Feature


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

LayerTechnology
RuntimeObsidian Plugin API
LanguageTypeScript 5.6
UIReact 18, Custom CSS with purple accent system
AI ProvidersLangChain (OpenAI, Google, Anthropic, Mistral, Cohere, Perplexity, Ollama)
Buildesbuild
Spaced RepetitionSM-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

  1. User opens the generator and selects notes from the file tree
  2. Notes are parsed, cleaned, and sent to the chosen AI provider
  3. The provider generates structured questions (MC, T/F, matching, etc.)
  4. Questions are rendered in a React-based quiz modal with real-time feedback
  5. 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

  1. SettingsCommunity pluginsBrowse → search Quiz GeneratorInstallEnable
  2. Open plugin settings and enter your API key
  3. 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

ProviderNotes
OpenAIGPT-4o, GPT-4o-mini, and more
Google GeminiFree tier, largest context window
AnthropicClaude models with streaming support
MistralLightweight, fast models
PerplexityFine-tuned LLaMA models
CohereFree tier available
OllamaLocal LLMs, fully offline

Usage

Generating a Quiz

  1. Open the generator (sidebar icon or command palette)
  2. Select notes from the file tree
  3. Name your quiz and choose question count
  4. Click Generate quiz — the quiz UI opens automatically

Keyboard Shortcuts

ControlAction
Click / Number keysAnswer a question
Arrow keys or A / DNavigate between questions
Eye iconToggle answer feedback
DotsJump to any question
EEnd 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.