canvas-course-builder

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Canvas 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?
  1. Describe it -- Tell me the structure (e.g., "15 weeks, each with an overview page, assignment, and discussion")
  2. From template -- Load a saved template file
  3. 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
    get_course_structure(source_course)
    to read the full structure
询问用户希望采用的构建方式:
您希望如何构建课程结构?
  1. 描述需求 -- 告诉我课程结构(例如:「15周,每周包含一个概述页面、一项作业和一个讨论区」)
  2. 使用模板 -- 加载已保存的模板文件
  3. 克隆现有课程 -- 复制另一门课程的结构
针对模式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
构建即将创建的内容预览,并展示给用户:
undefined

Course Build Plan: [Course Name]

课程构建计划:[课程名称]

Structure: 15 modules x 4 items each = 60 items total

结构:15个模块 × 4项内容 = 共60个条目

ModulePageAssignmentDiscussionSubHeader
Week 1: IntroductionOverviewHW 1 (10 pts)Week 1 ForumMaterials
Week 2: FundamentalsOverviewHW 2 (10 pts)Week 2 ForumMaterials
...............
Week 14: ReviewOverview--Review ForumMaterials
Week 15: FinalOverviewFinal 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对象
是否继续执行?
undefined

3. 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:
  1. Modules first: Call
    create_module
    for each module (unpublished by default for safety)
  2. Pages: Call
    create_page
    for each overview page
  3. Assignments: Call
    create_assignment
    for each assignment (unpublished)
  4. Discussions: Call
    create_discussion_topic
    for each forum
  5. Module items: Call
    add_module_item
    to link each created item to its module
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 done
If any creation fails, log the error and continue with remaining items.
按照依赖顺序创建条目:
  1. 先创建模块: 为每个模块调用
    create_module
    (默认未发布,保障安全)
  2. 创建页面: 为每个概述页面调用
    create_page
  3. 创建作业: 为每个作业调用
    create_assignment
    (默认未发布)
  4. 创建讨论区: 为每个论坛调用
    create_discussion_topic
  5. 关联模块条目: 调用
    add_module_item
    将每个创建的条目关联到对应模块
跟踪进度并实时汇报:
正在创建模块... 15/15 完成
正在创建页面... 15/15 完成
正在创建作业... 14/14 完成
正在创建讨论区... 14/14 完成
正在关联条目到模块... 58/58 完成
若某条创建失败,记录错误并继续处理剩余条目。

5. Report Results

5. 汇报结果

undefined
undefined

Build 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
    /canvas-course-qc
    to verify structure
undefined
  • 所有创建的条目均为未发布状态 -- 准备就绪后再发布
  • 为概述页面添加内容
  • 为作业设置截止日期
  • 运行
    /canvas-course-qc
    验证结构完整性
undefined

6. 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
get_course_structure(target_course)
and save the output as a JSON file.
构建完成后,可询问用户是否将当前结构保存为可复用模板:
是否需要将此结构保存为模板,以便未来课程使用?
若用户同意,调用
get_course_structure(target_course)
并将输出保存为JSON文件。

MCP Tools Used

使用的MCP工具

ToolPurpose
list_courses
Find available courses
get_course_structure
Read source course for cloning; verify after build
create_module
Create each module
create_page
Create overview/content pages
create_assignment
Create assignments
create_discussion_topic
Create discussion forums
add_module_item
Link items to modules
update_module
Publish modules when ready
工具用途
list_courses
查询可用课程
get_course_structure
读取源课程结构用于克隆;构建后验证结构
create_module
创建每个模块
create_page
创建概述/内容页面
create_assignment
创建作业
create_discussion_topic
创建讨论论坛
add_module_item
将条目关联到模块
update_module
准备就绪后发布模块

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_content
    +
    create_page
    with the body.
  • Run
    canvas-course-qc
    after building to verify the structure is complete and consistent.
  • 所有创建的条目默认处于未发布状态,保障操作安全。
  • 克隆时仅复制结构(模块名称、条目类型、组织方式),不复制内容。
  • 如需迁移内容,可使用
    get_page_content
    +
    create_page
    复制页面内容。
  • 构建完成后运行
    canvas-course-qc
    验证结构的完整性和一致性。