mcpField
C
canvas-course-builder

canvas-course-builder

github.com/vishalsachdevその他308209 回インストール1 日前に更新
リポジトリ

canvas-course-builder について

canvas-course-builderは、自然言語の指定、JSONテンプレート、既存コースを基にCanvasのコース構成を作るスキルです。コース設計者向けで、作成前に計画を提示して承認を得ます。

主な機能

  1. 01説明からコース構成を作成
  2. 02JSONテンプレートから構成を生成
  3. 03既存コースの構成を複製
  4. 04作成前に計画を確認
  5. 05構成をテンプレートとして保存

活用シーン

  1. 01新学期の週次モジュールを準備
  2. 02テンプレートからコースの骨組みを作成
  3. 03別コースに構成を複製
  4. 04再利用するコース構成を保存

MCP 対応

接続済みのCanvas MCP サーバーが必要で、コース検索、構成取得、モジュールやコンテンツの作成にそのツールを使います。複製されるのは構成のみで、コンテンツは含まれません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/vishalsachdev/canvas-mcp --skill canvas-course-builder

インストール後、Claude Code で/canvas-course-builderを入力して読み込まれたか確認します。

詳細

Canvas コースビルダー

自然言語の説明、JSON テンプレート、または既存のコースの複製から、Canvas のコース構成を丸ごと作成します。1 つのワークフローで、ページ、課題、ディスカッションを含むモジュールを作成し、適切に整理します。

前提条件

  • Canvas MCP server が起動し、接続されている必要があります。
  • 認証済みユーザーは、対象コースで instructor または designer ロールを持っている必要があります。
  • 対象コースは Canvas にすでに存在している必要があります(このスキルはコースに内容を追加しますが、コース自体は作成しません)。

モード

このスキルは 3 つのモードで動作します。

モード 1:仕様から作成(デフォルト)

ユーザーが自然言語でコース構成を説明するか、構造化された仕様を提示します。

モード 2:テンプレートから作成

保存済みの JSON テンプレートを読み込み、コースのひな形を作成します。

モード 3:既存のコースを複製

コース A の構成を読み取り、コース B に複製します。

手順

1. モードを決定して入力を収集する

コース構成の作成方法をユーザーに尋ねます。

コース構成をどのように作成しますか?

  1. 説明する -- 構成を教えてください(例:「15 週間で、各週に概要ページ、課題、ディスカッションを設ける」)
  2. テンプレートから -- 保存済みのテンプレートファイルを読み込む
  3. 別のコースを複製する -- 既存コースの構成をコピーする

モード 1(仕様)の場合: 次の情報を尋ねます。

  • 対象コース(コードまたは ID)
  • モジュール/週/単元の数
  • モジュールの命名パターン(例:「第 N 週:[トピック]」)
  • 各モジュールに共通して含める項目(概要ページ、課題、ディスカッションなど)
  • モジュールごとの例外(中間試験の週、最終プロジェクトなど)

モード 2(テンプレート)の場合: テンプレートファイルのパスを尋ねます。JSON テンプレートを解析します。

モード 3(複製)の場合: 次の情報を尋ねます。

  • コピー元コース(コードまたは ID)
  • 対象コース(コードまたは ID)
  • get_course_structure(source_course) を呼び出して、全体の構成を読み取る
2. 構成のプレビューを生成する

作成する内容のプレビューを作成し、ユーザーに提示します。

## Course Build Plan: [Course Name]

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

| 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 |

### Items to create:
- 15 modules
- 15 overview pages
- 14 assignments
- 14 discussion topics
- 15 subheaders
- Total: 73 Canvas objects

Shall I proceed?
3. ユーザーによる承認または変更

明示的な承認を待ちます。ユーザーは次の操作を行えます。

  • そのまま承認する
  • 変更を依頼する(項目の追加/削除、名前の変更、配点の調整)
  • キャンセルする

承認なしに先へ進まないでください。

4. 作成を実行する

依存関係の順に項目を作成します。

  1. まずモジュール: 各モジュールについて create_module を published=false で呼び出します(モジュールはデフォルトで公開されます)
  2. ページ: 各概要ページについて create_page を published=false で呼び出します(ページはデフォルトで公開されます)
  3. 課題: 各課題について create_assignment を呼び出します(未公開)
  4. ディスカッション: 各フォーラムについて create_discussion_topic を呼び出します
  5. モジュール項目: add_module_item を呼び出して、作成した各項目をモジュールにリンクします

進捗を追跡しながら、随時報告します。

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

作成に失敗した項目がある場合は、エラーを記録し、残りの項目の作成を続けます。

5. 結果を報告する
## Build Complete: [Course Name]

### Created:
- 15 modules
- 15 overview pages
- 14 assignments
- 14 discussion topics
- 58 module items linked

### Failed (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
6. テンプレートとして保存する(任意)

作成後、構成を再利用可能なテンプレートとして保存するかユーザーに尋ねます。

この構成を、今後のコースで使えるテンプレートとして保存しますか?

はいの場合は、get_course_structure(target_course) を呼び出し、出力を JSON ファイルとして保存します。

使用する MCP ツール

ツール用途
list_courses利用可能なコースを検索する
get_course_structure複製するコピー元コースを読み取る。作成後の確認にも使用する
create_module各モジュールを作成する
create_page概要/コンテンツページを作成する
create_assignment課題を作成する
create_discussion_topicディスカッションフォーラムを作成する
add_module_item項目をモジュールにリンクする
update_module準備ができたらモジュールを公開する

テンプレート形式

テンプレートは、次の構造を持つ 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}]}
  ]
}

例

ユーザー:「BADM 350 に、毎週の概要ページ、宿題、ディスカッションを含む 15 週間の構成を作成して」

エージェント: プレビューを生成し、承認を求めてから、60 件以上の項目を作成します。

ユーザー:「CS 101 の構成を CS 102 に複製して」

エージェント: CS 101 の構成を読み取り、CS 102 用のプレビューを生成して承認を求め、一致する構成を作成します。

メモ

  • モジュールとページは、published=false が渡された場合にのみ未公開になります(どちらもデフォルトでは公開されます)。create_assignment はデフォルトで未公開になります。create_discussion_topic は作成時に必ず公開されます。ディスカッションをまだ学生に見せたくない場合は、今すぐ作成するのではなく、delayed_post_at を指定してスケジュールしてください。
  • クローン作成時にコンテンツはコピーされません。コピーされるのは構造(モジュール名、アイテムの種類、構成)のみです。
  • コース間でコンテンツ(構造だけではなく)をコピーするには、create_content_migration(プレビューと確認トークン)を使用し、get_content_migration_status で状態を確認してください。数ページだけなら、get_page_content と create_page によるページごとのコピーが適しています。
  • 構築後に canvas-course-qc を実行して、構造が完全かつ一貫していることを確認してください。

コメント