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
Настройка
- Войдите в свой экземпляр 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
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 |