gendrop

GenDrop

Generative Video Flow — p5.js を録画し、YouTube Shorts 向けに加工するパイプラインです。

リポジトリ

ローカルでクローン済みの場合、origin が古いユーザー名のままなら次で更新してください。

git remote set-url origin https://github.com/hiroshiandailab/gendrop.git
git remote -v

SSH の場合:

git remote set-url origin git@github.com:hiroshiandailab/gendrop.git

GitHub Pages

ユーザー/組織サイトの URL は hiroshiandailab.github.io になります。

(実際のパスはリポジトリの Pages 設定に合わせてください。)

Google Cloud OAuth(Drive 連携)

automation/auth-setup.js でリフレッシュトークンを取得するときのリダイレクト URI は次の固定値です(GitHub のユーザー名とは無関係です)。

Google Cloud Console → API とサービス認証情報 → 使用中の OAuth 2.0 クライアントで、上記 URI が登録されていれば、GitHub アカウント名変更後もそのまま利用できます。

もし検証用に GitHub Pages の URL を「承認済みの JavaScript 生成元」やリダイレクト URI に追加していた場合は、hiroshiandai.github.iohiroshiandailab.github.io に書き換えて保存してください。

GitHub Actions での Drive アップロードはリポジトリの Secrets(GOOGLE_OAUTH_*)を使用するため、ユーザー名変更だけでは Secrets の再登録は不要です(別アカウントに移した場合は別途対応が必要です)。

動画出力(Shorts + フル尺 9:16)

1回の録画ジョブで 2種類の MP4 を生成します。

出力 ファイル名 用途
YouTube Shorts 向け SKETCH-shorts.mp4 いこれまでどおり、ブラー背景付きの 1080×1920。ソースは 960×540 ビューポートからの短いクリップ(start_time / duration)。
アーカイブ用フル尺 SKETCH-full.mp4 1080×1920 ビューポートで、アニメーションの はじめから 1 周おわりまで を録画した WebM をそのままエンコードし、レターボックスで 正確に 9:16 に収めた高ビットレート H.264(CRF 16 / preset slow)。録画秒をワークフロー入力で決めるのではなく、次の優先順で「1 周の長さ」を決めます。

スケジュール実行(毎晩 Google Chat 通知)

ワークフロー 「GenDrop - Scheduled Nightly Notify」.github/workflows/scheduled.yml)は 録画・Drive には触れません(それらは GenDrop - Record の手動実行のみ)。

  1. sketches/ 以下に .txt がある場合: その中から ランダムに 1 ファイルを選び、本文を Google Chat に投稿します。
  2. .txt が 1 つもない場合: スケッチフォルダから ランダムに 1 本選び、generate-metadata.js(Gemini)で SKETCH_ID-post.txt を生成してから、その内容を Chat に投稿します(このとき GEMINI_API_KEY が必要です)。

Cron: デフォルト 毎日 11:00 UTC日本時間 20:00)。変更する場合は YAML の cron を編集してください。

Chat のオン/オフ: リポジトリ Settings → Secrets and variables → Actions → VariablesGENDROP_CHAT_NOTIFY を追加し、無効にしたいときだけ値を false(または 0)にします。未設定のときは通知対象として扱います(Webhook が無ければ投稿はスキップされ、ジョブは成功で終わります)。

Webhook: Secrets に GOOGLE_CHAT_WEBHOOK_URL(Google Chat の受信 Webhook URL)を登録します。未設定の場合、投稿は行われず成功で終了します。

手動テスト: Actions タブから Run workflow を実行できます。入力 chat_notifytrue / false を入れると、その回だけ Variable を上書きします(空欄なら Variable の値を使用)。