---
name: youtube-uploader
description: YouTube動画のアップロード・メタデータ更新を行うスキル（リフレッシュトークン自動認証）
---

# YouTube Uploader スキル

## 概要
YouTube Data API v3 を使用して、動画のアップロードおよびメタデータ更新を行うスキル。
認証はリフレッシュトークンにより**完全自動化**されており、AIエージェントが直接コマンドを実行する。ユーザーの手動操作は不要。

## 前提条件
1. **`client_secrets.json`** がスキルの `secrets/` ディレクトリに配置されていること
   - Google Cloud Console から OAuth 2.0 クライアントID（デスクトップアプリケーション）をダウンロード
   - 配置先: `{インストール先}\youtube-uploader\secrets\client_secrets.json`
2. **仮想環境** が構築済みであること（下記「セットアップ」参照）

## セットアップ
```powershell
# {SKILL_DIR} はこのスキルをインストールしたフォルダのフルパスに置き換えること
# 例: C:\Users\{ユーザー名}\.agents\skills\youtube-uploader

# venv作成
python -m venv "{SKILL_DIR}\.venv"

# 依存インストール
& "{SKILL_DIR}\.venv\Scripts\pip.exe" install -r "{SKILL_DIR}\requirements.txt"
```

## 使用方法

すべてのコマンドは**AIエージェントが直接実行**する。認証はリフレッシュトークンにより自動処理される。

### 動画アップロード
```powershell
& "{SKILL_DIR}\.venv\Scripts\python.exe" "{SKILL_DIR}\scripts\youtube_upload.py" --project "<プロジェクトパス>" --channel "my_channel"
```

### メタデータ更新
```powershell
& "{SKILL_DIR}\.venv\Scripts\python.exe" "{SKILL_DIR}\scripts\youtube_update_metadata.py" --video_id "<動画ID>" --project "<プロジェクトパス>" --channel "my_channel"
```

### メタデータ + サムネイル同時更新
```powershell
& "{SKILL_DIR}\.venv\Scripts\python.exe" "{SKILL_DIR}\scripts\youtube_update_metadata.py" --video_id "<動画ID>" --project "<プロジェクトパス>" --channel "my_channel" --thumbnail
```

## 認証フロー
1. 保存済みトークン（`secrets/tokens/token_{チャンネル名}.json`）を自動読み込み
2. 有効期限切れの場合はリフレッシュトークンで**自動リフレッシュ**
3. リフレッシュ後のトークンは自動保存される

> **注意**: リフレッシュトークン自体が無効化された場合（Google側でのアクセス取り消し等）のみ、`youtube_auth.py` による再認証が必要。これはトラブルシューティングの範囲であり、通常運用では発生しない。

## ディレクトリ構成
```
youtube-uploader/
├── SKILL.md              ← このファイル
├── requirements.txt
├── lib/
│   └── lib_youtube_auth.py  ← 認証ライブラリ
├── scripts/
│   ├── youtube_auth.py             ← 認証スクリプト（初回セットアップ・トラブル時のみ）
│   ├── youtube_upload.py           ← アップロードスクリプト
│   └── youtube_update_metadata.py  ← メタデータ更新スクリプト
└── secrets/
    ├── client_secrets.json  ← ユーザーが配置
    └── tokens/              ← 認証後に自動生成
```

## ⛔ 厳重注意：メタデータ作成・更新時の絶対遵守ルール

### 1. SRTファイルの全読み込み義務
目次（タイムスタンプ）を生成する際は、`02_Inputs/cut.srt` を**最初から最後まで全行読み込むこと**。  
途中で止めることは「虚偽の目次」生成に直結し、ユーザーへの欺瞞行為とみなす。

### 2. JSON生成は「直接編集」が原則
`convert_metadata_json.py` の実行でエラーが出ても、スクリプト本体への改変は**第3条違反**。  
正規手順は `generate_seo_json_direct.py --mode template` でテンプレート生成 → AIが直接 JSON を編集。

### 3. 概要欄フォーマット
**構成順序【推奨】**: ① リンク集（最上部）→ ② ■動画の内容 → ③ フック → ④ 本文 → ⑤ ▼目次 → ⑥ ハッシュタグ

**リンク集**はチャンネルの固定リンク（SNS・サービスURL等）をまとめたものを最上部に配置すること。内容はユーザー自身のチャンネルDNAファイルまたはユーザー指示に従う。

**禁止**:
- `サービス名: https://...` という「ラベル: URL」1行形式（URL単体で記述すること）
- リンク集を概要欄の途中・末尾に配置すること（必ず**最上部**）
- ハッシュタグに `#` を付け忘れること
- リンク集を記憶や推測で書くこと（必ずユーザーの指示・DNAファイルを参照すること）

## 注意事項
- **既存ツールとの独立性**: このスキルはワークスペースや他ツールのコードとは完全に独立している。
- **venv必須**: 必ずこのスキル専用の `.venv` を使用すること。グローバルPythonでの実行は禁止。
- **client_secrets.json の保護**: このファイルはGitにコミットしないこと。

---

## 完了条件（強制自己検閲チェックリスト）

- [ ] ユーザーから動画IDを受け取ったか？
- [ ] スクリプトが `✅ メタデータ更新完了` を出力したか？（HTTP 200相当）
- [ ] 認証エラーが発生した場合、即座にユーザーに報告したか？

**全項目が ✅ になるまで完了報告を禁止する。**

---

*Updated: 2026-03-21 / V1.1 アニメ考察ワークフロー向け運用追記 / OKIHIRO FORGE*