ObsiCard

pending

by Arda Erkan

AI-powered flashcard generator with optional Anki Desktop synchronization.

ā˜… 1 starsUpdated 4mo agoMITDiscovered via Obsidian Unofficial Plugins
View on GitHub

🧠 ObsiCard – AI-Powered Flashcard Generator

ObsiCard intelligently turns your Obsidian notes into structured flashcards powered by Groq AI. Each approved flashcard is stored inside the same note and synced instantly with your Anki Desktop deck.

License: MIT GitHub release

✨ Features

  • 🧠 AI Flashcard Generation - Powered by Groq API for intelligent flashcard creation
  • šŸ“ Review & Approval Modal - Review and edit flashcards before saving
  • šŸ·ļø Smart Tag Recommendations - Dynamic or fixed tag modes
  • šŸ’¾ Auto-Save to Notes - Flashcards stored under ## Flashcards section
  • šŸ”„ Real-Time Anki Sync - Seamless integration with Anki Desktop via AnkiConnect
  • šŸ“” Offline Queue - Automatic retry system for failed syncs
  • āœ… Full Validation - Schema validation and repair pipeline
  • ⚔ Smart Chunking - Handles large notes with intelligent summarization
  • šŸŽÆ Context Menu Integration - Right-click to generate flashcards

šŸš€ Quick Start

  1. Install the Plugin

    • Download the latest release from GitHub Releases
    • Extract to your Obsidian vault's .obsidian/plugins/obsicard folder
    • Enable in Obsidian Settings → Community Plugins
  2. Configure API Keys

  3. Set Up Anki (Optional)

  4. Generate Flashcards

    • Highlight text or open a note
    • Right-click → "Generate Flashcards with ObsiCard"
    • Choose mode and tags
    • Review and approve flashcards
    • Done! Flashcards are saved and synced

āš™ļø Requirements

  • Obsidian Desktop v1.5.0 or higher
  • Groq API Key (free at console.groq.com)
  • Anki Desktop + AnkiConnect (optional, for syncing)

šŸŽ® Usage

Generate from Selection

  1. Select text in your note
  2. Right-click → "Generate Flashcards with ObsiCard"
  3. Choose Dynamic (AI tags) or Fixed (your tags) mode
  4. Review generated flashcards
  5. Edit, select, and approve

Generate from Entire Note

  1. Open any note
  2. Click the brain icon in the ribbon, or
  3. Use Command Palette → "Generate Flashcards from Current Note"

Review Flashcards

  • Each flashcard shows Front, Back, and Tags
  • Click checkboxes to select/deselect
  • Click "Edit" to modify any flashcard
  • Click "Approve & Save" to save selected cards

Anki Sync

  • If Anki is running: flashcards sync immediately
  • If Anki is offline: flashcards are queued
  • Use "Process Anki Sync Queue" command to retry

šŸ“‹ Commands

CommandDescription
Generate Flashcards from SelectionCreate flashcards from selected text
Generate Flashcards from Current NoteCreate flashcards from entire note
Process Anki Sync QueueRetry queued flashcards
View Sync Queue StatusCheck how many flashcards are queued
Test API ConnectionsVerify Groq and Anki connectivity

āš™ļø Settings

Groq API Configuration

  • API Key - Your Groq API key
  • Model - Choose from Mixtral, Llama 3, or Gemma 2
  • Test Connection - Verify API access

Anki Integration

  • AnkiConnect URL - Default: http://127.0.0.1:8765
  • Deck Name - Target Anki deck (default: "ObsiCard")
  • Auto-sync - Enable/disable automatic Anki syncing

Advanced Settings

  • Max Chunk Size - Token limit per chunk (default: 3500)
  • Max Parallel Requests - Concurrent API calls (1-5)
  • Enable Offline Queue - Queue flashcards when Anki is offline
  • Max Retries - Retry attempts for failed syncs
  • Default Tags - Tags applied to all flashcards

🧩 How It Works

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  Select Text    │
│  or Full Note   │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
         │
         ā–¼
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│ Pre-Generation  │
│ Modal (Mode +   │
│ Tags Selection) │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
         │
         ā–¼
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  Groq API Call  │
│  • Chunking     │
│  • Generation   │
│  • Validation   │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
         │
         ā–¼
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  Review Modal   │
│  (Edit/Select)  │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
         │
         ā–¼
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│ Save to Note    │
│ (## Flashcards) │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¬ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜
         │
         ā–¼
ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│  Sync to Anki   │
│  (or Queue)     │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

šŸ”’ Privacy

  • No Data Collection - ObsiCard never stores or shares your notes
  • Direct API Calls - Your content is sent directly to Groq (secured by your API key)
  • Local Storage - All settings and queued flashcards stored locally

🧩 Open Source

Released under the MIT License. You can use, modify, and distribute freely with attribution.

šŸ› ļø Development

# Clone repository
git clone https://github.com/aerkn1/ObsiCard.git
cd obsicard

# Install dependencies
npm install

# Run in development mode
npm run dev

# Run tests
npm test

# Build for production
npm run build

# Lint code
npm run lint

šŸ¤ Contributing

Contributions are welcome! Please see CONTRIBUTING.md for guidelines.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

šŸ“ Changelog

See CHANGELOG.md for version history.

šŸ†˜ Support

šŸ“š Resources

šŸ™ Acknowledgments

  • Powered by Groq for fast AI inference
  • Inspired by the Obsidian and Anki communities
  • Built with Vite and TypeScript

šŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


Made with ā¤ļø by Arda Erkan

If you find ObsiCard useful, consider ⭐ starring the repository!

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.