sjtu-canvas
install
source · Clone the upstream repo
git clone https://github.com/xhh678876/openclaw-sjtu
Claude Code · Install into ~/.claude/skills/
git clone --depth=1 https://github.com/xhh678876/openclaw-sjtu ~/.claude/skills/xhh678876-openclaw-sjtu-sjtu-canvas
OpenClaw · Install into ~/.openclaw/skills/
git clone --depth=1 https://github.com/xhh678876/openclaw-sjtu ~/.openclaw/skills/xhh678876-openclaw-sjtu-sjtu-canvas
manifest:
SKILL.mdsource content
上海交通大学全能校园助手
配置
- 配置文件:
(从config.json
复制并填入凭证)config.example.json - Canvas URL:
https://oc.sjtu.edu.cn - 当前用户的课程列表通过 Canvas API 自动获取
- 所有脚本位于
目录,用scripts/
执行python3 - PPT 模板位于
templates/ - Canvas 现支持单 token 兼容模式,也支持学生端 / 教师端双 profile 配置
- CLI 可用
或--profile student
显式切换,也可通过--profile teacher
设默认身份canvas_default_profile
🔴 刚需功能(每周都用)
1. DDL 追踪
触发: "我有什么作业"、"DDL"、"截止"、"未交作业"
python3 scripts/canvas_api.py ddls # 用默认 profile 查未交作业 python3 scripts/canvas_api.py ddls-all # 学期全景报告 python3 scripts/canvas_api.py --profile student ddls # 明确用学生端查询
2. DDL → Apple 日历
触发: "同步日历"、"导出DDL"、"导入日历"
python3 scripts/sjtu_timetable_ics.py ddls ~/Desktop/ddls.ics python3 scripts/calendar_sync.py # macOS 直接同步
3. 教学周 / 校历
触发: "今天第几周"、"教学周"、"校历"、"什么时候放假"
python3 scripts/sjtu_info.py week # 当前第几周 python3 scripts/sjtu_info.py calendar # 完整学期校历
4. 教务通知
触发: "教务通知"、"教务处"、"选课通知"、"考试安排"
python3 scripts/sjtu_news.py jwc 10
🟠 高频功能(每月多次)
5. 课程评价
触发: "课程评价"、"老师怎么样"、"选课参考"、"评分"
⚠️ course.sjtu.plus 有 CDN 反爬机制,推荐通过 OpenClaw 浏览器代理模式使用(AI 自动处理认证)。
python3 scripts/sjtu_course_review.py search 传热学 python3 scripts/sjtu_course_review.py compare 燃烧学 python3 scripts/sjtu_course_review.py detail <course_id>
6. 交大邮箱
触发: "邮箱"、"邮件"、"未读"、"发邮件"
python3 scripts/sjtu_mail.py unread --limit 10 python3 scripts/sjtu_mail.py search -k "作业" python3 scripts/sjtu_mail.py summary python3 scripts/sjtu_mail.py send --to someone@sjtu.edu.cn --subject "标题" --body "正文"
凭证从
config.json 自动读取。
7. 食堂推荐
触发: "吃什么"、"食堂"、"推荐"、"菜单"
python3 scripts/sjtu_canteen.py recommend python3 scripts/sjtu_canteen.py list python3 scripts/sjtu_canteen.py menu 二餐
8. 传承交大
触发: "往年试卷"、"课程资源"、"传承"、"笔记"
python3 scripts/sjtu_legacy.py search "传热学" python3 scripts/sjtu_legacy.py popular
9. 交大新闻
触发: "交大新闻"、"学校新闻"
python3 scripts/sjtu_news.py news 10 python3 scripts/sjtu_news.py all
🟡 实用功能(需要时用)
10. 图书馆
触发: "图书馆"、"开馆时间"、"座位"
python3 scripts/sjtu_library.py info python3 scripts/sjtu_library.py seats
11. 空教室
触发: "空教室"、"哪里有教室"、"自习"
python3 scripts/sjtu_classroom.py empty python3 scripts/sjtu_classroom.py empty --building 东上院
12. 交大 PPT
触发: "做PPT"、"PPT模板"、"生成PPT"
python3 scripts/generate_ppt.py --list-templates python3 scripts/generate_ppt.py \ --title "标题" \ --markdown content.md \ --template "0.上海交通大学通用PPT模板.pptx" \ --output output.pptx
模板目录:
templates/
默认行为:
- 自动清空模板自带示例页,避免生成内容被追加到模板样例后面
- 优先按版式名称匹配交大模板,减少占位符错位
- 自动把标题和正文放进正确的模板区域
- 默认执行文字样式优化,修正标题颜色、正文字号、层级和强调色
如需关闭默认文字优化:
python3 scripts/generate_ppt.py \ --title "标题" \ --markdown content.md \ --template "0.上海交通大学通用PPT模板.pptx" \ --output output.pptx \ --no-polish
13. 正版软件
触发: "正版软件"、"MATLAB"、"Office"
python3 scripts/sjtu_software.py list python3 scripts/sjtu_software.py search "MATLAB"
14. 校园巴士
触发: "校车"、"巴士"、"闵行到徐汇"
python3 scripts/sjtu_info.py bus
15. 生存手册
触发: "生存手册"、"保研"、"转专业"、"GPA"
python3 scripts/sjtu_survive.py toc python3 scripts/sjtu_survive.py search "保研" python3 scripts/sjtu_survive.py read "GPA"
🟢 工具功能
16. 镜像换源
触发: "换源"、"pip源"、"镜像"
python3 scripts/sjtu_mirror.py pip python3 scripts/sjtu_mirror.py conda python3 scripts/sjtu_mirror.py brew python3 scripts/sjtu_mirror.py docker python3 scripts/sjtu_mirror.py npm python3 scripts/sjtu_mirror.py list
17. 在线工具
触发: "LaTeX"、"在线工具"、"OCR"
python3 scripts/sjtu_tools.py list
18. 视觉交大
触发: "校园照片"、"校园风景"
python3 scripts/sjtu_visual.py albums python3 scripts/sjtu_visual.py search "图书馆"
📚 Canvas 高级功能
课件下载 + AI 总结
python3 scripts/canvas_api.py courses python3 scripts/canvas_api.py files <course_id> python3 scripts/canvas_api.py download <course_id> <filename>
下载后用
scripts/file_extractor.py 提取文本内容。
成绩查询
python3 scripts/canvas_api.py grades python3 scripts/canvas_api.py --profile teacher courses python3 scripts/canvas_api.py --profile teacher me
教师端与学生端区别:
- 学生端:更适合查个人课程、作业、DDL、成绩、提交状态
- 教师端:更适合查管理课程、全班提交情况、成绩册、课程配置与后续写操作扩展
- 若配置了双 profile,涉及“全班/课程管理”的请求默认优先考虑教师端
提交作业
⚠️ 提交前必须向用户确认课程、作业和文件
from scripts.canvas_api import submit_assignment submit_assignment(course_id, assignment_id, [file_paths])
全自动作业流水线
python3 scripts/auto_homework.py scan python3 scripts/auto_homework.py urgent 24 python3 scripts/auto_homework.py context <course_id> <assignment_id>
手写 PDF 生成
python3 scripts/handwrite_pdf.py input.txt output.pdf --style casual # 风格: neat(工整) casual(随意) messy(潦草)
字体目录:
fonts/(12 款手写字体)
💧 水源社区
触发: "水源"、"水源社区"、"论坛"、"帖子"、"搜帖子"
只读模式:仅支持搜索和浏览,不支持发帖/回复等写操作。
# 搜索话题 node scripts/shuiyuan_discourse.mjs search "选课" # 查看话题详情 node scripts/shuiyuan_discourse.mjs topic <topic_id> # 按分类浏览 node scripts/shuiyuan_discourse.mjs categories
凭证配置(仅支持链接授权):
# 第1步:生成授权链接 node scripts/shuiyuan_discourse.mjs auth init # 第2步:在浏览器中打开链接,完成授权,复制 payload # 第3步:完成授权 node scripts/shuiyuan_discourse.mjs auth finish --payload "<payload>"
授权后凭证存储于
~/.openclaw/skills-data/shuiyuan-discourse/auth.json。
依赖
pip3 install requests beautifulsoup4 python-pptx pdfplumber handright Pillow reportlab
水源社区功能额外需要 Node.js(v18+)。
注意事项
- 提交作业 前必须向用户确认
- Canvas Token 失效时需在 oc.sjtu.edu.cn → 设置 → 新建访问许可证 重新生成
- 选课社区受 CDN 反爬限制,推荐通过浏览器代理调用
- 食堂、教室等部分数据为硬编码,如有变动需更新脚本
- 校园巴士时刻表以学校最新通知为准