跳到主要內容

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

設置

  1. 在瀏覽器中登錄到你的 Canvas 實例
  2. 前往 Account → Settings(點擊你的個人資料圖標,然後選擇 Settings)
  3. 滾動到 Approved Integrations 並點擊 + New Access Token
  4. 為令牌命名(例如,“Hermes Agent”),設置可選的過期時間,然後點擊 Generate Token
  5. 複製令牌並將其添加到 ~/.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 實例的網絡連接