概要
最新のニュースを粗品の1人賛否形式でYoutubeに自動投稿するシステムを作りました。
デモ
作成された動画はこちら
「ただあ!」は 48秒 あたりから。
GitHub
仕組み
以下の処理を愚直に直列で実行しています。
- ニュースを取得
- ソシナテキスト(台本)を作成
- 音声ファイルを作成
- 音声ファイルを動画ファイルに変換
- 動画ファイルをアップロード
1. ニュースを取得
News APIを使っています。
日本のニュースを取得したかったのですが、上手く取得できなかった(0件になる)ため、その日アメリカで最も人気のあるニュースを取得しています。
実際のリクエストは以下のような形
https://newsapi.org/v2/top-headlines?country=us&from=2025-01-01&sortBy=popularity&apiKey=XXXXX&pageSize=1
2. ソシナテキストを作成
台本作成は勿論ChatGPTです。
以下のプロンプトを与えて、先ほど取得したニュースから台本を作成してもらいます。
あなたは毒舌芸人、ソシナです。
ニュースに対して、以下の#ルールを守って台本を作成をしてください。
#ルール
## 台本の流れは以下の通りです。
1. まず、#今日のニュースについて、2~3行でまとめます。
2. その後、肯定的な意見を述べてください。
3. 最後に、「ただあ!!うーーーん。」と言った後、ニュースに対しての否定的な意見を強い口調で述べてください。
## 台本の内容は、#例 を参考にしてください。
## 台本はすべて日本語で、関西弁を使ってください。
## 台本は、最低でも100文字以上でお願いします。
#今日のニュース : {newsText}
#例:
今日のニュースはこれ。トレーダーたちがアメリカ連邦準備制度理事会(Federal Reserve)の金利決定を待つ中、株価先物が下落していることが報じられとる。火曜日には、最近の市場の売りが一段と加速し、それまでの2日間の上昇が無駄になったことが注目されているらしい。
なるほど。多くの投資家が中央銀行の動きを注視しているということは、市場がどれだけセンシティブでリアルタイムに反応しやすいかを示しているなあ。このような状況では、賢い投資家たちはエキサイティングなチャンスを見つけることができるかもしれないね~。
ただあ!!うーーーん。そんないつもいつも「待ちの姿勢」で、金利の決定を待つだけなんて、まるで変化を恐れているようやなあ!!もっと積極的に行動して、リスクもチャンスも自分でつかみにいくくらいでないと、いつまで経っても振り回されるだけやで!!
C#でOpenAIの機能を簡単に使うために、Semantic Kernelというライブラリを導入しています。
3. 音声ファイルを作成
音声ファイルの作成はVOICEBOXを使っています。
これはずんだもんや四国めたんの音声を生成してくれるツールで、無料で使えます。ローカルで起動しておくことで、APIのような形でリクエストを投げて音声ファイルを自動生成することもできるため、非常に便利です。
参考:
4. 音声ファイルを動画ファイルに変換
FFmpegというソフトで変換しています。
ここが1番大変だったのですが、音声ファイルを動画ファイルに変換してくれるWeb APIのようなものはなさそうでした。Copilotに相談したところ、FFmpegをインストールしてFFmpeg.exeをプログラムからProcessで直接叩くという荒業を提案され、この方法を使うことにしました。
実際はFFMpegCoreという.Netのライブラリを使うことで、引数などは直接書く必要がなくプログラム的には簡潔になっているものの、中身としてはFFmpeg.exeを呼び出しているので、exeファイルがプロジェクトの中に混在してしまっています..。
5. 動画ファイルをアップロード
Youtube Data APIを使っています。
.Net用のパッケージとコードサンプルがあったので、ほとんどそのまま使用させていただきました。
感想
芸人ネタとAPIの乱用という、まさに個人開発というものを作りました。
1と2の部分(ネタ)は柔軟性が高く、この部分を別のテーマに置き換えることで様々な応用ができそうです。