Canvas

Получение курсов и заданий Canvas LMS через API-токен.

Метаданные навыка

ИсточникOptional — 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

инфо

Ниже приведено полное определение навыка, которое Hermes Agent загружает при его активации. Именно это агент получает в качестве инструкций, когда навык включён.

Canvas LMS — доступ к курсам и заданиям

Доступ к Canvas LMS только на чтение: просмотр курсов и заданий.

Скрипты

  • scripts/canvas_api.py — Python CLI для вызовов Canvas API

Настройка

  1. Войдите в свой экземпляр Canvas через браузер
  2. Перейдите в Account → Settings (нажмите на иконку профиля, затем Settings)
  3. Прокрутите до раздела Approved Integrations и нажмите + New Access Token
  4. Назовите токен (например, “Hermes Agent”), при желании задайте срок действия и нажмите Generate Token
  5. Скопируйте токен и добавьте в ${HERMES_HOME:-~/.hermes}/.env:
CANVAS_API_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com

Base 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 ограничивает частоту запросов примерно до 700 в 10 минут; при достижении лимита проверяйте заголовок X-Rate-Limit-Remaining

Устранение неполадок

ПроблемаРешение
401 UnauthorizedТокен недействителен или истёк — перевыпустите его в Canvas Settings
403 ForbiddenТокен не имеет прав на этот курс
Пустой список курсовПопробуйте --enrollment-state active или уберите флаг, чтобы увидеть все состояния
Неправильное учреждениеПроверьте, что CANVAS_BASE_URL совпадает с адресом в браузере
Ошибки таймаутаПроверьте сетевую доступность вашего экземпляра Canvas
перевод и редактура:

обновлено

⌕ ESC