Summary
UTAGEの動画講座からマニュアルを自動作成。Chrome操作で講座構成を把握し処理計画を立案、ffmpegでダウンロード、Groq Whisperで文字起こし、シーン検出でスクリーンショット抽出、読みやすい文章スタイルでMarkdownマニュアル生成、画像と文章の整合性チェックまで一括処理。
naoterumaker/manabi-skills · Archived
UTAGEの動画講座からマニュアルを自動作成。Chrome操作で講座構成を把握し処理計画を立案、ffmpegでダウンロード、Groq Whisperで文字起こし、シーン検出でスクリーンショット抽出、読みやすい文章スタイルでMarkdownマニュアル生成、画像と文章の整合性チェックまで一括処理。
npx skills add naoterumaker/manabi-skills --skill utage-manual
UTAGEの動画講座からマニュアルを自動作成。Chrome操作で講座構成を把握し処理計画を立案、ffmpegでダウンロード、Groq Whisperで文字起こし、シーン検出でスクリーンショット抽出、読みやすい文章スタイルでMarkdownマニュアル生成、画像と文章の整合性チェックまで一括処理。
This repository is archived — consider an actively maintained alternative.
講座トランスクリプトから概念・定義・暗黙知・重要引用・教え方パターンを構造化抽出しknowledge.jso…
4 installscourse-bundleの?
4 installsskill-plannerが生成したskill-plan.jsonに基づき、複数の独立したClaude Codeスキルを自動生成する。…
4 installscourse-bundleの抽出結果(knowledge.json, procedures.json, visual-index.json, resources-manifest…
4 installsRelated neighbors and high-traction skills in the same topics — useful to compare before installing.
Performs manual testing of Story AC via executable bash scripts in tests/manual/. Use when Stor…
383 installsAudits manual test evidence quality: reproducibility, fail-fast behavior, expected evidence/gol…
198 installsDatasheet and reference manual reading skill for embedded engineers. Use when extracting pinout…
179 installsCreate QA artifacts from requirements: test plans, test conditions/cases, bug reports, regressi…
162 installsLoad this skill whenever you are planning, executing, or reviewing manual accessibility testing…
107 installsOther skills from naoterumaker/manabi-skills.
npx skills add naoterumaker/manabi-skills
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Parsed from SKILL.md frontmatter.
Files included with this skill beyond the listing page.
SKILL.md
13,260 B
SUMMARY.md
387 B
UTAGEの動画講座ページから、読みやすいマニュアルを自動作成します。
MANDATORY: 処理を開始する前に、必ずユーザーに確認する。
📚 講座ページのURLを教えてください
(例: https://utage-system.com/members/xxxxx/course/xxxxx)
📁 出力先フォルダ: [現在のディレクトリ]/[講座名]_manual/
(変更したい場合は教えてください)
注意: ユーザーから講座URLを受け取ってから、Chrome連携で講座ページにアクセスする。
⚠️ 以下はフォルダ構成の例です。実際のフォルダ名・ファイル名は講座内容に応じて変わります。
[出力フォルダ]/
├── videos/
│ ├── [章番号]_[タイトル].mp4
│ └── ...
├── audio/
│ ├── [章番号].mp3
│ └── ...
├── transcripts/
│ ├── [章番号].txt
│ └── ...
├── screenshots/
│ ├── [章番号]/
│ │ ├── title.jpg
│ │ ├── frame_001.jpg
│ │ └── ...
│ └── ...
├── manuals/
│ ├── [章番号]_[タイトル].md
│ └── ...
└── full_manual.md # 全章結合版
// tabs_context_mcp でタブ情報を取得
// navigate で講座ページに移動
// read_page でページ構造を取得
// javascript_tool で章リストを取得
const lessons = document.querySelectorAll('a[href*="/lesson/"]');
const chapters = Array.from(lessons).map((a, i) => ({
index: i,
title: a.textContent.trim(),
url: a.href
}));
JSON.stringify(chapters);
抽出した章一覧をユーザーに提示し、確認を取る:
📋 講座構成(全N章)
[抽出した章一覧を表示]
処理対象を選択してください:
- 全章処理
- 特定の章のみ(番号指定)
- 範囲指定(例: 0-5)
各章のレッスンページから動画URLを取得:
// iframeから動画URLを取得
const iframe = document.querySelector('iframe');
iframe.src // → https://utage-system.com/video/xxxxx
動画ページに移動後、readnetworkrequests で .m3u8 URLを取得:
urlPattern: ".m3u8"
→ https://s3.ap-northeast-1.wasabisys.com/utagesystem-video/.../video.m3u8
スクリプト: [scripts/hlsdownloader.py](scripts/hlsdownloader.py)
# 動画ダウンロード(UTAGE/Wasabi S3向け高速設定)
python scripts/hls_downloader.py "[m3u8 URL]" "videos/[章番号]_[タイトル].mp4"
特徴:
スクリプト: [scripts/hlsdownloader.py](scripts/hlsdownloader.py)
# 動画から音声を抽出(MP3形式)
python scripts/hls_downloader.py --extract-audio "videos/[章番号]_[タイトル].mp4" "audio/[章番号].mp3"
スクリプト: [scripts/transcribe.py](scripts/transcribe.py)
# Groq Whisperで文字起こし
python scripts/transcribe.py "audio/[章番号].mp3" "transcripts/[章番号].txt"
特徴:
.envファイルから自動読み込みスクリプト: [scripts/screenshotextractor.py](scripts/screenshotextractor.py)
# pHashモード(デフォルト・推奨): スライド変化を検出して重複を排除
python scripts/screenshot_extractor.py "videos/[章番号]_[タイトル].mp4" "screenshots/[章番号]"
# pHash閾値を調整(デフォルト=8, 小さいほど多く取る)
python scripts/screenshot_extractor.py "videos/[章番号]_[タイトル].mp4" "screenshots/[章番号]" --phash-threshold 6
# レガシーモード: 30秒間隔(pHashが使えない環境用)
python scripts/screenshot_extractor.py "videos/[章番号]_[タイトル].mp4" "screenshots/[章番号]" --no-phash --interval 30
特徴:
pip install imagehash Pillow)MANDATORY: [writing-style.md](writing-style.md) を読むこと。
BLOCKER: マニュアル生成後のレビューは必須。生成完了 ≠ 完了。
各Agentに委譲する場合も、Agentプロンプトに必ず以下を含めること:
- "writing-style.md と image-alignment.md を必ず読むこと"
- "Step 9のレビューチェックリストを全項目通過するまで完了報告しないこと"
- "画像と文章の整合性を画像内容を確認しながらチェックすること"
MANDATORY: マニュアル作成後、必ず以下のレビューを実施し、問題があれば修正すること。
必須確認項目:
../screenshots/XX/frame_XXX.jpg形式)# 画像の参照数を確認
grep -c "!\[" manuals/[章番号]_*.md
# 各セクション(##)に画像があるか確認
grep -E "^##|!\[" manuals/[章番号]_*.md
画像が不足している場合は、以下の手順で追加する:
手順1: 文字起こしから画像が必要な箇所を特定
文字起こしを読み、以下のような箇所を特定:
手順2: 必要なタイムスタンプを推定
文字起こしの位置から、動画内のおおよそのタイムスタンプを推定:
例: 文字起こし全体が3000文字、該当箇所が1500文字目付近、動画が10分(600秒)の場合 → 1500/3000 × 600 = 300秒(5分)付近
手順3: 追加のスクリーンショットを抽出
# 特定のタイムスタンプでフレームを抽出
python scripts/screenshot_extractor.py "videos/[章番号]_[タイトル].mp4" "screenshots/[章番号]" --timestamps "120,180,240,300"
# または、より細かい間隔で再抽出(例: 15秒間隔)
python scripts/screenshot_extractor.py "videos/[章番号]_[タイトル].mp4" "screenshots/[章番号]" --interval 15
手順4: 抽出した画像を確認してマニュアルに追加

上の画像にあるように、この設定画面では〜
以下のパターンでは画像が必須:
確認項目:
MANDATORY: [image-alignment.md](image-alignment.md) を読むこと。
レビューで問題が見つかった場合は、必ず修正してから次の章に進む。
✅ レビュー完了チェックリスト
- 画像: 各セクションに配置済み
- 読みやすさ: 箇条書き過多なし、セクション接続OK
- 整合性: 画像と文章の内容が一致
マニュアル生成を複数Agentに分散する場合、以下のテンプレートに従う:
```` Agent( model: "sonnet", prompt: """ 必ず以下を読んでから生成開始: - ~/.claude/skills/utage-manual/writing-style.md - ~/.claude/skills/utage-manual/image-alignment.md
生成対象: ch{N}-{M}
各章について: 1. transcript.txt 全文読込 (BLOCKER) 2. screenshots/ から最低5枚をRead (画像内容把握 - BLOCKER) 3. マニュアル生成 (writing-style.md準拠) 4. レビュー実施: - 各セクションに画像があるか - 画像と文章の内容が整合しているか - 箇条書き3つ以上連続していないか - 流れる文章になっているか 5. レビューで問題があれば修正してから完了報告
完了報告時にレビュー結果も含めること。 """ ) ````
| NG | OK | 理由 |
|---|---|---|
| Agentにマニュアル生成依頼するときレビュー指示なし | レビュー指示必須 | レビューなしだと整合性破綻 |
| 画像を読まずにファイル名から推測 | 必ずReadで画像内容確認 | ファイル名は内容を表さない |
| writing-style.md読まずに生成 | 必ず読んでから | スタイル一貫性のため |
全章のマニュアルを1つのファイルに結合:
# [講座名] 完全マニュアル
## 目次
[各章へのリンクを生成]
---
# 第X章:[タイトル]
[各章のマニュアル内容を結合]
...
.envファイルに保存済み)| スクリプト | 用途 |
|---|---|
[scripts/hlsdownloader.py](scripts/hlsdownloader.py) |
HLS動画ダウンロード+音声抽出 |
[scripts/transcribe.py](scripts/transcribe.py) |
Groq Whisper文字起こし(並列処理) |
[scripts/screenshotextractor.py](scripts/screenshotextractor.py) |
スクリーンショット抽出(間隔/シーン検出) |
# 必要なPythonパッケージ
pip install requests
# ffmpegのインストール(macOS)
brew install ffmpeg