Communitygithub.com

日刊ニュースキャスター

最新ニュースを取得し、ポッドキャスト形式の台本マークダウンに編集し、TTSスキルで音声ファイルを生成します。ユーザーが最新ニュースをポッドキャストとして読み上げてほしいと要請した際に使用します。

日刊ニュースキャスター とは?

このスキルは、AIエージェントがリアルタイムでニュースを取得し、それを二人のホストによる対話形式のポッドキャスト台本に変換し、最後に音声ファイルを生成するための一連のワークフローを提供します。主にClaude Code、Cursor、CodexといったAIエージェントプラットフォーム上で動作するよう設計されており、`news-aggregator-skill`と`tts`の二つの依存スキルを連携させます。使い方としては、まず`fetch_news.py`を実行してニュースを取得し、そのデータをホストA(質問役)とホストB(回答役)のQ&A形式のマークダウン台本に書き起こします。その後、`tts.py`を使って台本の各行を一文ずつ音声に変換し、`ffmpeg`で連結して最終的なポッドキャスト音声ファイルを生成します。重要なのは、エージェントは事前に必要な依存スキルが揃っていることを確認し、自動インストールは行わずユーザーに手動インストールを促す点です。台本は「冗長さを排除し、情報を過不足なく伝える」スタイル(言簡意赅)が求められ、音声は一文単位で生成することでAPI負荷を分散します。認証情報としてはこのスキル自体はAPIキーを必要としませんが、`tts`スキルがNoizバックエンドを使用する場合には`NOIZ_API_KEY`が必要となる場合があります。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/noizai/skills/tree/main/skills/daily-news-caster

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

Daily News Caster スキル

このスキルにより、エージェントはリアルタイムニュースを取得し、それを対話形式のポッドキャスト台本に整理し、台本を読み上げる音声ファイルを生成できます。

ワークフロー手順

ユーザーが最新ニュースを取得してポッドキャストにするよう依頼した場合は、以下の手順を厳密に実行してください。

手順1: 必要なスキルが揃っていることを確認する

news-aggregator-skillとttsがワークスペース内(skills/または.cursor/skills/)に存在することを確認します。いずれかが欠けている場合は、どのスキルが見つからないかをユーザーに伝え、手動でインストールするよう依頼してください。スキルを自動的にインストールしようとしてはいけません。

手順2: 最新ニュースを取得する

news-aggregator-skillスキルディレクトリ内(例: skills/news-aggregator-skill/scripts/fetch_news.py)からfetch_news.pyを見つけます。必要に応じてそのSKILL.mdを読み、使い方を理解します。

スクリプトを実行してリアルタイムニュースを取得します。ユーザーのリクエストに応じて、ソース(例: hackernews、github、all)やキーワードを指定できます。 実行例:

python3 skills/news-aggregator-skill/scripts/fetch_news.py --source all --limit 10 --deep

手順3: ポッドキャスト台本を草稿する(内部手順)

取得したニュースデータを読み込み、その情報をマークダウン形式のポッドキャスト台本に書き換えます。 重要なのは、二人のホストによる対話形式(デュアルホスト)を優先し、ダイナミックなQ&Aスタイルとすることです。 台本は以下のようにする:

  • 二人のホストによる対話的かつ簡潔: 二人のホスト間で魅力的なやりとりを書きます。ホストAは洞察に富んだ価値の高い質問をして会話を導き、ホストBは情報が詰まった簡潔な回答を提供します。スマートでテンポの良いQ&A形式にします。
  • 無駄を省く: 不必要な飾りや長すぎるつなぎの言葉は入れません。すべての重要な情報と事実を保持しつつ、言簡意赅に保ちます。
  • 話者が明確にラベル付けされている: 各行または各段落の先頭に話者の名前(例: ホストA: または ホストB:)を付けます。
  • 読み上げ用の明確なテキスト: 音声で読み上げるテキストには複雑なURLや生のマークダウンリンク、発音しにくい文字を避けます。

これをpodcast_script.mdというローカルファイルに保存します。

podcast_script.mdの内容例:

**ホストA:** 今日のニュースダイジェストへようこそ。今日はエキサイティングなテクノロジーアップデートがあります。まず初めに、[企業名]からの大きな発表です。この新リリースが一般ユーザーにとってどのような意味を持つのでしょうか?

**ホストB:** 主なポイントは... [ニュース項目1の簡潔な回答と要約を挿入]です。これにより、[トピック]へのアプローチが完全に変わります。

**ホストA:** それは興味深いですね。しかし、この新しいアプローチは、最近のデータ漏洩事件を踏まえると、何かセキュリティ上の懸念を引き起こすのでしょうか?

**ホストB:** まさにその通りです。専門家は... [分析や文脈を挿入]と指摘しています。

**ホストA:** オープンソースの世界に目を向けると、今日GitHubで開発者が注目すべきトレンドは何ですか?

**ホストB:** 特に注目すべきプロジェクトは... [ニュース項目2の簡潔な要約を挿入]です。

**ホストA:** 素晴らしい洞察でした。今日のクイックアップデートは以上です。ご視聴ありがとうございました!

手順4: ポッドキャスト音声を一文ずつ生成する

スクリプト全体を一度にAPIに送信するのを避けるため、音声は**一文ずつ(一人一句ずつ)**生成し、その後連結します。

ローカルのttsスキル(skills/tts/scripts/tts.py)からtts.pyを使用します。ttsスキルのSKILL.mdを読み、完全な使い方とバックエンドオプションを確認してください。

1. 各行の音声を生成する: 台本の各対話行に対して、speakコマンドを実行します。それぞれのホストに適した音声または参照音声を使用します。ユーザーが2役用の参照音声ファイルを提供している場合は、--ref-audioフラグで使用します(NoizバックエンドとNOIZ_API_KEYが必要)。APIキーがない場合は、ゲストモードの音声が利用可能です(tts SKILL.mdの音声一覧を参照)。

python3 skills/tts/scripts/tts.py -t "今日のニュースダイジェストへようこそ..." --ref-audio host_A.wav -o line_01.wav

python3 skills/tts/scripts/tts.py -t "主なポイントは..." --ref-audio host_B.wav -o line_02.wav

2. 音声ファイルを連結する: 生成されたすべての音声ファイルを順番にリストアップしたテキストファイル(例: list.txt)を作成します:

file 'line_01.wav'
file 'line_02.wav'

次に、ffmpegを使ってそれらを1つのポッドキャスト音声ファイルにマージします:

ffmpeg -f concat -safe 0 -i list.txt -c copy podcast_output.wav

手順5: 最終結果を提示する

完全な音声が生成されマージされたら、結果をユーザーに提示します。必ず以下の両方のコンテンツを提供してください:

  • 完成したマークダウンポッドキャスト台本をチャットに出力し、ユーザーが読めるようにします。
  • 最終的なpodcast_output.wavファイルへのパスを提供し、音声を聞けるようにします。
  • ポッドキャストに含まれた見出しを簡潔に要約します。

セキュリティとデータ開示

このスキルは指示のみで構成されています — それ自体に実行可能なコードは含まれていません。実行時には、二つの依存スキルからのスクリプトをオーケストレーションします:

  • 実行されるスクリプト: news-aggregator-skill/scripts/fetch_news.py(公開ソースからニュースを取得)およびtts/scripts/tts.py(音声を生成)。これらはこのスキルを実行する前にローカルに存在している必要があります。ネットワーク動作や資格情報要件の詳細については、それらのコードとSKILL.mdを確認してください。
  • 資格情報: このスキル自体はAPIキーや環境変数を直接必要としません。依存するttsスキルは、音声クローン機能(Noizバックエンド)にNOIZ_API_KEYを必要とする場合があります。これがない場合、ゲストモードの音声はそのまま使用できます。詳細はttsスキルのSKILL.mdを参照してください。
  • ネットワークアクセス: すべてのネットワーク呼び出しは、このスキルの指示ではなく依存スキルによって行われます。news-aggregatorは公開ニュースソースから取得し、ttsスキルはNoizバックエンドを使用する場合にのみnoiz.aiに接続します。
  • 書き込まれるファイル: podcast_script.md、line_*.wav(一時的な一文単位の音声)、list.txt(ffmpeg連結リスト)、podcast_output.wav(最終出力)。すべてカレントワーキングディレクトリに書き込まれます。
  • 永続的な状態はなし: このスキルは設定ファイルを書き込んだり、資格情報を保存したり、他のスキルを変更したりしません。

Individual skills in this repo

This repo contains 6 individual skills — each has its own dedicated page.

関連スキル