
Concept Extractor
- 4 installs
- Updated July 30, 2026
- naoterumaker/manabi-skills
Helps with ai & agent building tasks.
About
concept-extractor is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted development.
- concept-extractor
- AI & Agent Building
- AI-coding skill
Concept Extractor by the numbers
- 4 all-time installs (skills.sh)
- Ranked #13,372 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/naoterumaker/manabi-skills --skill concept-extractorAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 4 |
|---|---|
| Last updated | July 30, 2026 |
| Repository | naoterumaker/manabi-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
Concept Extractor
推奨実行モデル & 並列化
モデル: sonnet 必須(opusはコスト3-5倍。精度差は小さい)
並列化: 章をN分割してN Agent並列起動
| 章数 | 推奨並列度 | 各Agent担当章数 |
|---|---|---|
| ~12章 | 2 Agent | 6章ずつ |
| ~24章 | 4 Agent | 6章ずつ |
| ~36章 | 4-6 Agent | 6-9章ずつ |
| 36章+ | 6 Agent | 6-10章ずつ |
Agent起動テンプレート:
Agent(
model: "sonnet",
mode: "bypassPermissions",
run_in_background: true,
prompt: "Process chapters NN-NN of [bundle_path]..."
)注意: visual-indexerは画像を全Read するため最もコスト重い。必ずsonnet+並列。opusで全章順次は禁じ手。
---
WHAT
講座のcourse-bundle(manifest.json + 各章のmanual.md/transcript.txt)を入力として、6カテゴリの構造化知識を抽出する。
出力ファイル:
| ファイル | 粒度 | 内容 |
|---|---|---|
knowledge/chXX-knowledge.json | 章単位 | concepts, key_quotes, tacit_knowledge, teaching_patterns, cross_references, resource_references |
knowledge/knowledge-graph.json | コース全体 | 前提関係グラフ、概念階層、横断テーマ |
スコープ外:
- 画像・スライドの分析(visual-indexerの責務)
- 手順・ワークフローの抽出(procedure-extractorの責務)
- トランスクリプトの作成・整形(course-ingestの責務)
---
WHY
トランスクリプトは長大で非構造的。そのままではRAGに使えず、マニュアル生成にも活用しにくい。概念・定義・暗黙知を構造化することで:
1. マニュアル生成スキルが正確な定義を引用できる 2. 前提関係グラフにより学習順序を最適化できる 3. 話者の暗黙知が明示化され、AIエージェントのナレッジベースに組み込める
---
HOW
入力要件
| 必須 | 内容 |
|---|---|
| manifest.json | course-ingestが生成したコース構成ファイル |
| chapters/chXX/manual.md または transcript.txt | 各章のソーステキスト(下記優先順位参照) |
manifest.jsonが見つからない場合はユーザーに確認し、course-ingestの実行を提案すること。
入力の優先順位
各章について、以下の優先順位でソースを選択する:
| 優先度 | ソース | 理由 |
|---|---|---|
| 1 | chapters/{id}/manual.md | utage-manual出力。編集済み・構造化済み・画像紐付け済み |
| 2 | chapters/{id}/page_text.md | 講座ページの説明文。補足情報を含む |
| 3 | chapters/{id}/transcript.txt | 生トランスクリプト。マニュアルがない場合のフォールバック |
マニュアルがある場合はマニュアルを一次ソースとし、トランスクリプトは マニュアルに含まれていない情報の補完に使う。
BLOCKER: ソーステキスト全文読み込み
各章のmanual.md(またはtranscript.txt)は必ず全文を読んでから抽出を開始すること。
最初の50行だけ読んで始めてはならない。Read toolでoffset/limitを使う場合は、
必ず末尾まで複数回に分けて読み切ること。
---
6つの抽出カテゴリ
| カテゴリ | 何を抽出するか | 例 |
|---|---|---|
| concept | 名前+定義+具体例 | 「AIマインド=脱AI責思考。AIのせいにせず自分の指示力に責任を持つ」 |
| key_quote | 話者の原文ママの重要発言 | 「AIのせいにした時点でもう何も作れません」 |
| tacit_knowledge | 話者が暗黙的に持つ判断基準 | 「専門知識が深い人ほどAIを使いこなせる。AIは鏡」 |
| teaching_pattern | 話者の教え方パターン | 「痛み提示→原因特定→原則提示→具体事例→マインド再強調」 |
| cross_reference | 他章への参照・前提関係 | 「第9章の魔法台本プロンプトにはこの4原則が前提」 |
| resource_reference | 外部リソースへの言及 | 「Notionにプロンプト格納してます」「PDFダウンロードしてください」 |
カテゴリの判別に迷う場合は references/extraction-taxonomy.md を参照。
resource_reference の検知パターン
トランスクリプトやマニュアル内で以下のパターンを検知:
- 「Notionに〜」「リンクは〜」「概要欄に〜」「ダウンロード〜」
- 「ここに格納」「テンプレート」「プレゼント」「配布物」
- URL言及(notion.so, drive.google.com, etc.)
knowledge.jsonでの出力形式:
"resource_references": [
{
"id": "rr03-01",
"text": "Notionの方にプロンプト格納してます",
"type": "notion_page",
"context": "PredictionXプロンプトの保管場所",
"url_if_detected": null
}
]---
処理ステップ
Step 1: manifest.json読み込み → 章リスト取得
Step 2: 各章のソース選択(manual.md優先 → transcript.txtフォールバック)+全文読み込み ← BLOCKER
Step 3: 6カテゴリ抽出(章ごと)
Step 4: chXX-knowledge.json生成(章ごと)
Step 5: 全章処理完了後 → knowledge-graph.json生成
Step 6: 自己検証Step 1: manifest.json読み込み
manifest.jsonからコース名と章リストを取得する。
Step 2-4: 章ごとの処理
各章について以下を実行:
1. ソース選択: manual.mdが存在すればそれを一次ソースとする。なければtranscript.txtにフォールバック 2. 一次ソース全文読み込み(BLOCKER: 部分読みNG)。マニュアルがある場合、transcript.txtは補完情報として必要に応じて参照 3. concept抽出: 話者が名前をつけて説明している概念を特定。name, definition, examples, key_quotes, speaker_framing, prerequisites, related_conceptsを記録 4. key_quote抽出: 強い主張・印象的な表現・核心的な発言を原文ママで記録。要約・意訳は絶対にしない 5. tacit_knowledge抽出: 話者が明示的に定義していないが暗黙的に前提としている判断基準・価値観を特定。必ずevidenceとして引用を添える 6. teaching_pattern抽出: 話者の説明の構造パターンを特定(例: 痛み→原因→原則→事例→再強調) 7. cross_reference抽出: 他章への言及・前提関係を記録 8. resource_reference抽出: 外部リソース(Notion, PDF, テンプレート, ダウンロードリンク等)への言及を検知・記録 9. chXX-knowledge.json出力
スキーマは schemas/knowledge.schema.json に準拠すること。
Step 5: knowledge-graph.json生成
BLOCKER: 全章のknowledge.json生成完了後に実行すること。1章だけ見て全体グラフを作ってはならない。
全章のknowledge.jsonを統合し:
1. prerequisite_graph: concept間の前提関係(cross_referenceとprerequisitesから構築) 2. concept_hierarchy: 概念のカテゴリ分類 3. cross_chapter_themes: 複数章に横断するテーマ
スキーマは schemas/knowledge-graph.schema.json に準拠すること。
Step 6: 自己検証
以下をすべてチェックし、問題があれば修正:
- [ ] 各conceptにname, definition, examplesがあるか
- [ ] key_quotesは原文ママか(要約していないか)
- [ ] tacit_knowledgeのevidenceにトランスクリプトの引用があるか
- [ ] concept IDが全章で一意か(c03-01, c04-01のように章番号含む)
- [ ] cross_referenceが実在する章を参照しているか
- [ ] knowledge-graph.jsonのprerequisite_graphが実在するconcept IDのみ参照しているか
- [ ] total_conceptsの数値が実際のconcept数と一致するか
- [ ] マニュアルがある章でマニュアルを一次ソースにしたか
- [ ] リソース言及(Notion, PDF, テンプレート等)を検知したか
---
NG / OK テーブル
| NG | OK | 理由 |
|---|---|---|
| 「重要な概念が述べられている」 | 「AIマインド=脱AI責思考」と名前+定義を記載 | 抽象的な記述は活用不能 |
| key_quoteを要約・意訳する | 話者の原文ママを記録 | 引用は原文が価値 |
| 1章だけ読んで全体のgraphを作る | 全章処理後にgraphを作る | 前提関係は全体を見ないとわからない |
| transcript.txtの最初の50行だけ読む | 全文を読み切ってから抽出開始 | 重要概念が後半にあることが多い |
| examplesを空配列にする | 話者が挙げた具体例を最低1つ記録 | 定義だけでは概念が伝わらない |
| tacit_knowledgeにevidenceなし | トランスクリプトから該当箇所を引用 | 根拠なき推測は信頼できない |
| concept IDを「c1」「c2」と連番にする | 「c03-01」「c04-01」と章番号を含める | 全章で一意性を保証するため |
| definitionに3文以上の長文を書く | 1-2文で簡潔に核心を記述 | 定義は短く明確であるべき |
| マニュアルがあるのにトランスクリプトから抽出 | マニュアルを一次ソースにする | マニュアルは編集済みで品質が高い |
| リソース言及を無視する | resource_referencesとして記録 | スキル化時にリソース取得の手がかりになる |
---
出力ディレクトリ構造
{course-bundle}/
├── knowledge/
│ ├── ch00-knowledge.json
│ ├── ch01-knowledge.json
│ ├── ...
│ └── knowledge-graph.json---
ユーザーへの提示
処理完了後、以下のサマリーを提示:
## Concept Extraction Complete
- コース: {course_name}
- 処理章数: {n}章
- 抽出概念数: {total_concepts}
- 抽出引用数: {total_quotes}
- 暗黙知: {total_tacit}件
- 教え方パターン: {total_patterns}件
- リソース言及: {total_resources}件
- 横断テーマ: {total_themes}件
### 主要概念(上位5件)
1. {concept_name} - {definition}
...
### 横断テーマ
- {theme}: 章{chapters}
...抽出タクソノミー: 5カテゴリの詳細ガイド
このドキュメントは、5つの抽出カテゴリの判別基準・エッジケース・拡張例を提供する。 カテゴリの判別に迷った場合にSKILL.mdから参照される。
---
1. concept(概念)
定義
話者が名前をつけて説明している、再利用可能な知識単位。
判別基準
- 話者がその概念に固有の名前を与えている(「AIマインド」「魔法台本」等)
- 定義が存在する(「〜とは」「〜のことです」「つまり〜」)
- 具体例とセットで説明されている
具体例
| トランスクリプトの表現 | 抽出結果 |
|---|---|
| 「AIマインドっていうのは、AIのせいにしない考え方のことです」 | name: "AIマインド", definition: "AIのせいにしない考え方" |
| 「これを僕は魔法台本プロンプトと呼んでいます」 | name: "魔法台本プロンプト" + 後続の説明からdefinition抽出 |
| 「4つの原理原則があります。1つ目は...」 | 4つの個別conceptとして抽出 |
エッジケース
| 状況 | 判断 | 理由 |
|---|---|---|
| 名前がないが重要な考え方 | → tacit_knowledge | conceptは名前があることが条件 |
| 話者が他人の用語を引用 | → concept(引用元を記載) | 話者が採用して講義で使っている以上はconcept |
| ツール名・サービス名 | → conceptにしない | ツールは概念ではない。ただし「ツールの使い方の原則」はconcept |
| 1文で説明される小さな概念 | → concept | サイズではなく構造で判断。name+definitionがあればconcept |
examplesの書き方
- 話者が実際に挙げた具体例を記録する
- 自分で例を作らない
- 例が長い場合は要点を残しつつ簡潔にする(ただし引用部分は原文ママ)
---
2. key_quote(重要引用)
定義
話者の原文ママの発言のうち、以下のいずれかに該当するもの:
- 強い主張・信念の表明
- 印象的・記憶に残る表現
- 概念の核心を突く一文
- 受講者の行動変容を促す発言
判別基準
- 原文ママであることが最重要。1文字でも変えたらkey_quoteではない
- 要約・意訳は絶対にしない
- 話し言葉のまま記録する(「〜なんですよ」「〜じゃないですか」等もそのまま)
具体例
| OK(原文ママ) | NG(意訳) |
|---|---|
| 「AIのせいにした時点でもう何も作れません」 | 「AIに責任転嫁すると成果が出ない」 |
| 「僕が持ってる以上の回答を出させることが難しいんですよ」 | 「AIの出力は使用者の知識に制限される」 |
| 「台本4時間かかってたのが1時間で終わりました」 | 「作業時間が75%削減された」 |
conceptのkey_quotesとの関係
- concept内のkey_quotesフィールド: その概念の説明中に出てきた重要発言
- 単独のkey_quote: 特定の概念に紐づかない、章全体に関わる重要発言
- 同じ引用がconcept.key_quotesにも章レベルにも出現してよい
エッジケース
| 状況 | 判断 | 理由 |
|---|---|---|
| 長い説明の一部だけが印象的 | その一部だけを抽出 | 引用は最小限の意味単位で切る |
| 受講者の発言を話者が引用 | 抽出する(引用元を明記) | 話者が採用した時点で講座の一部 |
| 「えーっと」「あの」等のフィラー | 除去してよい | フィラーは発言の本質ではない |
| 同じことを少し違う言い方で2回言っている | より強い方を採用 | 重複は避ける |
---
3. tacit_knowledge(暗黙知)
定義
話者が明示的に定義していないが、発言の端々から読み取れる判断基準・価値観・前提。
判別基準
- 話者は「これが暗黙知です」とは言わない(言ったらconceptになる)
- 複数の発言を横断的に見ると浮かび上がる前提
- 「なぜこの人はこう判断するのか」の根底にある価値観
conceptとの違い
| concept | tacit_knowledge |
|---|---|
| 話者が名前をつけている | 名前がない |
| 「〜とは」で定義している | 定義していない(行間から読み取る) |
| 話者が意識的に教えている | 話者自身が無意識に前提としている |
具体例
| 発言 | 抽出されるtacit_knowledge |
|---|---|
| 「僕が持ってる以上の回答を出させることが難しいんですよ」 | insight: 「AIの出力品質は使用者の専門知識に比例する」 |
| 繰り返し「まず自分の頭で考えて」と言う | insight: 「AIに丸投げする前に自分なりの仮説を持つべき」 |
| 「この業界20年やってきたからわかるんですけど」 | insight: 「実務経験の蓄積がAI活用の差別化要因になる」 |
evidenceの書き方
- 必ずトランスクリプトからの引用を添える
- insightは抽出者の解釈なので、evidenceで裏付けが必要
- evidenceなきtacit_knowledgeは記録しない
implicationの書き方
- 「だから実践ではこうすべき」という具体的な示唆を書く
- 抽象的な示唆(「重要である」「考慮すべき」)は避ける
---
4. teaching_pattern(教え方パターン)
定義
話者が繰り返し使う説明の構造パターン。内容ではなく構造を抽出する。
判別基準
- 同じ構造が2回以上使われている(1回限りは偶然かもしれない)
- 内容を抽象化しても構造が記述できる
- 「この人はいつもこうやって説明する」と言えるパターン
具体例
| パターン名 | 構造 | 具体的な使用例 |
|---|---|---|
| concrete-pain-then-principle | 痛み提示→原因特定→原則提示→事例→再強調 | 「台本に4時間かかって困ってませんか?→原因はAIへの指示が曖昧だから→原則はこの4つ→実際にこうやったら1時間に→だからこの原則が大事なんです」 |
| before-after-comparison | 導入前の状態→導入後の状態→差分の強調 | 「以前は〜だった→今は〜になった→つまり〜が変わった」 |
| myth-busting | よくある誤解提示→否定→正しい理解提示 | 「みんな〜だと思ってるでしょ?→実はそうじゃない→本当は〜」 |
| layered-repetition | 同じ概念を異なる角度から3回以上説明 | 定義→例え話→具体事例→もう一度定義(言い換え) |
| escalating-examples | 簡単な例→中程度の例→高度な例 | 「まず簡単なケースだと〜→もう少し複雑だと〜→実際の現場では〜」 |
conceptとの違い
- concept: 何を教えているか(内容)
- teaching_pattern: どうやって教えているか(構造)
エッジケース
| 状況 | 判断 | 理由 |
|---|---|---|
| 1回しか使われていないパターン | 記録するが「1回のみ確認」と注記 | 2回以上で確定だが、特徴的なら記録の価値あり |
| パターンが入れ子になっている | 外側と内側を別パターンとして記録 | 構造の粒度を分ける |
---
5. cross_reference(相互参照)
定義
話者が明示的に他の章・セクションに言及している箇所。
判別基準
- 「第X章で話した〜」「後で詳しくやりますが」「さっきの〜を覚えていますか」
- 明示的な言及があること(暗黙の関連はprerequisitesで扱う)
具体例
| トランスクリプトの表現 | 抽出結果 |
|---|---|
| 「第9章の魔法台本プロンプトにはこの4原則が前提になります」 | from: 現在章, to: "09", relationship: "4原則が魔法台本プロンプトの前提" |
| 「さっき第3章でやったAIマインド、覚えてますか」 | from: 現在章, to: "03", relationship: "AIマインドの復習・再利用" |
| 「これは後の章で詳しくやります」 | 記録するが、to_chapterは後で特定する |
prerequisitesとの違い
| cross_reference | prerequisites |
|---|---|
| 話者の明示的な言及 | 抽出者が判断する論理的な前提関係 |
| 「第X章で〜」と言っている | conceptを理解するために必要な前提概念 |
| 双方向の参照 | 一方向(AがBを前提とする) |
---
カテゴリ判別フローチャート
話者の発言を分析
│
├─ 名前+定義がある?
│ ├─ Yes → concept
│ └─ No ─┐
│ │
├─ 原文ママで記録すべき印象的な発言?
│ ├─ Yes → key_quote
│ └─ No ─┐
│ │
├─ 話者が無意識に前提としている判断基準?
│ ├─ Yes → tacit_knowledge
│ └─ No ─┐
│ │
├─ 説明の構造パターン?
│ ├─ Yes → teaching_pattern
│ └─ No ─┐
│ │
├─ 他章への明示的な言及?
│ ├─ Yes → cross_reference
│ └─ No → 抽出対象外注意: 1つの発言が複数カテゴリに該当することがある。その場合は複数カテゴリに記録する。 例: 「第3章のAIマインドが前提です」→ cross_reference + conceptのprerequisitesに記録。
---
よくある間違い
| 間違い | 正しい対応 |
|---|---|
| すべての発言をkey_quoteにする | 本当に印象的・重要な発言のみ。1章あたり3-10個が目安 |
| tacit_knowledgeを大量に生成 | evidenceで裏付けられるものだけ。推測の連鎖は避ける |
| teaching_patternを内容で記述 | 構造で記述する。「AIの重要性を説く」ではなく「痛み→原因→原則→事例」 |
| cross_referenceを推測で作る | 話者が明示的に言及したもののみ。「関連しそう」は不可 |
| conceptのdefinitionが長すぎる | 1-2文に絞る。詳細はexamplesとkey_quotesで補完 |
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "knowledge-graph.schema.json",
"title": "Knowledge Graph",
"description": "コース全体の概念関係グラフ。全章のknowledge.json処理完了後に生成",
"type": "object",
"required": ["course_name", "total_concepts", "prerequisite_graph", "concept_hierarchy", "cross_chapter_themes"],
"properties": {
"course_name": {
"type": "string",
"description": "コース名"
},
"total_concepts": {
"type": "integer",
"minimum": 0,
"description": "全章の合計概念数。実際のconcept数と一致すること"
},
"prerequisite_graph": {
"type": "object",
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"pattern": "^c[0-9]{2}-[0-9]{2}$"
}
},
"description": "概念の前提関係マップ。キーがconcept ID、値が前提となるconcept IDの配列",
"examples": [
{ "c09-01": ["c03-01", "c03-03"] }
]
},
"concept_hierarchy": {
"type": "array",
"items": { "$ref": "#/$defs/hierarchy_category" },
"description": "概念のカテゴリ分類"
},
"cross_chapter_themes": {
"type": "array",
"items": { "$ref": "#/$defs/cross_chapter_theme" },
"description": "複数章に横断するテーマ"
}
},
"$defs": {
"hierarchy_category": {
"type": "object",
"required": ["category", "concepts"],
"properties": {
"category": {
"type": "string",
"description": "カテゴリ名",
"examples": ["AI基礎マインドセット", "プロンプト技術", "コンテンツ制作"]
},
"concepts": {
"type": "array",
"items": {
"type": "string",
"pattern": "^c[0-9]{2}-[0-9]{2}$"
},
"description": "このカテゴリに属するconcept IDリスト"
}
}
},
"cross_chapter_theme": {
"type": "object",
"required": ["theme", "chapters"],
"properties": {
"theme": {
"type": "string",
"description": "横断テーマ名",
"examples": ["AIは鏡", "専門知識の重要性"]
},
"chapters": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[0-9]{2}$"
},
"description": "このテーマが登場する章番号リスト"
},
"description": {
"type": "string",
"description": "テーマの概要説明"
}
}
}
}
}
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "knowledge.schema.json",
"title": "Chapter Knowledge",
"description": "講座の1章分から抽出された構造化知識",
"type": "object",
"required": ["chapter_id", "chapter_title", "concepts", "tacit_knowledge", "teaching_patterns"],
"properties": {
"chapter_id": {
"type": "string",
"pattern": "^[0-9]{2}$",
"description": "章番号(ゼロパディング2桁)",
"examples": ["03", "10"]
},
"chapter_title": {
"type": "string",
"description": "章タイトル"
},
"concepts": {
"type": "array",
"items": { "$ref": "#/$defs/concept" },
"description": "抽出された概念のリスト"
},
"tacit_knowledge": {
"type": "array",
"items": { "$ref": "#/$defs/tacit_knowledge_item" },
"description": "話者の暗黙知リスト"
},
"teaching_patterns": {
"type": "array",
"items": { "$ref": "#/$defs/teaching_pattern_item" },
"description": "話者の教え方パターンリスト"
},
"cross_references": {
"type": "array",
"items": { "$ref": "#/$defs/cross_reference_item" },
"description": "他章への参照リスト"
}
},
"$defs": {
"concept": {
"type": "object",
"required": ["id", "name", "definition", "examples", "key_quotes", "speaker_framing", "prerequisites", "related_concepts"],
"properties": {
"id": {
"type": "string",
"pattern": "^c[0-9]{2}-[0-9]{2}$",
"description": "概念ID(章番号+連番)",
"examples": ["c03-01", "c10-02"]
},
"name": {
"type": "string",
"description": "概念の名前(話者が使用した表現)"
},
"definition": {
"type": "string",
"description": "概念の定義(1-2文で簡潔に)"
},
"examples": {
"type": "array",
"items": { "type": "string" },
"minItems": 1,
"description": "話者が挙げた具体例(最低1つ)"
},
"key_quotes": {
"type": "array",
"items": { "$ref": "#/$defs/key_quote" },
"description": "この概念に関する重要発言(原文ママ)"
},
"speaker_framing": {
"type": "string",
"description": "話者がこの概念をどう提示しているかのパターン"
},
"prerequisites": {
"type": "array",
"items": {
"type": "string",
"pattern": "^c[0-9]{2}-[0-9]{2}$"
},
"description": "この概念を理解するために必要な前提概念のIDリスト"
},
"related_concepts": {
"type": "array",
"items": {
"type": "string",
"pattern": "^c[0-9]{2}-[0-9]{2}$"
},
"description": "関連する概念のIDリスト"
}
}
},
"key_quote": {
"type": "object",
"required": ["text"],
"properties": {
"text": {
"type": "string",
"description": "話者の原文ママの発言。要約・意訳は禁止"
},
"timestamp_approx": {
"type": "string",
"description": "おおよそのタイムスタンプ(わかる場合)",
"examples": ["4:30", "12:15"]
}
}
},
"tacit_knowledge_item": {
"type": "object",
"required": ["id", "insight", "evidence", "implication"],
"properties": {
"id": {
"type": "string",
"pattern": "^t[0-9]{2}-[0-9]{2}$",
"description": "暗黙知ID(章番号+連番)",
"examples": ["t03-01"]
},
"insight": {
"type": "string",
"description": "話者が暗黙的に前提としている判断基準・価値観"
},
"evidence": {
"type": "string",
"description": "トランスクリプトからの引用(根拠)"
},
"implication": {
"type": "string",
"description": "この暗黙知から導かれる実践的な示唆"
}
}
},
"teaching_pattern_item": {
"type": "object",
"required": ["pattern", "description"],
"properties": {
"pattern": {
"type": "string",
"description": "パターン名(kebab-case)",
"examples": ["concrete-pain-then-principle", "before-after-comparison"]
},
"description": {
"type": "string",
"description": "パターンの説明(ステップを→で接続)"
}
}
},
"cross_reference_item": {
"type": "object",
"required": ["from_chapter", "to_chapter", "relationship"],
"properties": {
"from_chapter": {
"type": "string",
"pattern": "^[0-9]{2}$",
"description": "参照元の章番号"
},
"to_chapter": {
"type": "string",
"pattern": "^[0-9]{2}$",
"description": "参照先の章番号"
},
"relationship": {
"type": "string",
"description": "参照の内容・関係性の説明"
},
"related_concepts": {
"type": "array",
"items": {
"type": "string",
"pattern": "^c[0-9]{2}-[0-9]{2}$"
},
"description": "関連するconcept IDリスト"
}
}
}
}
}