mcpField
A
agency-meetup-publish

agency-meetup-publish

github.com/glebisクリエイティブ・メディア40190 回インストール1 日前に更新
リポジトリ

agency-meetup-publish について

agency-meetup-publishは、AGENCY Communityのミートアップ録画をYouTubeに公開するスキルです。Zoomからの取得、動画編集、文字起こしに基づくタイムコード作成、サムネイル制作、プレイリスト登録を扱います。

主な機能

  1. 01Zoom録画と文字起こしの取得
  2. 02イントロとアウトロの結合
  3. 03文字起こしに基づくタイムコード生成
  4. 04説明文とサムネイルの作成
  5. 05YouTubeへのアップロードとプレイリスト管理

活用シーン

  1. 01AGENCY Communityのイベント録画の公開
  2. 02会議の文字起こしからチャプターを作成
  3. 03イベント用サムネイルと説明文の作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/glebis/claude-skills --skill agency-meetup-publish

インストール後、Claude Code で/agency-meetup-publishを入力して読み込まれたか確認します。

同梱ファイルreferences/description-template.mdreferences/thumbnail-template.html

詳細

AGENCY Meetup Publish

イントロ、サムネイル、説明、タイムコードを追加して、AGENCY Community のミートアップ録画を YouTube に公開します。

前提条件

  • ~/ai_projects/youtube-uploader/ — OAuth 認証情報を含む YouTube アップロードスクリプト
  • ~/ai_projects/my-video/out/agency-swarm-intro.mp4 — AGENCY のイントロアニメーション(6s、1920x1080)
  • Zoom OAuth が ~/.zoom_credentials/ で設定済みであること
  • ffmpeg と ffprobe がインストール済みであること
  • Playwright または Chrome がインストール済みであること(サムネイルのレンダリング用)

パイプラインの概要

1. Identify meeting → 2. Download from Zoom → 3. Add intro/outro
→ 4. Generate timecodes → 5. Write description → 6. Create thumbnail
→ 7. Upload to YouTube → 8. Set thumbnail → 9. Add to playlist

ステップ 1:ミーティングを特定する

ユーザーに以下を尋ねます。

  • ミーティング名または Zoom ID — 不明な場合は、最近の録画を一覧表示します。
    python3 ~/.claude/skills/zoom/scripts/zoom_meetings.py recordings --start YYYY-MM-DD
    
  • 登壇者名 — 説明とサムネイル用
  • トピックの概要 — またはトランスクリプトから導き出します

録画の詳細を取得します。

python3 ~/.claude/skills/zoom/scripts/zoom_meetings.py recording MEETING_ID

MP4 のダウンロード URL、長さ、トランスクリプト URL、その他のファイルが返されます。

ステップ 2:Zoom からダウンロードする

MP4 と VTT トランスクリプトを並行してダウンロードします。

# Video (run in background — large file)
curl -L -o ~/Brains/brain/YYYYMMDD-meeting-slug.mp4 "DOWNLOAD_URL"

# Transcript
curl -L -o ~/Brains/brain/YYYYMMDD-meeting-slug.vtt "TRANSCRIPT_URL"

命名規則: YYYYMMDD-meeting-slug.mp4。slug はトピックの概要をケバブケースにしたものです。

ステップ 3:イントロを追加する(利用可能な場合はアウトロも)

イントロとミーティングでは仕様が異なる可能性があります。両方を確認します。

ffprobe -v quiet -print_format json -show_streams INTRO.mp4
ffprobe -v quiet -print_format json -show_streams MEETING.mp4

一致させる主なパラメーター:解像度、fps、音声サンプルレート、音声チャンネル数。

イントロをミーティングに合わせて再エンコードする
ffmpeg -y -i ~/ai_projects/my-video/out/agency-swarm-intro.mp4 \
  -vf "scale=WIDTH:HEIGHT:force_original_aspect_ratio=decrease,pad=WIDTH:HEIGHT:(ow-iw)/2:(oh-ih)/2:black" \
  -r FPS -c:v libx264 -preset fast -crf 18 \
  -ar SAMPLE_RATE -ac CHANNELS -c:a aac \
  /tmp/intro-matched.mp4
ミーティングの冒頭をトリミングする

VTT を確認し、実際の内容が始まる箇所を見つけます。通常は無音部分を 1〜3 秒トリミングします。

ffmpeg -y -ss TRIM_SECONDS -i MEETING.mp4 \
  -c:v libx264 -preset fast -crf 18 \
  -ar SAMPLE_RATE -ac CHANNELS -c:a aac \
  -r FPS -vf "scale=WIDTH:HEIGHT" \
  /tmp/meeting-trimmed.mp4

連結の互換性を確保するには、この再エンコードが必要です。長時間の録画では数分かかるため、バックグラウンドで実行します。

連結する
echo "file '/tmp/intro-matched.mp4'" > /tmp/concat-list.txt
echo "file '/tmp/meeting-trimmed.mp4'" >> /tmp/concat-list.txt
# If outro exists:
# echo "file '/tmp/outro-matched.mp4'" >> /tmp/concat-list.txt

ffmpeg -y -f concat -safe 0 -i /tmp/concat-list.txt -c copy \
  ~/ai_projects/my-video/out/YYYYMMDD-meeting-slug-final.mp4

ステップ 4:トランスクリプトからタイムコードを生成する

VTT トランスクリプトを読み、トピックの移り変わりを最大 20 個特定します。以下を確認します。

  • 登壇者の交代(特にメインの登壇者が話し始める箇所)
  • 「давайте」、「следующий」、「перейдем к」のようなフレーズで示されるトピックの移行
  • Q&A セクション
  • デモや画面共有の場面
  • 結論やまとめ

重要: タイムコードにはイントロのオフセットを反映する必要があります。VTT のすべてのタイムスタンプにイントロの長さ(通常 6s)を加えてください。

形式:MM:SS トピックの説明。動画が 1 時間を超える場合は H:MM:SS を使用します。

ステップ 5:説明を書く

以前の AGENCY Community の投稿にあるテンプレートに従います。テンプレート全体は references/description-template.md を参照してください。

主なセクション:

  1. タイトル行 — AGENCY Community Meetup: [Topic]
  2. 概要の段落 — 登壇者とトピックについての 2〜3 文
  3. 箇条書き — 取り上げた主なトピックを 5〜7 個(• を使用)
  4. タイムコード — ⏱ Таймкоды: を先頭に付ける
  5. コミュニティの行 — AGENCY Community — сообщество практиков AI-автоматизации.
  6. リンク — 🔗 を先頭に付け、→ 矢印を使用
  7. ハッシュタグ — トピックに関連するものを使用し、必ず #AGENCY #Community を含める

説明を /tmp/youtube-description.txt に保存します。

ステップ 6:サムネイルを作成する

AGENCY のサムネイル HTML テンプレートを使用し、1280x720 PNG としてレンダリングします。

テンプレートの使用方法

references/thumbnail-template.html を基に、/tmp/thumbnail.html に HTML ファイルを作成します。以下をカスタマイズします。

  • タイトルのテキスト — 短く印象的にします(1 行あたり最大 2〜4 語)
  • サブタイトル — EB Garamond のイタリック体
  • 登壇者の行 — Speaker Name × AGENCY
  • 登壇者の写真 — 利用可能な場合は mix-blend-mode: hard-light を使用します
PNG としてレンダリングする

推奨:ヘッドレス Chrome(インストール不要)

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --headless --screenshot=/tmp/thumbnail.png \
  --window-size=1280,720 --hide-scrollbars \
  "file:///tmp/thumbnail.html"

代替手段:Playwright

from playwright.sync_api import sync_playwright
with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page(viewport={'width': 1280, 'height': 720})
    page.goto('file:///tmp/thumbnail.html')
    page.wait_for_timeout(2000)
    page.screenshot(path='/tmp/thumbnail.png')
    browser.close()

ステップ 7:YouTube にアップロードする

cd ~/ai_projects/youtube-uploader && python3 youtube_upload.py \
  --video ~/ai_projects/my-video/out/FINAL.mp4 \
  --title "TITLE" \
  --description "$(cat /tmp/youtube-description.txt)" \
  --category education \
  --privacy public \
  --tags "TAG1,TAG2,..." \
  --yes

アップロードスクリプトは、成功すると動画 ID と動画 URL を出力します。次のステップで使用するため、これらを記録します。

タイトルのガイドライン: 100 文字未満にします。形式:Topic — Speaker Name。検索に使われる重要な用語を含めてください。

ステップ 8:サムネイルを設定する

cd ~/ai_projects/youtube-uploader && \
  python3 youtube_manage.py thumbnails set VIDEO_ID /tmp/thumbnail.png

ステップ 9:プレイリストに追加する

AGENCY Community のプレイリスト ID は PLZNP0SKU2SqjHOy01UjDxhSRtcluvuw0m です。

cd ~/ai_projects/youtube-uploader && \
  python3 youtube_manage.py playlists add-item PLZNP0SKU2SqjHOy01UjDxhSRtcluvuw0m VIDEO_ID

並列化の方針

時間を短縮するため、可能な場合は以下を並行して実行します。

フェーズ並行して実行できる作業
MP4 のダウンロードVTT のダウンロード
ミーティングの再エンコード(バックグラウンド)トランスクリプトの読み込み、タイムコードの下書き
YouTube へのアップロード(バックグラウンド)サムネイルの生成
サムネイルの設定プレイリストへの追加

出力

ユーザーに報告します:

  • 動画 URL:https://www.youtube.com/watch?v=VIDEO_ID
  • スタジオ URL:https://studio.youtube.com/video/VIDEO_ID/edit
  • 再生リスト:AGENCY Community

使用する既存のスキル

このパイプラインは、以下を基盤としています:

  • zoom — Zoom 録画へのアクセスに使用する ~/.claude/skills/zoom/
  • video-youtube-upload — アップロードの参考にする ~/.claude/skills/video-youtube-upload/
  • youtube — アップロード後の管理に使用する ~/.claude/skills/youtube/
  • agency-socials — カバーデザインシステムの参考にする ~/.claude/skills/agency-socials/

コメント