Получение курсов и заданий из системы Canvas LMS
Этот скилл предоставляет доступ только для чтения к данным Canvas LMS, позволяя перечислять курсы и задания через API Canvas.
Что понадобится
- Для работы требуются токен API Canvas и базовый URL, которые нужно указать в переменных окружения CANVAS_API_TOKEN и CANVAS_BASE_URL. Скилл работает на Linux, macOS и Windows.
- Базовый URL — это адрес, который отображается в вашем браузере при входе в Canvas, без завершающего слэша.
Как применить
Описания заданий усекаются до 500 символов, а поле html_url содержит ссылку на полную страницу задания в Canvas.
Canvas ограничивает количество запросов примерно до 700 за 10 минут; проверьте заголовок X-Rate-Limit-Remaining, если вы достигнете этого лимита.
Если появляется ошибка 401 Unauthorized, значит токен недействителен или истек — сгенерируйте новый в настройках Canvas. При ошибке 403 Forbidden токен не имеет прав на доступ к этому курсу. Если список курсов пуст, попробуйте параметр --enrollment-state active или опустите его, чтобы увидеть все состояния. Если отображается неправильное учебное заведение, убедитесь, что CANVAS_BASE_URL совпадает с URL в вашем браузере; ошибки времени ожидания означают необходимость проверить сетевое соединение с экземпляром Canvas.
- Войдите в свой экземпляр Canvas через браузер.
- Перейдите в раздел «Учётная запись» → «Настройки» (нажмите на значок профиля, затем «Настройки»).
- Прокрутите страницу до раздела «Разрешённые интеграции» и нажмите «+ Новый токен доступа».
- Назовите токен (например, «Hermes Agent»), укажите необязательный срок действия и нажмите «Сгенерировать токен».
- Скопируйте токен и добавьте его в
${HERMES_HOME:-~/.hermes}/.env.
CANVAS_API_TOKEN=your_token_here
CANVAS_BASE_URL=https://yourschool.instructure.com
Примеры использования: перечислить все активные курсы с параметром --enrollment-state active, перечислить все курсы в любом состоянии, перечислить задания для конкретного ID курса или отсортировать задания по дате дедлайна с помощью параметра --order-by due_at.
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, name, course_code, workflow_state, start_at и end_at.
[{"id": 12345, "name": "Intro to CS", "course_code": "CS101", "workflow_state": "available", "start_at": "...", "end_at": "..."}]
[{"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}]
Справочник по API (curl): для перечисления курсов используйте запрос GET с токеном Bearer к эндпоинту courses, а для перечисления заданий — запрос GET к эндпоинту assignments соответствующего курса, используя параметры per_page, order_by и enrollment_state.
# 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 list_courses; если возникает ошибка 401, помогите пользователю с настройкой.
Источник: nousresearch/hermes-agent и участники проекта. Лицензия: MIT.
Copyright (c) 2025 Nous Research
Перевод и редакционная адаптация: ClawCases.
>Ресурсы
>Похожие юзкейсы
Командная строка Apple Notes
Управляйте заметками Apple непосредственно из терминала с помощью CLI memo: создавайте, просматривайте, редактируйте, удаляйте, искайте заметки, перемещайте их между папками и экспортируйте в формате HTML или Markdown.
Автоматизируйте интерфейс macOS с помощью CLI-инструмента Peekaboo
Используйте Peekaboo для анализа интерфейса macOS, взаимодействия с нужным элементом и проверки результата. Примеры используют синтаксис версии 4; ознакомьтесь с актуальной документацией и справкой установленной команды. Для старых версий следуйте инструкциям соответствующей версии.
Используйте Chroma — открытую базу данных эмбеддингов для RAG и семантического поиска.
Chroma — это база данных эмбеддингов, разработанная специально для ИИ, для создания приложений на основе LLM с возможностью хранения памяти, таких как конвейеры RAG и семантический поиск.