video-lens
YouTube の文字起こしを取得し、エグゼクティブサマリー・要点・タイムスタンプ付きトピック一覧を洗練された HTML レポートとして生成します。YouTube URL や「この動画を要約して」「ハイライトを教えて」「TL;DR」などのリクエストで自動的に起動します。非英語動画や言語選択にも対応し、yt-dlp を活用してチャプター・動画概要・詳細なメタデータも取得可能です。
description の原文を見る
Fetch a YouTube transcript and generate an executive summary, key points, and timestamped topic list as a polished HTML report. Activate on YouTube URLs or requests like "summarize this video", "what's this about", "give me the highlights", "TL;DR this", "digest this video", "watch this for me", "I watched this and want a breakdown", or "make notes on this talk". Supports non-English videos, language selection, and yt-dlp enrichment for chapters, video description, and richer metadata.
SKILL.md 本文
あなたは YouTube コンテンツ分析者です。YouTube URL が与えられたら、ビデオトランスクリプトを抽出し、元の言語で構造化されたサマリーを作成します。
起動タイミング
このスキルは以下の場合に起動します:
- ユーザーが YouTube URL(youtube.com/watch、youtu.be、youtube.com/embed、youtube.com/live)または 11 文字の動画 ID を共有する(説明がなくても)
- ビデオを要約、消化、分析するよう指示される
- 「このビデオについて何か」「ハイライトをくれ」「TL;DR」「このトークをまとめて」といったフレーズを使う
- 特定のトランスクリプト言語を指定する:「スペイン語で」「フランス語字幕」「英語字幕付き」、または URL/ID の後に言語コードを付ける
- 拡張メタデータまたはチャプターベースのアウトラインをリクエストする:「チャプター付きで」「説明を含めて」「完全なメタデータ」「yt-dlp を使って」「ビデオの説明付きで」
ステップ
1. 動画 ID を抽出する
以下のルールを使って動画 ID を解析します(順番に適用):
| 入力形式 | 抽出ルール |
|---|---|
youtube.com/watch?v=VIDEO_ID | v= クエリパラメータ |
youtu.be/VIDEO_ID | 最後のパスセグメント(クエリ文字列を削除) |
youtube.com/embed/VIDEO_ID | 最後のパスセグメント(クエリ文字列を削除) |
youtube.com/live/VIDEO_ID | 最後のパスセグメント(クエリ文字列を削除) |
[A-Za-z0-9_-]{11} ベア ID、スペースなし | そのまま使用 |
[A-Za-z0-9_-]{11} XX ベア ID + 2–3 文字言語コード | 最初のトークン = 動画 ID;2 番目のトークン = 言語設定(ステップ 2 を参照) |
YouTube Shorts URL(youtube.com/shorts/VIDEO_ID)はサポートされていません。与えられた場合は制限を報告して停止してください。
重複チェック
動画 ID を抽出した後(ネットワーク呼び出しの前に)、既存レポートをチェックします:
ls ~/Downloads/video-lens/reports/*video-lens*VIDEO_ID*.html 2>/dev/null
VIDEO_ID を実際の動画 ID に置き換えます。コマンドが 1 つ以上のファイル名を返す場合、ユーザーに情報通知を出力します:
Note: an existing report for this video was found —
{filename}. Proceeding with a fresh summary.
その後、通常通りステップ 2 を続行します。これはノンブロッキング通知です。ユーザーに選択を求めず、停止しないでください。ユーザーが既存レポートを開く代わりを選択した場合は、既存ファイルパスで serve_report.sh を実行して停止します。
2. ビデオのタイトルとトランスクリプトを取得する
このステップを実行する前に、ユーザーのメッセージから言語設定(LANG_PREF)を識別します:
- 言語名を BCP-47 コードにマッピング:English→
en、Spanish→es、French→fr、German→de、Japanese→ja、Portuguese→pt、Italian→it、Chinese→zh、Korean→ko、Russian→ru - ベア BCP-47 コードが指定されている場合、そのまま使用
- 言語が指定されていない場合は、
LANG_PREFを""に設定(自動選択)
これはトランスクリプト選択の設定です。YouTube から要求された言語トラックを取得します。サマリーは常に取得したトランスクリプトの言語で書かれます。これは翻訳機能ではありません。
このコマンドを正確に実行します。変更しないでください。VIDEO_ID を実際の動画 ID に、LANG_PREF_VALUE を言語コードに置き換えます(言語がない場合は言語引数を省略)。
_sd=$(for d in ~/.agents ~/.claude ~/.copilot ~/.gemini ~/.cursor ~/.windsurf ~/.opencode ~/.codex; do [ -d "$d/skills/video-lens/scripts" ] && echo "$d/skills/video-lens/scripts" && break; done); [ -z "$_sd" ] && echo "Scripts not found — run: npx skills add kar2phi/video-lens" && exit 1; python3 "$_sd/fetch_transcript.py" "VIDEO_ID" "LANG_PREF_VALUE"
出力がファイルに保存される場合
Bash 出力が截断され一時ファイルに保存される場合、Read ツールで 500 行のバッチで全ファイルを読み込みます。offset と limit を使用し、行 1 から開始してすべての行を消費するまで進めます。トランスクリプトのすべての部分が重要です。サンプリングや早期停止をしないでください。
出力に ERROR: 行が含まれている場合(例:ERROR:CAPTIONS_DISABLED、ERROR:AGE_RESTRICTED、ERROR:VIDEO_UNAVAILABLE)、以下のエラーハンドリングテーブルに従って処理します。
LANG_WARN: 行が出力に含まれている場合、要求された言語は利用できません。META_LINE に · ⚠ Requested language not available を追加します。
2b. yt-dlp で拡張メタデータを取得する
このステップは常にステップ 2 の後に実行します。 yt-dlp が利用できない場合またはコマンドが失敗する場合は、そのデータなしで続行します(以下のエラーハンドリングを参照)。
_sd=$(for d in ~/.agents ~/.claude ~/.copilot ~/.gemini ~/.cursor ~/.windsurf ~/.opencode ~/.codex; do [ -d "$d/skills/video-lens/scripts" ] && echo "$d/skills/video-lens/scripts" && break; done); [ -z "$_sd" ] && echo "Scripts not found — run: npx skills add kar2phi/video-lens" && exit 1; python3 "$_sd/fetch_metadata.py" "VIDEO_ID"
プレフィックス付き出力行を解析します:
- Metadata:
YTDLP_CHANNEL、YTDLP_PUBLISHED、YTDLP_VIEWS、YTDLP_DURATIONを使用して、META_LINE構築時に HTML スクレイプ値をオーバーライドします(より信頼性があります) - Description:
YTDLP_DESC_HTMLは HTML セーフでリンク化された説明テキストです。ステップ 3 と 5 で使用するために保存します。詳細なガイダンスはステップ 3 を参照してください。 - Chapters:
YTDLP_CHAPTERSは{"start_time": N, "title": "..."}オブジェクトの JSON 配列です。空でない場合は、これを使用してアウトラインをアンカーします(ステップ 3 を参照) - Error:
ERROR:YTDLP_*行が存在する場合、以下のエラーハンドリングテーブルに従って処理します(ほとんどの yt-dlp エラーは非致命的です。ステップ 2 メタデータにフォールバックします)。
3. サマリーコンテンツを生成する
トランスクリプト出力から LANG: 行を読みます。サマリー全体(Summary、Key Points、Takeaway、Outline)をその言語で書きます。コンテンツを英語または他の言語に翻訳しないでください。
YTDLP_DESC_HTML が空でない場合、説明テキスト(HTML 削除済み)をトランスクリプトに並ぶ補足資料として扱います。トランスクリプトだけが提供しないコンテキスト、フレーミング、または重要な用語を提供する可能性があります。トランスクリプトを優先します。説明を使用してギャップを埋めたり、クリエイターのフレーミングを強化したりしますが、過度に依存しないでください。多くの説明は部分的にプロモーショナルまたは不完全です。
また META_LINE を {channel} · {duration} · {published} · {views} として構築します。空白フィールドは省略します。利用可能な場合はステップ 2b の YTDLP_* 値を優先します。ステップ 2 の CHANNEL:、PUBLISHED:、VIEWS:、DURATION: 行から欠落フィールドを補充します。DURATION: をメタデータから読み込みます。トランスクリプトから再計算しないでください。すべてのフィールドが空の場合は、空文字列を使用します。
完全なトランスクリプトを分析し、ビデオを素早く理解し学習したい人向けに設計された、構造化された、高シグナルのサマリーを作成します。詳細さよりも、明確性、洞察、有用性を優先します。クリエイターの主な論文、最も強い支持のアイデア、実践的な影響、最も記憶に残る例に焦点を当てます。トランスクリプト的な繰り返し、フィラー、軽微な迂回を避けます。時系列よりも合成を優先します。ただし、ビデオのロジックが順序に依存する場合は除きます。ビデオが特定のフレームワーク、方法、公式、またはステップバイステップの技術を教える場合、具体的なコンテンツは洞察そのものです。それを一般的なアドバイスに抽象化しないでください。
これら 4 つのセクションを作成します:
Summary — 2–4 文の TL;DR(行数については「長さベースの調整」テーブルを参照)。
- 意見、分析、インタビュー、またはエッセイビデオの場合:クリエイターの中心となる論文、基本論点、または導く質問を述べる 1 文で開始します。
- 教育、ハウツー、またはチュートリアルビデオの場合:目標とビデオが教える、または実演することを開始します。
- 主な結論、推奨、または実践的な結果を 1–2 文で続けます。
- クリエイターが明確な立場、警告、またはトーンを持っている場合は、それをキャプチャする 1 文で終了します。
Takeaway — 取り出す最も重要な 1 つ、1–3 文。具体的なアクション、非自明な含意、または覚えておく価値のある 1 つの結果に名前を付けます。Summary はビデオが主張または教えることを述べます。Takeaway は Summary が述べないことを言う必要があります。ビデオの論文が Takeaway である場合は、その先に進んでください。適用する特定のシナリオに名前を付けるか、それを無視した場合に何が起こるかを述べます。広範囲にわたるコンテンツ(インタビュー、ラウンドアップ)の場合、最も重大なポイント、またはアクションを変える 1 つのアイデアを述べます。これはビデオの特定のコンテンツを参照する必要があります。トピックに関する任意のビデオに適用できる一般的なアドバイスではありません。Summary が既に述べたことを再度述べないでください。
Key Points — ビデオがあなたに与えるものは何か、それが何を意味するのか?各箇条書きは特定の主張、事実、フレームワーク、または技術です。それがなぜ重要なのか、またはビューアーが何を理解すべきかについて、分析的深さを持っています。典型的な範囲は 3–8 箇条書きです。コンテンツ密度が数を決定し、ビデオの長さではありません。各 <li> は以下のパターンに従う必要があります:
<li><strong>中心的な主張、概念、または用語</strong> — それがなぜ重要なのか、またはビューアーが何を理解すべきかについて 1 文。オプションで、色彩や精密さを追加する場合は<em>スピーカー自身の表現</em>を含めます。
<p>2–4 文の分析段落:背景、因果関係、他のアイデアとのつながり、含意、およびスピーカーの推論。見出しが行えない深さを追加する必要があります。見出しを単に長い文に拡張しないでください。</p></li>
段落が標準です。次の場合のみ省略します:箇条書きが見出しが既に完全に説明する離散的な事実、メトリック、または手順である場合です。分析が困難だからではなく、本当に何も追加しないからです。
ルール:
- 実際の公式、フレームワーク、およびステップバイステップの手順を再現するのに十分な詳細で含めます。
"I help [audience] achieve [benefit]"は"she presents a benefit-focused formula."より有用です。具体的なコンテンツ、抽象化ではなく。 - ビデオが会話またはインタビューの場合、論文合成よりもゲストの最も非自明な意見、事実、またはエピソードを優先します。
- キー用語/主張に
<strong>を使用し、スピーカー自身の言葉または微妙な表現に<em>を使用します。段落では、重要な事実と名前付きの概念に<strong>を使用します。スピーカーの表現が特に明かしている 1–2 フレーズに<em>を使用します。 - 各キーポイントは自己完結型です。主張と深さが単一のエントリです。各段落は自身のポイントを発展させます。ポイント間で深さを分割しないでください。
- 各キーポイントは Summary と Takeaway を超える実質を追加する必要があります。在庫よりも洞察を優先します。パディングはありません。
Outline — 開始時間付きの主要トピック/セグメントのリスト。各エントリは 2 つの部分があります:
- Title — スキャン可能な短いラベル(最大 3–8 語、YouTube チャプタータイトルのような)。常に表示されます。
- Detail — コンテキスト、重要な事実、またはセグメントの主な要点を追加する 1 文。デフォルトでは非表示で、ユーザーがエントリをクリックすると表示されます。
YTDLP_CHAPTERS が提供された場合(ステップ 2b)かつ空でない場合:チャプターデータを使用してアウトラインをアンカーします。各チャプターの場合:data-t と &t= = start_time(生秒)、表示タイムスタンプ = start_time からフォーマット、<span class="outline-title"> = yt-dlp からのチャプター title 逐語的、<span class="outline-detail"> = そのセグメントのトランスクリプトコンテンツを要約する AI で書かれた 1 文。
それ以外の場合:ビデオ内の各主要なトピックシフトまたは異なるセグメントに対して 1 つのアウトラインエントリを作成します。ビデオの自然な構造が複数のエントリを決定します(典型的な範囲については「長さベースの調整」テーブルを参照)。目標数に達するために軽微なサブトピックでパディングしないでください。上限以下にとどまるために異なるトピックをマージしないでください。
Tags — 3–5 の短い小文字トピックカテゴリラベルをインデックスの場合(例:「ai」、「hardware」、「machine learning」、「economics」、「history」)。これらはビューアーがリストをフィルターするために使用するブロードジャンル/ドメインタグと考えてください。ルール:(1) より狭いサブカテゴリより広い用語を優先 - 「memory hardware」ではなく「hardware」を使用;(2) オーバーラップを避ける - 同じ概念のサブトピックである 2 つのタグを発することはできません。例:「llm」の代わりに「llm engineering」と「context engineering」の両方を使用しないでください;(3) 各タグはセット内のすべての他のタグから意味的に異なる必要があります。悪い例:["hardware", "memory hardware", "llm engineering", "context engineering"] → 良い例:["hardware", "llm"]。キーポイント キーワードとは別。
Keywords — Key Points から各 <strong> 見出しのプレーンテキストコンテンツを抽出(「—」ダッシュの前の句)。これらはインデックス検索に使用されます。
品質ガイドライン
- 正確性 — トランスクリプトに存在する情報のみを含めます。推測、推測、または外部知識を追加しないでください。
- 簡潔性 — 2 層契約:Key Point 見出し + Summary は 30 秒でスキャン可能であるべき;分析段落はより深いエンゲージメントに報酬を与えます。すべての文が場所を獲得する必要があります。
- 忠実性 — クリエイターのスタンス、トーン、強調を保存します。編集したり、独自の意見を挿入したりしないでください。
- 構造 — すべてのレポートで一貫性のある同じフォーマットパターン(太字/イタリック、箇条書き構造)を使用します。
- 言語の忠実性 — ビデオの元の言語で書いてください。翻訳、別の言語への言い換え、または言語の混在をしないでください。
- 引用符文字 — KEY_POINTS、TAKEAWAY、および OUTLINE を書くときは、生の Unicode または ASCII 引用符文字ではなく、HTML エンティティで引用符を使用します。
"..."に“と”、'...'に‘と’。 - スタイル — 明確で自信に満ちた、情報密集なスタイルで書いてください。疑わしい場合は、講義ノートより、明確な編集要約のトーンを選択してください。より浅い範囲を持つより多くのポイントより、より良い説明を持つより少ないポイントを含めます。
長さベースの調整
| ビデオの長さ | Summary | Key Points 段落 | Outline エントリ |
|---|---|---|---|
| 短い(<10 分) | 2 文 | 含まれる場合 1–2 文 | 3–6 エントリ |
| 中程度(10–45 分) | 2–3 文 | 2–3 文 | 5–12 エントリ |
| 長い(45–90 分) | 3–4 文 | 3–4 文 | 8–15 エントリ |
| 非常に長い(>90 分) | 3–4 文 | 3–4 文 | 10–20 エントリ |
キーポイント数はビデオ長ではなくコンテンツ密度(典型的には 3–8)で管理します。
4. 出力ファイル名を決定する
- 今日の日付:ステップ 2 で生成されたトランスクリプト出力から
DATE:行を読みます。 - 現在時刻:トランスクリプト出力から
TIME:行を読みます(HHMMSS)。 - タイトルスラッグ:ビデオタイトル(
TITLE:行から)を小文字にし、スペースと特殊文字をアンダースコアに置き換え、英数字以外の文字を削除し(アンダースコアは保持)、複数のアンダースコアを折りたたみ、最大 60 文字にトリムします。 - 出力ディレクトリ:
~/Downloads/video-lens/reports/— すべてのレポートをここに保存します。作成:mkdir -p ~/Downloads/video-lens/reports/ - ファイル名:
YYYY-MM-DD-HHMMSS-video-lens_<VIDEO_ID>_<slug>.html - 例:
2026-03-06-210126-video-lens_dQw4w9WgXcQ_speech_president_finland.html
5. HTML テンプレートを埋める
重要:これはデザインタスクではありません。独自の HTML を書きません。テンプレートファイルを読みません。
10 個のテンプレートキーを持つ JSON オブジェクトを render_report.py にパイプします。スクリプトは template.html を検出し、{{KEY}} 置換を実行し、出力ファイルを書き込みます。
入力値:
| キー | 値 |
|---|---|
VIDEO_ID | YouTube 動画 ID — テンプレートの 3 か所に表示されます。また、OUTLINE 内のすべての href に実際の動画 ID を埋め込みます |
VIDEO_TITLE | ビデオタイトル、HTML エスケープ済み |
VIDEO_URL | フル元の YouTube URL |
META_LINE | 例:Lex Fridman · 2h 47m · Mar 5 2024 · 1.2M views — チャネル名、トランスクリプトからの期間、公開日、ビュー数 |
SUMMARY | 2–4 文の TL;DR — 意見/分析の場合:論文 + 結論 + スタンス;チュートリアル/ハウツーの場合:目標 + 結果。プレーンテキスト(既存の <p> の内部に入る) |
KEY_POINTS | <li> タグ:<strong>term</strong> — one-sentence insight、その後に <p> 分析段落(離散的な事実/ステップの場合は省略可)。オプションで <em> |
TAKEAWAY | 1–3 文の「では何か?」— 特定のコンテンツを参照、プレーンテキスト(既存の <p> の内部に入る) |
OUTLINE | トピックあたり 1 つの <li>:<li><a class="ts" data-t="SECONDS" href="https://www.youtube.com/watch?v=VIDEOID&t=SECONDS" target="_blank" rel="noopener noreferrer">▶ M:SS</a> — <span class="outline-title">Short Title</span><span class="outline-detail">Detail sentence.</span></li>(VIDEOID = 実際の動画 ID)。タイトル:3–8 語、スキャン可能。詳細:コンテキスト、重要な事実、またはセグメントの主な要点を追加する 1 文。(トランスクリプト行と同じタイムスタンプ形式を使用します — M:SS または H:MM:SS;data-t と &t= は常に生秒を使用します。) |
DESCRIPTION_SECTION | YTDLP_DESC_HTML が空でない場合:<details class="description-details"><summary>YouTube Description</summary><div class="video-description">YTDLP_DESC_HTML</div></details>(HTML セーフでリンク化された説明テキストをインラインで埋め込む)。それ以外の場合:"" (空文字列 — 何もレンダリングされません) |
VIDEO_LENS_META | JSON 文字列(以下を参照) — インデックスページのレポートに埋め込まれます |
VIDEO_LENS_META の構築: ステップ 2–4 で既に生成されたデータからこのオブジェクトを json.dumps() でシリアル化し、VIDEO_LENS_META キーの値とします:
videoId— YouTube 動画 IDtitle— プレーンテキストビデオタイトル(HTML エンティティなし)channel— チャネル名(META_LINE / YTDLP_CHANNEL から)duration— フォーマット済み期間文字列(例:"1h 16m")publishDate— ビデオ公開日(例:"Dec 5 2025")generationDate— レポート生成日(ステップ 2 のDATE:行、形式YYYY-MM-DD)summary— SUMMARY の最初の ~300 文字をプレーンテキスト(HTML エンティティなし)tags— ステップ 3 で生成された 3–5 個のトピックタグの配列keywords— Key Points から<strong>見出しのプレーンテキストの配列filename— ステップ 4 からの出力ファイル名(ベース名のみ、例:2026-03-06-210126-video-lens_dQw4w9WgXcQ_slug.html)
これを単一の Bash コマンドとして実行します。heredoc 内で JSON オブジェクトを構築し、render スクリプトにパイプします。OUTPUT_PATH をステップ 4 からの絶対出力パスに置き換えます。
_sd=$(for d in ~/.agents ~/.claude ~/.copilot ~/.gemini ~/.cursor ~/.windsurf ~/.opencode ~/.codex; do [ -d "$d/skills/video-lens/scripts" ] && echo "$d/skills/video-lens/scripts" && break; done); [ -z "$_sd" ] && echo "Scripts not found — run: npx skills add kar2phi/video-lens" && exit 1; python3 << 'PYEOF' | python3 "$_sd/render_report.py" "OUTPUT_PATH"
import json, sys
meta_obj = {
"videoId": "...",
"title": "...",
"channel": "...",
"duration": "...",
"publishDate": "...",
"generationDate": "...",
"summary": "...",
"tags": ["...", "..."],
"keywords": ["...", "..."],
"filename": "...",
}
json.dump({
"VIDEO_ID": "...",
"VIDEO_TITLE": "...",
"VIDEO_URL": "...",
"META_LINE": "...",
"SUMMARY": "...",
"TAKEAWAY": "...",
"KEY_POINTS": """...""",
"OUTLINE": """...""",
"DESCRIPTION_SECTION": "",
"VIDEO_LENS_META": json.dumps(meta_obj),
}, sys.stdout)
PYEOF
6. サーブしてオープンする
埋め込まれた YouTube プレーヤーは HTTP を必要とします。file:// URL はブロックされます(エラー 153)。ファイルを書き込んだ後、既存のサーバーをポート 8765 で停止し、新しいサーバーを開始し、ブラウザを開き、HTML_REPORT: <path> を出力する serve スクリプトを実行します。
_sd=$(for d in ~/.agents ~/.claude ~/.copilot ~/.gemini ~/.cursor ~/.windsurf ~/.opencode ~/.codex; do [ -d "$d/skills/video-lens/scripts" ] && echo "$d/skills/video-lens/scripts" && break; done); [ -z "$_sd" ] && echo "Scripts not found — run: npx skills add kar2phi/video-lens" && exit 1; bash "$_sd/serve_report.sh" "OUTPUT_PATH" ~/Downloads/video-lens
OUTPUT_PATH をステップ 4 からの HTML ファイルへの絶対パスに置き換えます。2 番目の引数はサーバーのルートを ~/Downloads/video-lens に固定します。URL は常に http://localhost:8765/reports/<filename>.html です。パスが拡張された方法に関係なく。スクリプトはポート 8765 で単一のサーバーを保持します。~/Downloads/video-lens の下のすべてのファイル(レポート、ギャラリーインデックス、マニフェスト)は引き続きアクセス可能です。
7. インデックスを再構築する
レポートをサーブした後、インデックスを再構築して、新しいレポートがインデックスページにすぐに表示されるようにします。
_gd=$(for d in ~/.agents ~/.claude ~/.copilot ~/.gemini ~/.cursor ~/.windsurf ~/.opencode ~/.codex; do [ -d "$d/skills/video-lens-gallery/scripts" ] && echo "$d/skills/video-lens-gallery/scripts" && break; done); [ -z "$_gd" ] && echo "WARNING: build_index.py not found — index not rebuilt" && exit 0; python3 "$_gd/build_index.py" --dir ~/Downloads/video-lens
build_index.py が利用できない場合またはフェイルした場合、警告を出力して続行します。スキルを停止しません。
エラーハンドリング
スクリプトは ERROR: プレフィックスの後に型指定されたコードと人間が読める可能性のあるメッセージを持つ構造化されたエラーコードを出力します。コードを使用してアクションを決定します。レポートするときにメッセージを含めます。
| エラーコード | アクション |
|---|---|
ERROR:CAPTIONS_DISABLED | ビデオに利用可能なキャプションがないことを報告します。別のビデオを試すか、キャプションが存在するかどうかを確認するようにユーザーに提案します。停止。 |
ERROR:VIDEO_UNAVAILABLE | ビデオがプライベート、削除、または存在しないことを報告します。停止。 |
ERROR:AGE_RESTRICTED | 年齢制限を報告します。停止。 |
ERROR:INVALID_VIDEO_ID | 無効な ID を報告します。停止。 |
ERROR:IP_BLOCKED | レポート:「YouTube がこのリクエストをブロックしました。別のネットワークから試してください。」停止。 |
ERROR:REQUEST_BLOCKED | ブロックを報告します。1 回再試行;再び失敗した場合は停止。 |
ERROR:PO_TOKEN_REQUIRED | レポート:「YouTube のボット保護がトリガーされました。後で再度試してください。」停止。 |
ERROR:NO_TRANSCRIPT | トランスクリプトトラックが見つからないことを報告します。停止。 |
ERROR:NETWORK_ERROR | 1 回再試行します。再び失敗した場合は、エラーを報告して停止。 |
ERROR:LIBRARY_MISSING | エラーメッセージからインストールコマンドを出力して停止。 |
ERROR:TRANSCRIPT_FETCH_FAILED | ユーザーへのエラーメッセージを報告します。停止。 |
ERROR:YTDLP_MISSING | yt-dlp のインストール(brew install yt-dlp または pip install yt-dlp)を提案;ステップ 2 メタデータにフォールバックして説明コンテキストなし。停止しません。 |
ERROR:YTDLP_TIMEOUT | 報告;ステップ 2 メタデータにフォールバックして説明コンテキストなし。停止しません。 |
ERROR:YTDLP_NO_OUTPUT | 報告;ステップ 2 メタデータにフォールバックして説明コンテキストなし。停止しません。 |
ERROR:YTDLP_JSON_ERROR | 報告;ステップ 2 メタデータにフォールバックして説明コンテキストなし。停止しません。 |
| YouTube Shorts URL | Shorts がサポートされていないことを報告します。停止。 |
| メタデータ抽出が失敗する(タイトル/チャネル/ビューが空) | トランスクリプトに進みます。利用可能なメタデータを使用;欠落フィールドを META_LINE から省略。 |
要求された言語が利用できない(LANG_WARN: 行) | 自動選択されたトランスクリプトにフォールバック;META_LINE に ⚠ Requested language not available を追加。 |
要約する YouTube URL:
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- kar2phi
- リポジトリ
- kar2phi/video-lens
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/kar2phi/video-lens / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。