Resources
10Install
npx skillscat add coevolution-labs/awesome-learn Install via the SkillsCat registry.
SKILL.md
BOSS REQUIRE DONT MODIFY不要修改下面的内容:
我希望可以做成一个skill,可以自动化搜集全面的资源、列举、分析、下载、分析、整理
SystematicNotes —— 自动化课程笔记生成系统
快速概览
模块化 Pipeline 系统:收集课程资料 → 自适应选择处理器 → 生成结构化笔记。支持 PDF 课件视觉分析 + transcript 文字处理。
架构
src/ # 通用共享代码
├── engine.py # PipelineEngine(编排核心)
├── registry.py # AdapterRegistry(适配器自动发现+注册)
├── model.py # 数据模型(CourseMaterial, PipelineConfig 等)
├── adapters.py # 基类(BaseCollector, BaseProcessor, BasePublisher)
├── providers/ # LLM Provider 层
│ ├── base.py # BaseProvider(ABC)
│ ├── boyue.py # BoyueProvider(OpenAI 兼容)
│ └── router.py # get_provider(name)
├── utils/checkpoint.py # 断点续跑
└── cli.py # 命令行入口
pipeline/
├── 01-collect/adapters/ # 资料收集器(local 等)
│ └── scripts/ # 辅助脚本(如 ELRC catch_all.js)
├── 02-process/
│ ├── adapters/ # 加工处理器(pdf, transcript, exec)
│ ├── generators/ # 笔记生成器(LLM 调用)
│ └── prompts/ # Prompt 模板(.md 外置)
└── 03-publish/adapters/ # 发布器(local, github)
templates/course/ # 课程标准目录模板
├── 01-raw/{slides,transcripts,recordings,homework,documents}/
├── 02-processed/{images,summaries,drafts}/
└── 03-output/{notes,cheatsheet,homework}/
courses/ # 实际课程数据(通过 symlink 或直接存放)
├── cs336/ # Stanford CS336(已有资料+笔记)
├── gai-sde/ # MIT 6.S184 Diffusion Models
└── quick-test/ # 快速测试使用方法
# 列出可用适配器
python3 -m src.cli --list-adapters
# 运行 Pipeline
python3 -m src.cli courses/my-course
python3 -m src.cli courses/my-course --force --dpi 200质量检查-优化循环(强制执行)
MUST:笔记生成后必须进行质量检查。如果发现问题或有明显优化空间,必须进入检查→优化→再检查的循环,直至质量达标。
检查维度
| 维度 | 检查内容 | 红线(必须修) |
|---|---|---|
| 结构完整性 | 所有课时是否覆盖?章节层级是否清晰? | 缺课、章节断裂 |
| 内容准确性 | 公式/代码/定义是否正确?是否与原始资料一致? | 事实错误、公式错误 |
| 可读性 | 中文是否通顺?术语是否准确?排版是否清晰? | 机翻痕迹严重、格式错乱 |
| 深度 | 是否只是表面摘录?有无解释"为什么"? | 纯罗列无深度 |
| 实用性 | 能否直接用于复习/考试/面试?有无 TLDR? | 缺少总结/要点 |
循环流程
生成笔记 → 质量检查 → 有问题? ──Yes──→ 针对性修复 → 回到检查
│
No
│
▼
输出最终版- 每轮修复必须有具体的修复目标(不能"再改改")
- 最多 3 轮循环,超限则标注
[待人工审核]并输出当前最佳版 - 检查结果写入
03-output/notes/quality_report.md
常见问题 & 修复策略
| 问题 | 修复方式 |
|---|---|
| 某节课内容明显比其他课少/浅 | 单独重新生成该课笔记(降低 temperature、加长 prompt) |
| 公式渲染错误/缺失 | 正则修复 + 针对性重写含公式段落 |
| 中文术语不统一 | 术语表对照替换 |
| 章节结构混乱 | 重新合并+润色,强调大纲结构 |
| 缺少关键图表说明 | 补充视觉摘要引用 |
资料完整性规范
核心理念:我们要的不是"有一些资料然后生成笔记",而是把对应课程(学期)的高质量、全面的资料都下载,结合生成笔记,并引导进行练习。一门课的价值 = 听懂(notes) + 会做(labs/homework) + 能读源码(code)。
每门课程应收集的资料清单
| 资料类型 | 存放目录 | 必需程度 | 说明 |
|---|---|---|---|
| 课件/幻灯片 | 01-raw/slides/ |
必需 | PDF、.py 可执行讲义、PPT |
| 视频转录稿 | 01-raw/transcripts/ |
强烈建议 | YouTube/bilibili 字幕,优先 _clean.txt |
| 课程笔记/讲义 | 01-raw/documents/ |
建议 | 官方 lecture notes、syllabus、reading list |
| 实验/Lab | 01-raw/homework/ |
如有则必需 | Jupyter notebooks、Colab 链接、实验指导 |
| 作业/习题 | 01-raw/homework/ |
如有则必需 | 习题集、答案、评分标准 |
| 源码仓库 | 01-raw/homework/ |
如有则建议 | 课程配套 GitHub(labs/assignments 源码) |
| 参考论文 | 01-raw/documents/ |
建议 | 课程推荐的必读论文 |
| 视频/录音 | 01-raw/recordings/ |
可选 | 课程录像(如无 transcript 则需要) |
资料收集 SOP
每门新课程按以下步骤逐项完成:
- 找到课程官网 → 下载所有 slides PDF、lecture notes、syllabus、reading list
- 搜索 GitHub →
github.com搜索课程编号/名称,clone labs、assignments、源码仓库 - 搜索 YouTube/bilibili → 搜索课程名+讲师,拉取所有视频 transcript
- 检查 syllabus → 看推荐阅读/参考论文列表,下载关键论文 PDF
- 检查 Colab → 课件中是否有 Colab 链接,下载 .ipynb 到 homework/
- 缺失清单 →
01-raw/下空目录 = 待补充,提醒用户
自检
运行 pipeline 前,确认以下问题:
- slides/ 非空且覆盖所有课时?
- transcripts/ 覆盖所有课时(或至少大部分)?
- homework/ 有 lab/作业(如果课程有的话)?
- documents/ 有 syllabus/lecture notes(如果课程有的话)?
缺失项不阻塞 pipeline,但会在输出中标注「资料不完整」。
自进化机制
- 新增适配器:在
pipeline/XX/adapters/下放一个.py文件,继承对应基类并设置name,自动注册 - 新增 Provider:在
src/providers/下实现BaseProvider子类 - Prompt 优化:直接编辑
pipeline/02-process/prompts/*.md
当前状态
| 课程 | 资料状态 | 笔记状态 |
|---|---|---|
| CS336 | PDF+PY+Transcripts 已就绪(symlink),18节课 | 已有旧版笔记,新 pipeline 待重跑 |
| gai-sde (MIT 6.S184) | ✅ slides(5) + transcripts(6) + lecture_notes + labs(3+3解答) | 待生成 |
API 配置
Boyue(OpenAI 兼容代理):http://35.220.164.252:3888
- 文本:glm-4.7
- 视觉:gpt-4o
- 配置方式:
.env文件(参考.env_example)
已验证
- Engine 全流程 ✅(transcript-only、pdf+vision、exec lecture 三种模式)
- PDF→图片→视觉摘要 ✅
- 笔记质量 ✅(结构化、公式、表格)
- 适配器自发现 ✅
- GitHub 图床发布 ✅
- YouTube transcript 拉取 ✅
- 可执行讲义解析 ✅
Gotchas
260708-Genetic-Notes-Design-Requirement
目标读者:[画像];读完后能:[终点能力](backward design)
组织契约:
- 用 genetic method 组织全文:单一主线 = 问题 → 方法 → 失效模式 → 下一代方法;禁止并列式知识点罗列
- 失效驱动衔接:每一节第一句显式回答「上一节的什么缺陷逼出了本节」
- 前置概念 just-in-time:在第一次被需要处引入,不集中堆在开头
- 开头只放一段 advance organizer:全文主线地图 + 为什么这条线非走不可
- 单一叙事主线:支线内容一律放折叠块/附录,不打断主干
- signaling:段落间用显式逻辑词(因此/然而/为了修复 X)标注关系
流程契约:
先计划,再执行
260708-Notes-Must-Reference-Raw-Materials
Problem:LLM 凭自己知识生成笔记,零引用、无法溯源验证。表面看起来正确,实际上是"凭空编造"。
Need:每条关键论断必须可追溯到原始资料的精确位置(文件名+页码/章节),读者可以用 grep 验证。
Solution:
笔记生成 Pipeline 三步:
- 提取:pdftotext/pymupdf 从 raw PDF 提取全文 →
02-processed/<source>_ChX.txt - 阅读+分析:Read 提取文本,理解真实结构和关键段落,确定哪些内容进入笔记
- 生成+引用:基于提取文本写笔记,每条论断标注
[来源, p.X];原文直接引用用>block quote;提取件独立存放供 grep 验证
反模式:
- 凭 LLM 内部知识直接写笔记(零引用 = 零可信度)
- 用古典曲线曲面论(do Carmo 风格)去解释一本直接从流形开始的讲义(Salamon)——结构对不上
- 先写笔记再去找资料佐证——应该先读资料再写笔记
复现List:260708-diffgeom-notes(本 session,Ch.1-2 初版被删除重写)