获取、同步并整理任何课程或机构的EdStem讨论帖。适用于检查新帖子、同步课程讨论区等场景。
EdStem.
功能概述
EdStem.是一项面向实际任务的技能,主要用于Fetch 并组织来自任何课程或机构的EdStem讨论线索,自动设置员工/学生区分;QQ 快起步;
核心要点
- Fetch 最近的线索用于任何课程;
- 例如: Finding。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
使用与执行
使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。
结果检查与注意事项
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
EdStem
从任意课程或机构抓取并整理 EdStem 讨论帖,自动区分教职员工与学生发帖。
快速开始
获取任意课程的最新讨论帖:
cd /home/axel/.openclaw/workspace/skills/edstem/scripts python3 fetch-edstem.py[output_dir] [--course-name "Course Name"]
示例:
# 抓取至默认目录(./edstem-) python3 fetch-edstem.py 92041 # 抓取至指定目录 python3 fetch-edstem.py 92041 ./machine-learning # 指定课程名称以获得更清晰的输出 python3 fetch-edstem.py 92041 --course-name "Machine Learning" # 同时指定目录和课程名称 python3 fetch-edstem.py 92041 ./ml-course --course-name "Machine Learning" # 抓取更多帖子(默认为 10 条) python3 fetch-edstem.py 92041 --limit 25
查找课程 ID
查找你的 EdStem 课程 ID 方法如下:
- 登录 EdStem 并进入你的课程页面
- 查看浏览器地址栏 URL:
https://edstem.org/us/courses// - URL 中的数字即为你的课程 ID
或者,使用 API 列出你所加入的所有课程:
curl -H "Authorization: Bearer YOUR_TOKEN" https://us.edstem.org/api/user | jq '.courses[] | {id: .course.id, name: .course.name}'
抓取内容说明
针对每门课程,将生成以下文件:
- threads.json —— 包含完整元数据的帖子列表
- thread-XXX.md —— 格式化为 Markdown 的单个帖子
- 帖子标题、分类、时间戳
- 原始发帖内容
- 所有回答与评论
- 每条发帖均带有 [STAFF] 或 [STUDENT] 标签
特性
- 机构无关性:适用于任何使用 EdStem 的学校
- 教职人员身份识别:清晰区分教师/助教与学生发帖
- 结构化输出:采用 Markdown 格式,便于阅读与搜索
- 基于 API:使用 EdStem 官方 API(不依赖网页爬取)
- 灵活输出路径:可自定义输出目录及组织方式
认证方式
该技能通过 Python 脚本中存储的 Bearer Token 进行认证。若需使用你自己的账户,请按以下步骤操作:
- 在浏览器中登录 EdStem
- 打开开发者工具 → 网络(Network)标签页
- 刷新任意 EdStem 页面
- 查找任意一条 API 请求,复制其请求头中的
Authorization: Bearer ...Token - 更新
scripts/fetch-edstem.py中的ED_TOKEN变量值
当前 Token 所在位置:scripts/fetch-edstem.py 第 20 行
若 API 调用失败(返回 401 Unauthorized),说明 Token 已过期,需重新获取并更新。
脚本说明
fetch-edstem.py(推荐使用)
功能完备的 Python 脚本,支持 Markdown 格式化输出及教职人员/学生身份自动区分。
用法:
python3 scripts/fetch-edstem.py[output_dir] [options]
可选参数:
output_dir—— 存储帖子的目录(默认:./edstem-)--course-name NAME—— 课程显示名称--limit N—— 抓取帖子数量(默认:10)
功能特性:
- 获取帖子元数据及全部详细内容
- 完整 Markdown 格式,包含所有回答与评论
- 自动识别教职人员角色
- 缓存帖子列表为 JSON 文件
- 自动创建输出目录
fetch-edstem.sh(轻量级替代方案)
基于 Bash/curl 的纯 JSON 抓取脚本,无需额外依赖。
用法:
bash scripts/fetch-edstem.sh[output_dir]
输出内容:
- 每个帖子对应的原始 JSON 文件
- 需手动格式化或后续处理
常用工作流
检查新发帖
python3 scripts/fetch-edstem.py 92041 ~/courses/ml-spring-2025
同步多门课程
# 编写简易同步脚本
for course in "92041:machine-learning" "94832:advanced-rl"; do
IFS=':' read -r id name <<< "$course"
python3 scripts/fetch-edstem.py $id ~/courses/$name --course-name "$name"
done
查看近期活动
抓取完成后,浏览生成的 Markdown 文件:
ls -lt ./edstem-92041/*.md | head cat ./edstem-92041/thread-001.md
跨帖子全文搜索
grep -r "gradient descent" ./edstem-92041/*.md
输出目录结构
/ ├── threads.json # 帖子元数据 ├── thread-001.md # 单个帖子文件 ├── thread-002.md └── ...
每个 Markdown 文件包含以下内容:
- 帖子元数据(序号、标题、分类、时间戳)
- 原始发帖(含作者身份标识)
- 所有回答(按时间排序,含身份标签)
- 所有评论(含身份标签)
集成示例
与 LLM 智能体集成
# 抓取帖子后交由智能体分析 python3 fetch-edstem.py 92041 ./course-data # 接着执行:"Summarize the most common questions in ./course-data/"
自动化监控
# 加入 cron 实现每日同步 0 9 * * * cd /path/to/skills/edstem/scripts && python3 fetch-edstem.py 92041 ~/courses/ml
自定义组织方式
# 按学期与院校组织 python3 fetch-edstem.py 92041 ~/school/stanford/2025-spring/cs229 python3 fetch-edstem.py 94832 ~/school/mit/2025-spring/6.7920
故障排查
401 Unauthorized:Token 已过期。请重新登录获取 Token,并更新脚本中的 ED_TOKEN。
课程未找到:请确认课程 ID 正确,且你的账户具有访问权限。
帖子为空:请确认该课程存在讨论帖,且你已注册该课程。
请求频率限制:EdStem 可能对 API 请求进行限频。如需,可在多次抓取之间添加延迟。
贡献指南
本技能为开源设计,且具备机构无关性。欢迎提交改进:
- 增强内容解析能力(EdStem 使用基于 XML 的文档格式)
- 支持按分类或时间范围筛选
- 增量同步(仅抓取新增帖子)
- 导出为其他格式(JSON、HTML 等)
版本历史
- 1.1.0 —— 支持机构无关性,引入灵活参数配置
- 1.0.0 —— 初始发布版本
热门AI工具
相关专题
Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。
0
2026.10.28
Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。
0
2026.10.28
Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。
0
2026.10.28
本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。
0
2026.10.22
本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。
0
2026.10.22
本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。
0
2026.10.22
本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。
0
2026.10.22
本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。
0
2026.10.22
本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。
0
2026.10.22
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.6万人学习
共6课时 | 54.7万人学习