EdStem

Polar Sponsor
爱发电 赞助
.NET 9.0

获取、同步并整理任何课程或机构的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 方法如下:

  1. 登录 EdStem 并进入你的课程页面
  2. 查看浏览器地址栏 URL:https://edstem.org/us/courses//
  3. 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 进行认证。若需使用你自己的账户,请按以下步骤操作:

  1. 在浏览器中登录 EdStem
  2. 打开开发者工具 → 网络(Network)标签页
  3. 刷新任意 EdStem 页面
  4. 查找任意一条 API 请求,复制其请求头中的 Authorization: Bearer ... Token
  5. 更新 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 —— 初始发布版本

相关专题

更多
Vite 项目如何打包和部署
Vite 项目如何打包和部署

Vite项目打包部署专题汇集生产构建、产物预览、输出目录、资源路径、Nginx与GitHub Pages部署及常见白屏和路由404问题的已审核文章,帮助读者完成上线流程。

2026.10.28

0

16

Vite 如何搭配 Vue.js
Vite 如何搭配 Vue.js

Vite搭配Vue.js专题汇集创建Vue 3项目、配置开发环境、路径别名、Vue插件、代理、多环境构建与调试的已审核文章,帮助读者完成从初始化到日常开发的配置。

2026.10.28

0

15

Vite 项目目录怎么看
Vite 项目目录怎么看

Vite项目目录专题汇集入口文件、src源码、public静态资源、路径别名、项目根目录和构建输出目录相关的已审核文章,帮助读者理解各文件夹的用途与引用方式。

2026.10.28

0

10

Gradle插件开发入门教程
Gradle插件开发入门教程

本专题介绍Gradle插件开发的基本流程,涵盖插件类编写、自定义任务注册、扩展参数设计和插件应用方法,帮助你理解插件如何组织构建逻辑,减少多个项目之间的重复配置。

2026.10.22

0

11

Gradle Wrapper配置教程
Gradle Wrapper配置教程

本专题介绍Gradle Wrapper的基本作用,涵盖文件组成、生成方法、版本配置和任务调用,帮助你理解项目如何使用指定的Gradle版本,减少不同开发环境带来的构建差异。

2026.10.22

0

10

Golangci-lint检查器使用教程
Golangci-lint检查器使用教程

本专题整理Golangci-lint常用Linters的用途与配置方法,覆盖错误处理、无效代码、安全、复杂度、命名和依赖检查,帮助项目合理选规则。

2026.10.22

0

15

Gradle怎么构建Java项目
Gradle怎么构建Java项目

本专题介绍Gradle Java项目构建方法,涵盖Java插件配置、依赖声明、源码编译、测试执行和打包检查,帮助你理解各阶段的任务关系,逐步完成项目构建。

2026.10.22

0

10

PHP时间戳漏洞修复教程
PHP时间戳漏洞修复教程

本专题汇总PHP常见时间戳漏洞,包括2038年溢出、时区漂移、时间戳伪造、重放攻击、时间盲注与日志审计失效等,并给出升级64位环境、使用 DateTimeImmutable、统一UTC、严格超时校验、预处理绑定、hash_equals 比对等修复方案,帮助开发者快速排查和加固时间相关代码。

2026.10.22

0

25

Golangci-lint配置文件与规则设置
Golangci-lint配置文件与规则设置

本专题聚焦Golangci-lint YAML配置文件,讲清运行参数、规则启停、目录排除、问题过滤及严重级别设置,便于团队统一检查标准。

2026.10.22

0

15

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.7万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 134.1万人学习