Canvas
Интеграция с Canvas LMS — получение списка курсов и заданий с аутентификацией по API-токену.
Метаданные навыка
| Источник | Опционально — установка через vibeos skills install official/productivity/canvas |
| Путь | optional-skills/productivity/canvas |
| Версия | 1.0.0 |
| Автор | community |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | Canvas, LMS, Образование, Курсы, Задания |
Справочник: полный SKILL.md
к сведению
Ниже приведено полное описание навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.
Canvas LMS — Доступ к курсам и заданиям
Доступ только для чтения к Canvas LMS для просмотра курсов и заданий.
Скрипты
scripts/canvas_api.py— Python CLI для вызовов Canvas API
Настройка
- Войдите в свой экземпляр Canvas через браузер
- Перейдите в Аккаунт → Настройки (нажмите на иконку профиля, затем «Настройки»)
- Прокрутите до раздела Утверждённые интеграции и нажмите + Новый токен доступа
- Дайте токену имя (например, «VibeOS»), установите необязательный срок действия и нажмите Сгенерировать токен
- Скопируйте токен и добавьте в
${VIBEOS_HOME:-~/.vibeos}/.env:
CANVAS_API_TOKEN=ваш_токен_здесь
CANVAS_BASE_URL=https://вашашкола.instructure.com
Базовый URL — это адрес, который отображается в браузере при входе в Canvas (без завершающего слеша).
Использование
CANVAS="python $VIBEOS_HOME/skills/productivity/canvas/scripts/canvas_api.py"
# Список всех активных курсов
$CANVAS list_courses --enrollment-state active
# Список всех курсов (любое состояние)
$CANVAS list_courses
# Список заданий для конкретного курса
$CANVAS list_assignments 12345
# Список заданий, отсортированных по дате выполнения
$CANVAS list_assignments 12345 --order-by due_at
Формат вывода
list_courses возвращает:
[{"id": 12345, "name": "Введение в CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]
list_assignments возвращает:
[{"id": 67890, "name": "Домашнее задание 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)
# Список курсов
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 ограничивает количество запросов до ~700 за 10 минут; при достижении лимитов проверяйте заголовок
X-Rate-Limit-Remaining
Устранение неполадок
| Проблема | Решение |
|---|---|
| 401 Unauthorized | Токен недействителен или истёк — создайте новый в настройках Canvas |
| 403 Forbidden | У токена нет прав на этот курс |
| Пустой список курсов | Попробуйте --enrollment-state active или опустите флаг, чтобы увидеть все состояния |
| Неправильное учебное заведение | Убедитесь, что CANVAS_BASE_URL совпадает с URL в вашем браузере |
| Ошибки тайм-аута | Проверьте сетевое подключение к вашему экземпляру Canvas |