Course material intake
Skill Ivor-NCUT/course-producer/skills/course-material-intake
课程材料盘点与证据化摄取。扫描本地课程目录、飞书文档或 Wiki、飞书妙记转录、PDF、Word、Markdown、音视频转写和已有课程稿,生成可追溯的 materials.jsonl 与材料缺口报告。Use when the user says 盘点课程材料、读取课程素材、整理访谈文件、建立材料清单、检查哪些资料能用,或 Course Producer 进入 intake 阶段。From its SKILL.md
npx -y skills add Ivor-NCUT/course-producer --skill course-material-intakeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
4.4 KB, ~1.3k tokens by cl100k_base, as published. Nobody here has run it
课程材料摄取
只建立材料证据索引与可读性缺口,不在本阶段确定课程定位、课纲或正文。
输入与工具路由
读取用户给出的项目目录、文件和 URL。优先复用已安装工具:
- PDF、DOCX、表格、音视频分别调用对应文件 Skill;不要自建通用解析器。
- 飞书 Wiki 先解析真实对象,再用
lark-doc/lark-drive读取。 - 飞书妙记用
lark-minutes获取 transcript;摘要和关键词只用于导航。 - 无法读取的来源保留原路径或 URL,状态写为
blocked,记录真实错误,不猜内容。
执行流程
- 确认课程项目已经用
tools/course-project.mjs init初始化;未初始化则先初始化。 - 递归盘点用户明确放入范围的文件,排除
.course-producer/、版本库、缓存和构建产物。 - 为每个来源生成稳定
source_id,计算本地文件 SHA-256;远程对象优先记录对象 token、版本或更新时间,无法取得时记录fingerprint: null。 - 识别同一材料的版本与派生关系。只有文件内容、更新时间、明确版本声明或用户决定能证明权威性;不能因为文件名含“最终版”就自动设为当前版本。为每组相关材料记录
source_group、version_relation与authority_status,证据不足时使用candidate或conflict。 - 读取可读正文并分类,分类只能是:
execution_instruction:给 Agent 的执行约束,不进入学员正文;course_material:观点、方法、案例、数据、故事、原话和教学决策;meeting_chatter:问候、排期、掉线和无关闲聊;unreadable:缺权限、损坏、格式不支持或内容缺失。
- 判断每个来源可用于定位、访谈、知识萃取、课纲、逐字稿、审校或海报中的哪些阶段。
- 把一行一个 JSON 对象追加或幂等更新到
.course-producer/materials.jsonl。同一source_id + fingerprint不重复写入。 - 在
.course-producer/artifacts/material-gap-report.md汇总可用材料、版本冲突、重复、不可读项和后续阶段真正缺少的证据;单独列出每组材料的当前权威候选与判定依据。 - 用状态工具把 intake 标记完成,登记
materials.jsonl与缺口报告、输入指纹和验证结果。
materials.jsonl 契约
每条记录至少包含:
{"source_id":"src-001","source_group":"expert-interview-01","source_type":"minutes_transcript","location":"https://...","title":"专家访谈","fingerprint":"sha256:...","status":"ready","classification":"course_material","version_relation":"canonical","authority_status":"confirmed","purposes":["knowledge_extraction","lesson_writing"],"evidence_locator":"00:12:40-00:18:05","notes":null}
status:ready、partial、blocked、ignored。source_type:写真实类型,如local_markdown、pdf、docx、audio、minutes_transcript、lark_doc。version_relation:canonical、supersedes、superseded_by、parallel、duplicate、unknown。authority_status:confirmed、candidate、conflict、not_applicable;只有证据充分时使用confirmed。evidence_locator:页码、段落标题、时间戳或 block id;暂时未知可为null,后续抽取时补齐。- 记录错误时使用
error.code和error.message,不要记录凭据。
完成检查
- 所有用户指定来源都已登记,数量能与原始输入对上。
- 每条记录都有来源、类型、位置、状态、分类和用途。
- transcript 与摘要没有混用;执行指令和会议闲聊没有进入课程素材。
- 不可读项全部进入缺口报告,错误可复现。
- 同组多版本材料的权威关系有证据;未解决冲突不会被文件名或修改时间静默覆盖。
materials.jsonl每行都是合法 JSON,且没有重复的source_id + fingerprint。
完成后只交付材料索引与缺口报告,把下一阶段交给 course-positioning。
What ships with it: 1 file
282 B alongside SKILL.md
agents/
- openai.yaml282 B