WIP - Active development
Rec2Note is a CLI tool for transforming lecture recordings into student notes that capture key concepts delivered with visual aids (slides, whiteboard, …), coursework-related notices, and questions from students.
The app is in active development. Currently available:
- CLI interface for processing transcripts
- Minimal pipeline (summary generation)
- Full pipeline (summary + deadlines + study questions + student Q&A)
- Rich terminal output with preview
Planned features (not yet implemented):
- Streamlit web UI
- Textual TUI
- Auto-transcription from media files
- SQLite database for storing notes
Features:
- Generate detailed summaries (title, key points, topics, key terms) from transcripts
- Extract important deadlines (exam dates, assignment due dates, …)
- Extract student questions and answers
- Generate study questions
- Optional: include media file path for future visual-aid timestamp extraction
- Preview generated notes directly in terminal
- Python 3.13+
- uv (recommended) or pip to install dependencies
- Google Gemini API key — create a
.envfile in the project root with:(The app loads this via pydantic-settings; see config.)GOOGLE_GEMINI_API_KEY=your_api_key_here
No build step is required: install deps and run. The SQLite DB and data/ directory are created automatically on first use.
Install dependencies, then run the CLI:
# Install the package in development mode
uv pip install -e .
# Process a transcript with minimal pipeline (summary only)
rec2note process run -tr path/to/transcript.txt
# Process with full pipeline and preview output
rec2note process run -tr path/to/transcript.txt --full --preview
# Include media file for reference
rec2note process run -media path/to/lecture.mp4 -tr path/to/transcript.txt --full
# Custom output directory
rec2note process run -tr path/to/transcript.txt -o ./my-notes| Option | Short | Description |
|---|---|---|
--transcript |
-tr |
Path to transcript file (.txt or .md) — required |
--media |
-media |
Path to audio/video file (optional, for metadata) |
--minimal |
-m |
Run minimal pipeline (summary only) — default |
--full |
-f |
Run full pipeline (summary + deadlines + study questions + student Q&A) |
--preview |
-pr |
Render generated markdown in terminal |
--output-dir |
-o |
Output directory for generated notes (default: ./notes) |
- Auto-transcription from media is not yet supported — a transcript file is required.
- Streamlit UI and TUI are planned but not yet implemented.
Rec2Note/
├── .env # Secrets (API keys)
├── .gitignore
├── pyproject.toml # Dependencies (uv)
├── README.md
├── data/ # SQLite DB (rec2note.db), gitignored
├── recordings/ # Input recordings
│ └── .gitkeep
├── notes/ # Output notes (gitignored)
│ └── .gitkeep
├── tests/
│ └── ...
└── src/
└── rec2note_cli/ # Main package
├── __init__.py
├── main.py # Entry point (Typer CLI)
├── config.py # Configuration (Pydantic Settings)
├── cli/ # CLI commands (process run)
├── core/ # Business logic
│ ├── agents.py # LLM agents (summary, deadlines, etc.)
│ ├── db.py # SQLite storage for lecture notes
│ ├── llm.py # Gemini API client
│ ├── models.py # Pydantic models and LectureNoteResult
│ └── pipeline.py # Orchestrates transcript → agents → DB
├── enums/
├── prompts/ # LLM instruction files
├── ui/ # Rich console UI
└── utils/ # read_file, timestamp (HH:MM:SS → seconds)- Package manager: uv
- CLI: Typer + Rich
- LLM: Gemini API
- DB: SQLite (built-in,
data/rec2note.db)