【プロンプト有】ChatGPT JSONモードとOpenAI TTSで記事を自動要約&音声化

こんにちは、バイタリフィアジアのNihei です
普段は、生成AIを活用したプロダクト開発のアドバイザーとしてプロジェクトのサポートを行ったり、PM / PMO をしたりしています。
今回は、生成AI をふんだんに使って技術記事のラジオを生成し、配信するツールを開発したので、そのご紹介をします。
背景
通勤中の電車の中や始業の朝の時間などで、技術記事を毎朝読んで最新情報を得ている技術者の方や、PMの方は多いのではないでしょうか
しかし、毎朝大量のニュースサイトの中から自分に合った記事を探したり、全部に目を通すのは大変ですよね。
そこで、様々なニュースサイトやキュレーションサイトのRSS Feedから、ニュース記事を取得して、リコメンドして、要約して、音声にしてYouTubeやPodcast , Apple Podcast に配信してくれるツールを開発したいと思い、実際にやってみました。
技術概要
今回使う技術と構成は、このようになっています。

- 記事の取得
Google Apps Script (GAS) を使用して、様々なニュースサイトやキュレーションサイトのRSSフィードから記事を取得します。その日の上位記事のタイトルとURLを抽出します。 - 記事の推薦
抽出した記事のタイトルとURLをOpenAIのChat APIに送り、おすすめの記事を5つ選んでもらいます。プロンプト例:「PMにおすすめの記事を教えて」。 - 記事の内容取得
おすすめされた記事のURLを使い、Jina.aiを利用してスクレイピングのような方法で記事のコンテンツを取得します。 - 不要な部分のトリミング
余計な記号やURLはTokenの無駄になるため、トリミングを行います。 - テキストの抽出
トリミング後のテキストから最初の1000文字を抽出します。これはTokenコストの節約のためです。 - 記事の要約
抽出したテキストをOpenAIのChat APIに送り、記事ごとに要約をしてもらいます。 - ラジオ原稿の整形
要約された内容をラジオ風の原稿になるように整形します。 - ラジオ原稿の改善
整形したラジオ原稿をOpenAIのChat APIに送り、さらに改善してもらいます。 - 音読ファイルの生成
最終的な原稿をOpenAIのText to Speech (TTS) を使って音読してもらいます。 - 音読ファイルの保存
音読されたファイルをFirebase Storageに保存します。 - データベースへの保存
Firebase Storageに保存したファイルのURLをFirebase Firestoreに保存します。 - RSS配信
Firebase Cloud Functionsを使用し、音声ファイルのURLと原稿をRSSで配信します。 - 配信URLの保存
RSS配信のURLをYouTube、Spotify、Apple Podcastの管理画面に保存します。 - 自動化
Google Apps Script (GAS) で毎朝、音声ファイルの生成までの処理をトリガーで実行します。これにより、毎朝自動的にラジオを聞けるようになります。
今回やりたかったJSON modeについて
OpenAIのChatAPIには、JSONモードが提供されています。これは、ChatGPTに「〇〇という形式でJSONで返事をしてください!」と指示することで、ChatGPTがJSON形式で応答を返してくれる機能です。
例えば、ChatGPTに「'Xin Chao'を翻訳して」と指示した場合、通常モードでは「こんにちはです!」と返ってきます。しかし、システムで扱う場合には「こんにちは」だけで十分で、「です!」は不要です。
JSONモードでは、この冗長な部分を排除し、システムで処理しやすい形にすることができます。
例えば、「日本語に翻訳してください。reply by json. { translated: plain text }」と指示すると、{translated: "こんにちは"} のような形でJSON形式の応答を得ることができます。こうすることで、システム側はtranslatedの後に翻訳後の文字があることを確定させられ、次の処理に安心して繋げることができます。
それを使い、私はこのように処理を連続させています。↓
各プロンプトの紹介
リコメンドの記事をもらうとき
{ 'role': 'system', 'content': 'ニュース記事のタイトルから、web/アプリ/VRをシステム開発しているPM向けのおすすめを選びます。宣伝感のある記事は選ばずに、Security・PM・革新的な技術・サポート切れなどの重要な情報を選んでください。' },
{ 'role': 'system', 'content': 'reply by json, japanese. recommendations:[{ title:title , link:url },{ title:title , link:url }]' },
{ 'role': 'user', 'content': `以下のニュース記事の中からおすすめの5つを選んでください:\n${articlesText}` }要約をしてもらう時
{ 'role': 'system', 'content': 'this system generates summaries for users to easily understand.,not include coding text.' },
{ 'role': 'system', 'content': 'Summarize the article within 500 words in Japanese,if you speak it around 1mins. {summarized: summarized text } by json' },
{ 'role': 'user', 'content': `:\n ${cleanedAndTrimmedText}` }ラジオの原稿を改善してもらう時
{ 'role': 'system', 'content': 'ラジオパーソナリティが話すような原稿に書き換えて、文量はそのままで。改行 ( \n ) ・句読点を多用して読みやすくして。ラジオの冒頭で、視聴者への気遣いや励ましの言葉を追加して、ラジオの最後に感想を追加してください。, response by json, : { improved: script text } ' },
{ 'role': 'user', 'content': radioScript }まとめ
本記事では、Google Apps Script (GAS)、OpenAIのChat API、Jina.ai、Firebaseなどのツールを活用して、RSSフィードから取得した記事を自動的に処理し、音声ファイルとして配信する一連の流れを解説しました。
この一連のプロセスにより、ニュース記事を自動的に収集、要約、音声化し、各プラットフォームに配信するシステムを構築することができます。これにより、毎朝起きたら自動的に最新のニュースをラジオ形式で聞くことが可能になります。
参考記事
参考にさせていただきました ↓


1,000社以上の事業成長を支えた圧倒的な『スピードと柔軟性』で、御社のアイデアを最短で形にします。まずは無料で壁打ちしませんか?
無料相談はこちら「Generative AI & ML」の関連記事

AI Economist: Reinforcement Learning in Economics
Experimenting with the AI Economist API to simulate free markets and communism using Reinforcement Learning (RL) agents.

Applying Self Pre-Training Method to GNN for Quantum Chemistry
Explore how self pre-training methods are applied to Graph Neural Networks (GNN) to improve predictions in quantum chemistry.

Transformer with OCR: From Molecule to Manga
Exploring the application of Transformer encoder-decoder models in OCR tasks, analyzing performance on Manga datasets.

