Canvas
Canvas LMS 集成 — 使用 API 令牌認證獲取已註冊的課程和作業。
技能元數據
| 來源 | 可選 — 使用 hermes skills install official/productivity/canvas 安裝 |
| 路徑 | optional-skills/productivity/canvas |
| 版本 | 1.0.0 |
| 作者 | community |
| 許可證 | MIT |
| 標籤 | Canvas, LMS, Education, Courses, Assignments |
參考:完整 SKILL.md
信息
以下是 Hermes 在觸發此技能時加載的完整技能定義。這是技能激活時代理所看到的指令。
Canvas LMS — 課程與作業訪問
對 Canvas LMS 的只讀訪問權限,用於列出課程和作業。
腳本
scripts/canvas_api.py— 用於 Canvas API 調用的 Python CLI
設置
- 在瀏覽器中登錄到你的 Canvas 實例
- 前往 Account → Settings(點擊你的個人資料圖標,然後選擇 Settings)
- 滾動到 Approved Integrations 並點擊 + New Access Token
- 為令牌命名(例如,“Hermes Agent”),設置可選的過期時間,然後點擊 Generate Token
- 複製令牌並將其添加到
~/.hermes/.env:
CANVAS_API_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com
基礎 URL 是你登錄 Canvas 時在瀏覽器中顯示的地址(末尾不帶斜槓)。
用法
CANVAS="python $HERMES_HOME/skills/productivity/canvas/scripts/canvas_api.py"
# List all active courses
$CANVAS list_courses --enrollment-state active
# List all courses (any state)
$CANVAS list_courses
# List assignments for a specific course
$CANVAS list_assignments 12345
# List assignments ordered by due date
$CANVAS list_assignments 12345 --order-by due_at
輸出格式
list_courses 返回:
[{"id": 12345, "name": "Intro to CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]
list_assignments 返回:
[{"id": 67890, "name": "Homework 1", "due_at": "2025-02-15T23:59:00Z", "points_possible": 100, "submission_types": ["online_upload"], "html_url": "...", "description": "...", "course_id": 12345}]
注意:作業描述被截斷為 500 個字符。html_url 字段鏈接到 Canvas 中的完整作業頁面。
API 參考 (curl)
# List courses
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses?enrollment_state=active&per_page=10"
# List assignments for a course
curl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \
"$CANVAS_BASE_URL/api/v1/courses/COURSE_ID/assignments?per_page=10&order_by=due_at"
Canvas 使用 Link 頭進行分頁。Python 腳本會自動處理分頁。
規則
- 此技能為 只讀 — 它僅獲取數據,從不修改課程或作業
- 首次使用時,通過運行
$CANVAS list_courses驗證身份驗證 — 如果因 401 錯誤失敗,請指導用戶完成設置 - Canvas 的速率限制約為每 10 分鐘 700 次請求;如果達到限制,請檢查
X-Rate-Limit-Remaining頭
故障排除
| 問題 | 解決方法 |
|---|---|
| 401 Unauthorized | 令牌無效或已過期 — 在 Canvas 設置中重新生成 |
| 403 Forbidden | 令牌缺乏對此課程的權限 |
| 課程列表為空 | 嘗試使用 --enrollment-state active 或省略該標誌以查看所有狀態 |
| 機構錯誤 | 驗證 CANVAS_BASE_URL 是否與瀏覽器中的 URL 匹配 |
| 超時錯誤 | 檢查到你的 Canvas 實例的網絡連接 |