Install
openclaw skills install @xhh678876/sjtu-canvasSJTU Canvas LMS 课程助手。管理上海交通大学 Canvas (oc.sjtu.edu.cn) 课程数据。 也适用于其他基于 Canvas LMS 的高校,修改 base_url 即可。 触发场景: (1) 查看/下载课程文件(PPT/PDF)、批量下载课件 (2) 查看作业列表、DDL、提交状态、提交作业 (3) 同步作业DDL到Apple日历(Mac+iPhone) (4) PPT/PDF内容提取和AI总结、课件学习 (5) 作业辅导(提取作业要求+课件内容→给思路) (6) 查看成绩、计算均分 (7) 课程讨论区摘要 (8) DDL预警提醒 (9) 期末复习包生成(所有课件→Markdown) (10) 一键提交作业 触发词: Canvas, 课程, 作业, DDL, 截止, 成绩, 课件, PPT, 总结, 复习, 提交作业, 讨论区, course, assignment, grade
openclaw skills install @xhh678876/sjtu-canvasCanvas LMS 课程管理技能,默认配置为上海交通大学 (oc.sjtu.edu.cn),也兼容其他 Canvas LMS 实例。
cp skills/sjtu-canvas/config.example.json skills/sjtu-canvas/config.json
编辑 config.json,填入:
canvas_token: 从 Canvas → 设置 → 新建访问令牌 获取base_url: 你的 Canvas 地址(默认 https://oc.sjtu.edu.cn)save_dir: 课件下载目录(默认 ~/Downloads/Canvas课件)calendar_name: Apple 日历分类名(默认 Canvas作业)安装依赖:
pip3 install python-pptx pdfplumber requests
所有脚本位于 skills/sjtu-canvas/scripts/,用 python3 执行。
# 列出课程
python3 scripts/canvas_api.py courses
# 查看所有未来DDL
python3 scripts/canvas_api.py ddls
# 查看已出成绩
python3 scripts/canvas_api.py grades
Python 中调用:
import sys; sys.path.insert(0, "skills/sjtu-canvas/scripts")
from canvas_api import *
list_courses() # 课程列表
list_assignments(course_id) # 作业列表
get_all_upcoming_ddls() # 所有未来DDL
get_course_grades(course_id) # 成绩
list_course_files(course_id) # 课程文件
download_course_files(cid, name, dir) # 批量下载
list_discussions(course_id) # 讨论区
get_full_discussion(cid, topic_id) # 讨论详情
submit_assignment(cid, aid, [paths]) # 提交作业
# 提取单个文件
python3 scripts/file_extractor.py path/to/file.pptx
# 批量提取目录 → Markdown
python3 scripts/file_extractor.py ~/Downloads/Canvas课件/传热学 ~/Downloads/Canvas课件/传热学_md
支持格式: .pptx .pdf .docx .txt .md
cd skills/sjtu-canvas && python3 scripts/calendar_sync.py
自动创建日历分类,已存在的事件不会重复创建。通过 iCloud 同步到 iPhone。
canvas_api.download_course_files() 下载课程 PPT/PDFfile_extractor.extract_file() 提取文本canvas_api.get_assignment() 获取作业要求canvas_api.get_all_upcoming_ddls() 获取所有未来 DDLcalendar_sync.sync_ddls() 同步到 Apple 日历canvas_api.get_course_grades() 获取各科成绩canvas_api.download_course_files() 批量下载课件file_extractor.batch_extract() 批量提取为 Markdowncanvas_api.submit_assignment() 提交config.json 中的 base_url