canvas-course-builder
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseCanvas Course Builder
Canvas 课程构建工具
Build complete Canvas course structures from a natural language description, a JSON template, or by cloning an existing course. Creates modules with pages, assignments, discussions, and proper organization in one workflow.
可根据自然语言描述、JSON模板或克隆现有课程的方式,搭建完整的Canvas课程结构。通过单一工作流即可创建包含页面、作业、讨论区的模块,并完成合理组织。
Prerequisites
前置条件
- Canvas MCP server must be running and connected.
- Authenticated user must have instructor or designer role in the target course.
- Target course must already exist in Canvas (this skill populates it, does not create the course itself).
- Canvas MCP server 必须处于运行并已连接状态。
- 已认证用户必须在目标课程中拥有讲师或设计师权限。
- 目标课程必须已在Canvas中存在(本技能仅负责填充内容,不创建课程本身)。
Modes
运行模式
This skill operates in three modes:
本技能支持三种运行模式:
Mode 1: Build from Spec (default)
模式1:根据规格构建(默认)
The user describes the course structure in natural language or provides a structured spec.
用户以自然语言描述课程结构,或提供结构化的规格说明。
Mode 2: Build from Template
模式2:根据模板构建
Load a saved JSON template to scaffold a course.
加载已保存的JSON模板来搭建课程框架。
Mode 3: Clone from Existing Course
模式3:从现有课程克隆
Read the structure of Course A and replicate it into Course B.
读取课程A的结构,并将其复制到课程B中。
Steps
操作步骤
1. Determine Mode and Gather Input
1. 确定模式并收集输入
Ask the user how they want to build:
How would you like to build the course structure?
- Describe it -- Tell me the structure (e.g., "15 weeks, each with an overview page, assignment, and discussion")
- From template -- Load a saved template file
- Clone another course -- Copy structure from an existing course
For Mode 1 (Spec): Ask for:
- Target course (code or ID)
- Number of modules/weeks/units
- Module naming pattern (e.g., "Week N: [Topic]")
- Standard items per module (overview page, assignment, discussion, etc.)
- Any module-specific variations (midterm week, final project, etc.)
For Mode 2 (Template): Ask for the template file path. Parse the JSON template.
For Mode 3 (Clone): Ask for:
- Source course (code or ID)
- Target course (code or ID)
- Call to read the full structure
get_course_structure(source_course)
询问用户希望采用的构建方式:
您希望如何构建课程结构?
- 描述需求 -- 告诉我课程结构(例如:「15周,每周包含一个概述页面、一项作业和一个讨论区」)
- 使用模板 -- 加载已保存的模板文件
- 克隆现有课程 -- 复制另一门课程的结构
针对模式1(规格构建): 需询问:
- 目标课程(代码或ID)
- 模块/周/单元的数量
- 模块命名规则(例如:「第N周:[主题]」)
- 每个模块的标准内容(概述页面、作业、讨论区等)
- 模块的特殊变体(如期中周、期末项目周等)
针对模式2(模板构建): 询问模板文件路径,解析JSON模板。
针对模式3(克隆课程): 需询问:
- 源课程(代码或ID)
- 目标课程(代码或ID)
- 调用 读取完整课程结构
get_course_structure(source_course)
2. Generate Structure Preview
2. 生成结构预览
Build a preview of what will be created and present it to the user:
undefined构建即将创建的内容预览,并展示给用户:
undefinedCourse Build Plan: [Course Name]
课程构建计划:[课程名称]
Structure: 15 modules x 4 items each = 60 items total
结构:15个模块 × 4项内容 = 共60个条目
| Module | Page | Assignment | Discussion | SubHeader |
|---|---|---|---|---|
| Week 1: Introduction | Overview | HW 1 (10 pts) | Week 1 Forum | Materials |
| Week 2: Fundamentals | Overview | HW 2 (10 pts) | Week 2 Forum | Materials |
| ... | ... | ... | ... | ... |
| Week 14: Review | Overview | -- | Review Forum | Materials |
| Week 15: Final | Overview | Final Project (100 pts) | -- | Materials |
| 模块 | 页面 | 作业 | 讨论区 | 子标题 |
|---|---|---|---|---|
| 第1周:课程介绍 | 概述 | 作业1(10分) | 第1周讨论区 | 学习资料 |
| 第2周:基础知识 | 概述 | 作业2(10分) | 第2周讨论区 | 学习资料 |
| ... | ... | ... | ... | ... |
| 第14周:复习 | 概述 | -- | 复习讨论区 | 学习资料 |
| 第15周:期末 | 概述 | 期末项目(100分) | -- | 学习资料 |
Items to create:
待创建条目:
- 15 modules
- 15 overview pages
- 14 assignments
- 14 discussion topics
- 15 subheaders
- Total: 73 Canvas objects
Shall I proceed?
undefined- 15个模块
- 15个概述页面
- 14项作业
- 14个讨论主题
- 15个子标题
- 总计:73个Canvas对象
是否继续执行?
undefined3. User Approves or Modifies
3. 用户确认或修改
Wait for explicit approval. The user may:
- Approve as-is
- Request modifications (add/remove items, change naming, adjust points)
- Cancel
Do NOT proceed without approval.
等待用户明确批准。用户可选择:
- 直接批准
- 请求修改(添加/删除条目、更改命名、调整分数)
- 取消操作
未获得批准前请勿执行后续步骤。
4. Execute Creation
4. 执行创建操作
Create items in dependency order:
- Modules first: Call for each module (unpublished by default for safety)
create_module - Pages: Call for each overview page
create_page - Assignments: Call for each assignment (unpublished)
create_assignment - Discussions: Call for each forum
create_discussion_topic - Module items: Call to link each created item to its module
add_module_item
Track progress and report as you go:
Creating modules... 15/15 done
Creating pages... 15/15 done
Creating assignments... 14/14 done
Creating discussions... 14/14 done
Linking items to modules... 58/58 doneIf any creation fails, log the error and continue with remaining items.
按照依赖顺序创建条目:
- 先创建模块: 为每个模块调用 (默认未发布,保障安全)
create_module - 创建页面: 为每个概述页面调用
create_page - 创建作业: 为每个作业调用 (默认未发布)
create_assignment - 创建讨论区: 为每个论坛调用
create_discussion_topic - 关联模块条目: 调用 将每个创建的条目关联到对应模块
add_module_item
跟踪进度并实时汇报:
正在创建模块... 15/15 完成
正在创建页面... 15/15 完成
正在创建作业... 14/14 完成
正在创建讨论区... 14/14 完成
正在关联条目到模块... 58/58 完成若某条创建失败,记录错误并继续处理剩余条目。
5. Report Results
5. 汇报结果
undefinedundefinedBuild Complete: [Course Name]
构建完成:[课程名称]
Created:
已创建内容:
- 15 modules
- 15 overview pages
- 14 assignments
- 14 discussion topics
- 58 module items linked
- 15个模块
- 15个概述页面
- 14项作业
- 14个讨论主题
- 58个已关联的模块条目
Failed (0):
创建失败(0项):
None
无
Next Steps:
后续操作建议:
- All items created unpublished -- publish when ready
- Add content to overview pages
- Set due dates on assignments
- Run to verify structure
/canvas-course-qc
undefined- 所有创建的条目均为未发布状态 -- 准备就绪后再发布
- 为概述页面添加内容
- 为作业设置截止日期
- 运行 验证结构完整性
/canvas-course-qc
undefined6. Save as Template (Optional)
6. 保存为模板(可选)
After building, offer to save the structure as a reusable template:
Would you like to save this structure as a template for future courses?
If yes, call and save the output as a JSON file.
get_course_structure(target_course)构建完成后,可询问用户是否将当前结构保存为可复用模板:
是否需要将此结构保存为模板,以便未来课程使用?
若用户同意,调用 并将输出保存为JSON文件。
get_course_structure(target_course)MCP Tools Used
使用的MCP工具
| Tool | Purpose |
|---|---|
| Find available courses |
| Read source course for cloning; verify after build |
| Create each module |
| Create overview/content pages |
| Create assignments |
| Create discussion forums |
| Link items to modules |
| Publish modules when ready |
| 工具 | 用途 |
|---|---|
| 查询可用课程 |
| 读取源课程结构用于克隆;构建后验证结构 |
| 创建每个模块 |
| 创建概述/内容页面 |
| 创建作业 |
| 创建讨论论坛 |
| 将条目关联到模块 |
| 准备就绪后发布模块 |
Template Format
模板格式
Templates are JSON files with this structure:
json
{
"template_name": "Standard 15-Week Semester",
"modules": [
{
"name_pattern": "Week {n}: {topic}",
"items": [
{"type": "SubHeader", "title_pattern": "Week {n} Materials"},
{"type": "Page", "title_pattern": "Week {n} Overview"},
{"type": "Assignment", "title_pattern": "HW {n}", "points": 10},
{"type": "Discussion", "title_pattern": "Week {n} Discussion"}
]
}
],
"special_modules": [
{"position": 8, "name": "Midterm Review", "items": [{"type": "Page", "title": "Midterm Study Guide"}]},
{"position": 15, "name": "Final Project", "items": [{"type": "Assignment", "title": "Final Project", "points": 100}]}
]
}模板为JSON文件,结构如下:
json
{
"template_name": "标准15周学期课程",
"modules": [
{
"name_pattern": "第{n}周:{topic}",
"items": [
{"type": "SubHeader", "title_pattern": "第{n}周学习资料"},
{"type": "Page", "title_pattern": "第{n}周概述"},
{"type": "Assignment", "title_pattern": "作业{n}", "points": 10},
{"type": "Discussion", "title_pattern": "第{n}周讨论"}
]
}
],
"special_modules": [
{"position": 8, "name": "期中复习", "items": [{"type": "Page", "title": "期中复习指南"}]},
{"position": 15, "name": "期末项目", "items": [{"type": "Assignment", "title": "期末项目", "points": 100}]}
]
}Example
示例
User: "Build a 15-week structure for BADM 350 with a weekly overview page, homework, and discussion"
Agent: Generates preview, asks for approval, creates 60+ items.
User: "Clone the structure from CS 101 into CS 102"
Agent: Reads CS 101 structure, generates preview for CS 102, asks approval, creates matching structure.
用户: "为BADM 350课程搭建15周的结构,每周包含一个概述页面、作业和讨论区"
Agent: 生成预览,请求用户批准,创建60+个条目。
用户: "将CS 101的课程结构克隆到CS 102中"
Agent: 读取CS 101的结构,生成CS 102的预览,请求批准后创建匹配的结构。
Notes
注意事项
- All items are created unpublished by default for safety.
- Content is not copied when cloning -- only structure (module names, item types, organization).
- For content migration, copy page bodies using +
get_page_contentwith the body.create_page - Run after building to verify the structure is complete and consistent.
canvas-course-qc
- 所有创建的条目默认处于未发布状态,保障操作安全。
- 克隆时仅复制结构(模块名称、条目类型、组织方式),不复制内容。
- 如需迁移内容,可使用 +
get_page_content复制页面内容。create_page - 构建完成后运行 验证结构的完整性和一致性。
canvas-course-qc