Canvas
API トークンで Canvas LMS の講座と課題を取得します。
skill の情報
| 提供元 | 追加インストール — hermes skills install official/productivity/canvas で入れます |
| パス | optional-skills/productivity/canvas |
| バージョン | 1.0.0 |
| 作者 | community |
| ライセンス | MIT |
| 対応プラットフォーム | linux, macos, windows |
| タグ | Canvas, LMS, Education, Courses, Assignments |
参考: SKILL.md 全文
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_HOME:-~/.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 スクリプトのほうは、ページ送りを自動で処理します。
ルール
- この skill は読み取り専用です。データを取ってくるだけで、講座や課題を書き換えることはありません
- 最初に使うときは
$CANVAS list_coursesを実行して認証を確かめます。401 で失敗したら、設定の手順を案内してください - Canvas には 10 分あたり 700 リクエスト程度の制限があります。上限に当たりそうなら
X-Rate-Limit-Remainingヘッダーを見てください
困ったとき
| 症状 | 対処 |
|---|---|
| 401 Unauthorized | トークンが無効か期限切れです。Canvas の Settings で作り直してください |
| 403 Forbidden | その講座に対する権限がトークンにありません |
| 講座が空で返る | --enrollment-state active を付けるか、逆にフラグを外して全状態を見てください |
| 学校が違う | CANVAS_BASE_URL がブラウザの URL と一致しているか確かめてください |
| タイムアウトする | 自分の Canvas への通信ができているか確かめてください |