0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ニコニコ動画風に(すべてAIの)コメントが流れてくるWEBアプリ

0
Posted at

概要

AIにニコニコ動画みたいな感じのコメントをさせてみる

開発環境

GAS(Google Apps Script)
Gemini API

仕様

動画を再生
適当に時間を空けながらGeminiにコメントの指示を出す
コメントを画面に流す

実装

API準備

Google AI StudioでAPIキーを作成(アカウントで2段階認証の適用が必要らしい)

他人にキーを知られないようにするため、GASプロジェクトのスクリプトプロパティに保存して必要に応じて呼び出すことにする(ハードコーディングは避けた)

キー格納.png

メイン処理

中央に動画を表示し、時間を空けて表示内容を画像で取得、コメント指示のプロンプトと合わせてGeminiに送信する

video要素の内容を取得する専用にcanvasを追加し、画像変換させる

画面取得処理のループを別に設定することで、リクエスト時だけでなく直近数十秒分の画像を送り、コメント内容が重複しすぎないようにした

リクエスト毎のモデルは数種類からランダムで選択、急激なレート制限(応答不可状態)を避ける
API処理のタイミングでコメント内容にどうしてもタイムラグが生じてしまうので、あらかじめ再生している少し先のフレーム画像を送信することでズレを少なくした
(これにより、毎再生開始時に10秒ほど待ち時間が発生…)

コメント表示

Geminiからコメントが返って来次第、内容をspan要素に書いて画面上を流す
1秒あたりに動く距離からコメント位置(Y座標)が重なってしまう時間を逆算し、重なっていれば下へ避けさせる

応答で複数コメントを返させて、それぞれに指定されたスタイルを適応し分散表示している

使い方

APIキーを持っていなくても使える(デフォルトは筆者のキー)が、作成している人は画面上部のメニューから「設定」→「APIキー」で入力することをおすすめする
※再生中に変更可

動画操作

MP4ファイルを読み込むと操作が可能

動画をタップで再生/停止
左右をダブルタップすると10秒戻る/進む

再生が、クリックして約10秒後に開始されるのは仕様です

※コメントについて

「< >」で囲ってあるコメントはシステムメッセージ(Geminiの応答とは別)
簡単なエラー表示などを行う

※Gemini APIについて

エラー発生時に、コメントに<エラーコード:モデル名>が表示される

アプリを利用する

以下のリンクからアプリにアクセスできます。

「どこでもニコニコ」

以下のような状態の場合は再読み込みをおすすめします
・再生操作をして15秒以上経っても再生が開始されない
・コメントが動かない

参考サイト

GASとGeminiの連携を実務で検証|関数を使ったスプレッドシートの自動要約 | Yoom
プロパティ サービス  |  Apps Script  |  Google for Developers
JavaScript | ウィンドウの幅と高さを取得する(window.innerWidth,window.outerWidth,他)
HTML 動画埋め込み要素 - HTML | MDN
Element: animate() メソッド - Web API | MDN

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?