Canvas - интеграция с Canvas LMS для чтения курсов и заданий
Интеграция с Canvas LMS для получения списка курсов и заданий через API token authentication.
Метаданные навыка
Заголовок раздела «Метаданные навыка»| Источник | Optional - устанавливается через hermes skills install official/productivity/canvas |
| Путь | optional-skills/productivity/canvas |
| Версия | 1.0.0 |
| Автор | community |
| Лицензия | MIT |
| Теги | Canvas, LMS, Education, Courses, Assignments |
Справка: полный SKILL.md
Заголовок раздела «Справка: полный SKILL.md»Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Именно эти инструкции агент видит во время работы навыка.
Canvas LMS - доступ к курсам и заданиям
Заголовок раздела «Canvas LMS - доступ к курсам и заданиям»Read-only доступ к Canvas LMS для просмотра курсов и заданий.
Скрипты
Заголовок раздела «Скрипты»scripts/canvas_api.py- Python CLI для вызовов Canvas API
Настройка
Заголовок раздела «Настройка»- Войдите в Canvas в браузере
- Откройте Account -> Settings
- Прокрутите до Approved Integrations и нажмите + New Access Token
- Назовите токен, при необходимости задайте срок действия и нажмите Generate Token
- Скопируйте токен и добавьте его в
~/.hermes/.env:
CANVAS_API_TOKEN=your_token_hereCANVAS_BASE_URL=https://yourschool.instructure.comCANVAS_BASE_URL - это адрес, который вы видите в браузере после входа в Canvas, без завершающего /.
Использование
Заголовок раздела «Использование»CANVAS="python $HERMES_HOME/skills/productivity/canvas/scripts/canvas_api.py"
# Список всех активных курсов$CANVAS list_courses --enrollment-state active
# Список всех курсов$CANVAS list_courses
# Список заданий по конкретному курсу$CANVAS list_assignments 12345
# Список заданий, отсортированный по 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 Reference (curl)
Заголовок раздела «API Reference (curl)»# Список курсовcurl -s -H "Authorization: Bearer $CANVAS_API_TOKEN" \ "$CANVAS_BASE_URL/api/v1/courses?enrollment_state=active&per_page=10"
# Список заданий для курса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 rate-limit около 700 запросов за 10 минут; при необходимости проверяйте
X-Rate-Limit-Remaining
Устранение неполадок
Заголовок раздела «Устранение неполадок»| Problem | Fix |
|---|---|
| 401 Unauthorized | Токен неверный или истек - создайте новый в Canvas Settings |
| 403 Forbidden | У токена нет доступа к этому курсу |
| Empty course list | Попробуйте --enrollment-state active или уберите флаг |
| Wrong institution | Проверьте, что CANVAS_BASE_URL совпадает с URL в браузере |
| Timeout errors | Проверьте доступность вашего Canvas instance |