Skip to main content
Glama
Golden2002

paeg-teaching-materials

by Golden2002

paeg-teaching-materials

Python License: MIT Tests

日本語 | English


これは何か

paeg-teaching-materials は教材制作プラグイン——6 種類の教材ジェネレーター + 統一実行エントリ + MCP server。

教材タイプ

機能

生成方法

PPT

プレゼン資料アウトライン(6x6 原則)+ オプションの python-pptx レンダリング

LLM アウトライン → レンダリング

講義資料

6 段構成(学習目標/導入/新規学習/定着/まとめ/宿題)

LLM で markdown を生成

講演原稿

セグメント別ナレーション(TTS 対応可)

LLM で生成

マインドマップ

中心テーマ→3〜5 ブランチ→2〜4 サブブランチ

LLM でインデントリストを生成

授業動画

絵コンテ脚本(8〜15 秒/カット、音声と映像の同期、フック+recap)

LLM で JSON を生成

Manim アニメーション

数学アニメーションコード + オプションの mp4 レンダリング

LLM コード → Manim

PAEG 教育エージェント教材システム(v0.87-§3.91 イテレーション)に由来し、ホスト依存ゼロの独立プラグインへと改良された。

Related MCP server: Learn Shell

主な特徴

  • ネットワーク型連携アーキテクチャ(トップツール基準 ⭐):10 個の機能ノード(資料調査/アウトライン/PPT/講義資料/講演原稿/マインドマップ/動画/Manim/学習方法/学習計画)——それぞれ独立して使用できるだけでなく、他の機能の前提段階でもある

  • 拡張可能なジェネレーターレジストリ:MaterialRegistry.register("自定义类型", generator) で即拡張

  • ホスト依存ゼロ:6 つの Protocol 抽象(LLMCallable/RefinerProtocol/HandoutGenerator/ScriptGenerator/MindmapGenerator/ResourceProvider)+ Null 弱モード

  • 統一実行エントリ:execute(name, args) は constraint_engine に準拠(JSON 契約、決して例外を投げない)

  • MCP server 直接インストール:pip install + MCP 設定宣言で即接続(15 ツール)

  • 言語規範連携:教材出力は自動的に L0 文病修正を通過(paeg-lang-style を再利用)

  • 品質チェック + レビュー:決定的構造チェック + LLM 5 次元スコアリング

ネットワーク型連携アーキテクチャ(機能は独立、かつ前提段階でもある ⭐)

ツール内部は交錯するネットワーク配線と連携——各機能はファーストクラスノード:

research(查资料·广播前置)
   ├──→ outline(大纲)──→ ppt(PPT 制作)
   ├──→ script(讲稿)──→ video(教学视频)
   ├──→ handout / manim / method / study_plan / mindmap(可选)

3 モード依存エッジ:

エッジタイプ

意味

例

broadcast(ブロードキャスト)

ソース成果物がネットワーク全体で消費される

資料調査 → すべての生成

directed(有向)

強力な前提

アウトライン→PPT、講演原稿→動画

optional(任意)

欠落時はデグラデーション

資料→マインドマップ

二重公開:各機能は独立した MCP ツール(execute_tool)であると同時に、自動オーケストレーション(execute_pipeline が依存グラフに従って前提段階を展開)にも対応し、| によるチェーン結合も可能:

from paeg_teaching_materials import MaterialRegistry
from paeg_teaching_materials.tools import ResearchTool, OutlineTool, PptTool

# 1. 独立调用
result = MaterialRegistry.execute_plan("ppt", ctx, {"topic": "导数"})
#   自动执行: research → outline → ppt(查资料是前置环节)

# 2. 链式组合(LangChain Runnable 模式)
pipeline = ResearchTool() | OutlineTool() | PptTool()  # 组合结果仍是 Tool

# 3. 依赖图自省(MCP: list_dependencies)
graph = MaterialRegistry.get_resolver().dependency_graph()

中間成果物(MaterialContext 型付き Blackboard):resources(資料調査・append 累積)/ outline / lecture_script / ppt_outline / completed_stages(段階マーカー・union)——前提段階の成果物は下流で自動的に消費される。

インストール

pip install -e /path/to/paeg-teaching-materials
# 可选依赖:
pip install -e "paeg-teaching-materials[pptx]"    # PPT 渲染
pip install -e "paeg-teaching-materials[manim]"   # Manim 渲染
pip install -e "paeg-teaching-materials[mcp]"     # MCP server

Python 3.9+ が必要。

クイックスタート

from paeg_teaching_materials import MaterialRegistry, execute

# 1. 注入你的 LLM(任何项目接入点)
def my_llm(system, user, max_tokens=2000, temperature=0.7):
    return call_your_llm(system, user, max_tokens=max_tokens)
MaterialRegistry.inject(llm=my_llm)

# 2. 生成物料(统一执行入口)
result = execute("generate_handout", {"topic": "一元二次方程", "subject": "数学"})
# → {"material_type": "handout", "topic": "...", "ok": true, "output": "## 教学目标..."}

# 3. 质量检查 + 评审
from paeg_teaching_materials import check_material_structure, judge_material
issues = check_material_structure(result["output"], "handout")
score = judge_material(result["output"], "一元二次方程")

MCP server 方式での接続(MCP のように直接インストールしてすぐに使える)

# 方式 1:console_scripts 入口(pip install 后)
paeg-teaching-materials-mcp

# 方式 2:python -m 入口(源码运行)
python -m paeg_teaching_materials.mcp_server

MCP クライアント設定宣言(config/mcp_servers.json):

{
  "mcpServers": {
    "paeg-teaching-materials": {
      "command": "python",
      "args": ["-m", "paeg_teaching_materials.mcp_server"],
      "cwd": "D:/wbo-workspace/paeg_project/paeg-teaching-materials"
    }
  }
}

公開される MCP ツール(15 個):

ツール名

機能

generate_ppt

PPT アウトライン生成

generate_handout

講義資料生成

generate_script

講演原稿生成

generate_mindmap

マインドマップ生成

generate_video_script

授業動画の絵コンテ脚本

generate_manim

Manim 数学アニメーションコード

material_quality_check

教材の決定的構造チェック

material_judge

教材の 5 次元レビュー

list_material_types

教材タイプの自己検査

build_material_prompt

教材プロンプトの組み立て

check_language

言語規範チェック

normalize_material

言語規範ゲートキーパー

execute_tool

ネットワーク型:機能ノードの独立実行

execute_pipeline

ネットワーク型:前提段階の自動オーケストレーション

list_dependencies

ネットワーク型:機能依存グラフの自己検査

外部プロジェクト連携ガイド

シナリオ A:統一実行エントリのみ使用(推奨)

from paeg_teaching_materials import execute
result = execute("generate_ppt", {"topic": "微积分", "subject": "数学"})

シナリオ B:独自 LLM の注入(強実装)

from paeg_teaching_materials import MaterialRegistry
MaterialRegistry.inject(llm=my_llm, refiner=my_refiner)
result = MaterialRegistry.generate("handout", "力学", "物理")

シナリオ C:カスタム教材タイプの登録(拡張性)

from paeg_teaching_materials import MaterialRegistry
from paeg_teaching_materials.generators.base import Generator

class QuizGenerator(Generator):
    material_type = "quiz"
    def generate(self, topic, subject="通用", learner_id="anon", **kw):
        return {"material_type": "quiz", "topic": topic, "ok": True, "output": "..."}

MaterialRegistry.register("quiz", generator=QuizGenerator())
# 现在 execute("generate_quiz", {...}) 可用

シナリオ D:MCP server(コード不要のブリッジ)

pip install + MCP 設定宣言(上記参照)——任意の MCP クライアント(Claude/OpenCode/自社開発)から直接呼び出し可能。

拡張性

拡張ポイント

方法

仕組み

教材タイプ

MaterialRegistry.register("type", generator)

レジストリによる動的拡張

LLM バックエンド

MaterialRegistry.inject(llm=...)

Protocol 注入

言語規範

MaterialRegistry.inject(refiner=...)

RefinerProtocol(デフォルトで paeg-lang-style L0 を再利用)

リソース検索

MaterialRegistry.inject(resources=...)

ResourceProvider

品質レビュー

LLM 注入後、5 次元評価が自動有効化

judge_material

レンダリングバックエンド

pptx/manim オプショナル依存

extras_require

保守性

  • ホスト依存ゼロ:コアパッケージは stdlib のみに依存。ホスト機能はすべて Protocol 注入

  • 統一契約:execute は JSON 文字列を返す(MCP 契約)。失敗しても例外を投げない

  • 弱モード:ホストなしで動作可能(Null ジェネレーターがプレースホルダー)。テストとデモに便利

  • 言語規範連携:教材出力は自動的に L0 文病修正を通過

  • 41 項目のテスト:公開 API/弱モード/注入/execute/品質/MCP を全カバー

アーキテクチャ

宿主系统(任何 Python 项目 / 智能体)
  MaterialRegistry.inject(llm=..., refiner=..., resources=...)  <- 宿主注入
  execute("generate_handout", {...})                            <- 统一入口
        |
        | 零宿主依赖(Protocol 抽象)
        v
paeg_teaching_materials(独立插件)
  +-------------------+  +-------------------+  +----------------+
  | registry.py       |  | generators/       |  | quality/       |
  | MaterialRegistry  |  | ppt/handout/...   |  | checks/judge   |
  +---------+---------+  +---------+---------+  +----------------+
            |                      |
            v                      v
  +-----------------------------------------------------------+
  | executor.py(execute 统一入口,JSON 契约)                   |
  | mcp_server.py(FastMCP 15 工具,stdio 直接安装)            |
  +-----------------------------------------------------------+

PAEG メインプロジェクトとの統合

PAEG は services/material_bridge.py 経由で接続(ホスト注入 + 無破壊フォールバック):

from services.material_bridge import install_material_plugin
install_material_plugin()   # server.py 启动时调用一次
# 注入 PAEG LLM(subagents._safe_chat)+ Refiner(paeg.refiner)+ 资源(library)
# 插件未安装 → 静默回退 PAEG 原物料实现(旧文件永不删除)

テスト

python -m pytest tests/ -q
# 22 项:公共 API / 弱模式 / 注入 / execute / 质量 / MCP server

コントリビューションガイド

コントリビューション歓迎!

  • 教材タイプの追加:Generator 基底クラスを継承 + MaterialRegistry.register()

  • 品質チェックの追加:quality/checks.py に関数を追加

  • コードスタイル:既存のモジュール構造 + コメント規約に従う

謝辞

  • PAEG 教育エージェント——本プラグインはその教材制作システム(§3.87-§3.100)から抽出したもの

  • paeg-lang-style——言語規範プラグイン(L0 連携)

  • Presenton / ppt-agent-skills——LLM+レンダリングパイプラインのパラダイム

  • ManimTrainer——Manim レンダリング閉ループのパラダイム

ライセンス

MIT © 2026 PAEG Team

Related MCP Connectors

Related MCP Servers