Skip to content

ZelinZhou-THU/lecture-notes-creator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

21 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Lecture Notes Creator β€” AI-Powered PDF-to-Notes for Students

δΈ­ζ–‡ζ–‡ζ‘£ | English

License: Apache 2.0 Python 3.10+ Powered by MinerU

Turn confusing course PDFs into clear, page-by-page self-study notes β€” with AI extraction, structured writing, and iterative quality review.

How It Works

flowchart LR
    A["πŸ“„ Course PDF"] --> B["πŸ” MinerU<br/>Extraction"]
    B --> C["πŸ–ΌοΈ Image<br/>Understanding"]
    C --> D["πŸ“‹ Structure<br/>Analysis"]
    D --> E["✍️ Note<br/>Writing"]
    E --> F{"πŸ” AI Review<br/>7-Dim Score"}
    F -->|"Score β‰₯ 8"| G["βœ… Final Notes"]
    F -->|"Needs Work"| E
    G --> H["☁️ Notion<br/>Sync"]
Loading

Why Lecture Notes Creator?

Staring at a 200-page course PDF the night before the exam? We've been there.

Most students either:

  • Read passively β€” highlight everything, remember nothing
  • Copy-paste slides β€” end up with the same confusing content in a different format

Lecture Notes Creator takes a different approach:

Traditional Lecture Notes Creator
Dense slides with abbreviations Step-by-step explanations with full context
Skipped derivations ("obviously...") Complete reasoning chains from intuition to math
No way to check coverage Page-by-page mapping β€” every slide accounted for
One-pass reading Multi-round AI review until quality threshold is met

Key Features

πŸ”¬ High-Fidelity Extraction

MinerU VLM mode preserves formulas (LaTeX), tables (HTML), and figures from any PDF. No more broken equations or garbled text.

πŸ“– Page-Driven Structure

Notes strictly follow P1β†’P2β†’P3 order. Every page mapped, nothing missed β€” cross-reference back to the original slides in seconds.

🧠 Adaptive Writing Styles

Traditional courses (physics/chem) follow analogy β†’ derivation β†’ meaning. Slide-based (CS/AI) follows motivation β†’ mechanism β†’ application. The LLM auto-detects which style fits your PDF.

πŸ”„ AI Review Loop

A sub-agent role-playing an undergraduate student scores each chapter across 7 dimensions. The loop iterates until score β‰₯8/10 β€” typically 1-2 rounds.

☁️ One-Click Notion Sync

Push notes to your Notion workspace with proper formatting (headings, LaTeX, tables, callouts). No manual formatting needed.

Quick Start

πŸ“– Full installation guide: INSTALLATION.md (English) | Quick start: QUICKSTART.md (English)

Prerequisites

  • Python 3.10+
  • MinerU API Key (from mineru.net)
  • (Optional) Notion API Key

Install

git clone https://github.com/ZelinZhou-THU/lecture-notes-creator.git
cd lecture-notes-creator
pip install -r requirements.txt

Configure your .env file:

MINERU_TOKEN=your_mineru_api_key_here
NOTION_API_KEY=your_notion_api_key_here  # Optional

Then open the project in OpenCode and give it your PDF. That's it.

πŸ“– Detailed usage steps
  1. Analyze PDF (optional, only needed if >200 pages)

    python scripts/split_pdf.py analyze "path/to/courseware.pdf" --preview 3
  2. Extract content (generates .bat file, double-click to run)

    python scripts/create_extraction_bat.py "path/to/courseware.pdf" --output ./output_dir/mineru --mode auto
  3. Tell OpenCode "extraction done" β€” it checks status and continues

  4. Sub-agent analyzes images (optional, recommended for image-heavy PDFs)

  5. OpenCode handles the rest:

    • Identifies courseware type (traditional / slide-based)
    • Writes lecture notes page by page
    • Each chapter goes through AI review iteration
    • Optionally uploads to Notion

Project Structure

lecture-notes-creator/
β”œβ”€β”€ SKILL.md                          # Skill definition (core workflow)
β”œβ”€β”€ .opencode/agents/
β”‚   β”œβ”€β”€ lecture-reviewer.md           # Sub-agent: quality review
β”‚   └── image-describer.md            # Sub-agent: image understanding
β”œβ”€β”€ scripts/
β”‚   β”œβ”€β”€ split_pdf.py                  # PDF analyze / pre-split / merge
β”‚   β”œβ”€β”€ extract_pdf.py                # Page screenshots (fallback)
β”‚   β”œβ”€β”€ mineru_extract.py             # MinerU API calls
β”‚   β”œβ”€β”€ create_extraction_bat.py      # Generate .bat/.sh for extraction
β”‚   β”œβ”€β”€ run_mineru_standalone.py      # Run MinerU outside OpenCode (cross-platform)
β”‚   β”œβ”€β”€ wait_for_extraction.py        # Wait for extraction completion
β”‚   β”œβ”€β”€ reconstruct_full_md.py        # Rebuild Markdown from JSON
β”‚   β”œβ”€β”€ backfill_image_descriptions.py
β”‚   └── save_batch_json.py
β”œβ”€β”€ deps/
β”‚   β”œβ”€β”€ mineru/                       # MinerU skill reference
β”‚   └── notion/                       # Notion skill (built-in)
β”‚       └── scripts/                  # Notion upload scripts
β”œβ”€β”€ references/
β”‚   β”œβ”€β”€ writing-style-guide.md        # Writing style reference
β”‚   β”œβ”€β”€ review-prompt.md              # Review prompt template
β”‚   β”œβ”€β”€ notion-upload.md              # Notion upload guide
β”‚   β”œβ”€β”€ mineru-api-guide.md           # MinerU API reference
β”‚   └── output-structure.md           # Output file structure
β”œβ”€β”€ docs/
β”‚   β”œβ”€β”€ INSTALLATION.md               # Installation guide (zh)
β”‚   β”œβ”€β”€ INSTALLATION_EN.md            # Installation guide (en)
β”‚   β”œβ”€β”€ QUICKSTART.md                 # Quick start guide (zh)
β”‚   └── QUICKSTART_EN.md             # Quick start guide (en)
└── requirements.txt

Credits

Built with:

License

Apache License 2.0

About

πŸŽ“ Turn any course PDF into structured self-study notes with AI. MinerU extraction β†’ page-by-page notes β†’ 7-dimension AI review β†’ Notion sync. OpenCode skill for students.

Topics

Resources

License

Code of conduct

Contributing

Stars

4 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages