YouTube動画の字幕から全自動でブログ記事を生成する方法 ── AIアプリ開発入門 その3
この記事の内容
- YouTube動画の長時間字幕テキストを、要約ではなく「ブログ記事」として書き起こすAIアプリを作成した手順を紹介します
- LangChain・ChatGPT・Streamlitを使った既存アプリをベースに、わずかな変更で実現しています
- 変更箇所はサマリー生成の関数をブログ変換用に書き換えるだけと非常にシンプルです
- 実際に約50分のYouTube動画を入力し、ブログエントリーへの変換結果を確認しています
- 数百本の動画ストックを自動でブログ化するユースケースへの応用も紹介しています
はじめに
前回まで「作りながら学ぶAIアプリ開発」のシリーズを第8章まで進め、長時間のYouTube動画を要約するアプリを作りました。
しかし実際に使ってみると、「要約」よりも「そのまま読めるブログ文章」にしてほしいというニーズが生まれました。そこで今回は、既存のアプリを少し変更して、YouTube動画の字幕テキストをブログエントリー形式に変換するアプリを作成しました。
アプリの概要
今回作成したアプリは「YouTubeToブログ」と名付けています。YouTubeの動画URLを入力すると、字幕(トランスクリプト)を取得し、それをブログ記事らしい文章に整形して出力します。
試しに約49分39秒のAD入門動画を入力したところ、以下のような動作を確認しました。
- 注意事項などのメッセージをヘッダーに表示
- 動画タイトルをもとにブログらしいタイトルを生成
- 字幕テキストをブログエントリー形式に整形して出力
元の字幕テキストは改行もなく、ひたすら話し言葉が続く状態です。それがブログとして読める形に変換されるため、可読性が大きく向上しています。
変更点:サマリー関数からブログ変換関数へ
既存のアプリからの変更はわずかで、主に以下の1箇所です。
元のコードはサマリー生成ロジックになっていましたが、今回はその関数を**format_transcription** という名前に変更し、中身を書き換えました。
変更後のロジックのポイントは次のとおりです。
# 変更前:summarize() を呼んでいた箇所を
# 変更後:format_transcription() に置き換え
# HumanMessageでプロンプトを渡し、
# LLMに字幕テキストをブログ文章に変換させる
具体的には、以下のような処理になっています。
- 字幕(トランスクリプト)のテキストを1ページ(チャンク)ずつ取り出す
- 各チャンクに対して、
HumanMessage形式のプロンプトをLLMに渡す - プロンプトには「字幕テキストなので文字起こしに失敗している部分を日本語として直しつつ変換してください」という指示を含める
- 変換結果を順番に連結して、最終的なブログ記事として出力する
以前はプレイリスト対応などの複雑な処理も入っていましたが、今回はシンプルに1本の動画を対象として動作するように整理しています。
実装のポイント
字幕テキストの扱い
字幕テキスト(ドキュメントの各ページコンテンツ)をそのままLLMに渡し、ブログ文章として整形させています。「文字起こしの誤りを日本語として修正しながら変換する」という指示をプロンプトに加えることで、精度を高めています。
結果の連結
各チャンクの変換結果を単純に束ねるだけで、ブログ記事全体が完成します。複雑な後処理は不要です。
実行時間
長時間動画を処理するため、実行にはそれなりの時間がかかります。リアルタイムに結果が流れてくるストリーミング形式で表示される設計となっています。
活用シナリオ
このアプリを使うと、過去に投稿した数百本のYouTube動画をまとめてブログ化することができます。
- 動画ごとにURLを渡してブログ記事を自動生成
- 生成した記事をブログやノートツールに貼り付け
手作業では膨大な時間がかかる作業を、大幅に効率化できます。
ソースコードについて
今回のソースコードは公開されていませんが、変更箇所は非常に限られており、前回(第8章)のコードの画面を見ながら同様に実装することが可能です。
まとめ
今回は、YouTube動画の字幕テキストをブログ記事として書き起こすAIアプリを作成しました。
- 既存の要約アプリから変更したのは、ほぼ1つの関数のみ
HumanMessageでシンプルなプロンプトを渡すだけで実現できる- 字幕特有の誤りを修正しながら変換する指示をプロンプトに含めるのがポイント
- 数百本規模の動画をまとめてブログ化するような大規模な活用も視野に入る
LangChainとChatGPTを組み合わせることで、このような実用的なツールが少ない変更量で構築できます。次回は「作りながら学ぶAIアプリ開発」の第9章・第10章を進めていく予定です。