feat(plugins): add Lecture Notes plugin for academic conversations #4707
+587
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
plugins/lecture-notes/) — a standalone FastAPI service that transforms recorded lectures into structured academic notescommunity-plugins.json— an interactive study buddy that generates flashcard-style Q&A pairs and quizzes users via chatRelationship to Existing
class-notesPluginThe existing
class-notesplugin is prompt-only withmemoriescapability and a basic 4-section outline format. This PR adds two complementary tools that don't overlap:class-notes= passive outline.lecture-notes= smart webhook with structured extraction.study-companion= interactive chat that tests you on the material.How the Webhook Plugin Works
Two-stage pipeline that avoids wasting API tokens on casual conversations:
with_structured_outputextracts key concepts with definitions, topics covered, summary, questions to explore, action items (homework/readings), and study tips.Files Changed
plugins/lecture-notes/main.pyplugins/lecture-notes/requirements.txtplugins/lecture-notes/.env.templateplugins/lecture-notes/Dockerfileplugins/lecture-notes/README.mdcommunity-plugins.jsonTest Plan
python -c "import py_compile; py_compile.compile('plugins/lecture-notes/main.py')"black --check --line-length 120 --skip-string-normalization plugins/lecture-notes/main.pypython -c "import json; json.load(open('community-plugins.json'))"curlcommand to POST a sample OS lecture transcriptExample Webhook Output