スキップしてメイン コンテンツに移動

RSSからYoutube/Podcast配信

RSSからYoutube/Podcast配信

皆さん、情報収集はどの様にされていますでしょうか?

私は最先端に情報に触れる為、海外ニュースをRSSで購読しているのですが、私の英語力/語彙力では時間が掛かかってしょうがない。

また、できれば目で読むのではなく、音声で聞き流しながら通勤や他の作業中に行いたい。

という事で自動でニュースを収集・要約・翻訳し、それをブログ・ポッドキャスト・Youtubeに自動投稿するPythonプログラムを作成して時短化しました。

その手法を公開してますので参考にしてください。


  1. Bloggerの立ち上げ方
  2. GCPとBloggerの連携
  3. 情報収集自動化
  4. Blogger自動投稿
  5. 本文要約
  6. 翻訳
  7. 音声作成
  8. 動画作成
  9. Youtubeにアップロード
  10. Youtubeの投稿制限の回避方法
  11. Podcast配信
  12. 翻訳・要約の改善(GPT-3)


以下のURLで上記から作成したブログやYoutubeを公開しています。参考までに見てください。


このブログの人気の投稿

Bloggerの立ち上げ

Bloggerとは BloggerはGoogleのサービスの一つで、無料でブログを始めることができます。 Googleアカウントが必要となりますので、ない方はアカウントの作成をお願いします。 Bloggerサイトへのログイン https://www.blogger.com/から「ブログの作成」を選択してください。 Googleアカウントを聞かれるので、Googleアカウントとパスワードを入力してください。 ブログの名前を入力 作成するブログの名前を決めます。これは後から変えられるのでとりあえずは書こうとしてる内容に沿ったものを記入してください。 ブログのURL(インターネット上の所在地)を作成します。 こちらも変更できる(※)のですがので、頻繁に変更すると読者や検索などから外されてしますので、個人名や法人名など変更しないことを前提に名付けた方が良いと思います。 (※「.blogspot.com」以外のカスタムドメインを自分でとって、それを設定することもできます) プロファイルの作成 ブログが作成されるとプロファイルの作成画面が出てきます。ブログ読者に見られることを意識して、ユーザー名やわかりやすい説明を記入しましょう。 以上でブログが作成できました。作成したURLをブラウザに打ち込んでみましょう! 貴方だけのブログサイトが立ち上がりました。 次は GCP(Google Cloud Platform)とBloggerを連携 させてみましょう。 参考: Blogger Help  

Youtubeでの投稿制限

YouTubeからロックの通知 自動投稿を繰り返していたある日YouTubeコミュニティから投稿した動画をロックしたとの連絡が。 同じ動画をYouTube Stadio経由から投稿した場合は問題ない為、どうやら自動投稿の上限に引っかかった様子。 上限の解除はアプリケーションの承認されれば対応できそうだが、Webを調べた限りは簡単には通らなさそう。 仕方がないのYouTubeのライブ配信を使って動画ファイルをRTMP経由でアップロードします。 この作業には GCPとBloggerの連携 の箇所の修正が必要です。 YouTube Data APIスコープの変更 test.py YOUTUBE_UPLOAD_SCOPE = "https://www.googleapis.com/auth/youtube.upload" YOUTUBE_API_SERVICE_NAME = "youtube" YOUTUBE_API_VERSION = "v3" uploadだけだったものをライブストリーミング/ブロードキャストが可能な様にスコープを広げます。 token.pickleファイルを削除し、認証をし直してください。 またYouTube Stadioからライブストリーミングの開始を申請が必要です。 Pythonプログラム test.pyに以下のコードを記述します。 デフォルトのライブストリームのキーを取得し、ライブブロードキャストと紐づけます。 そして指定されたRTMPのURLにffmpegで動画ストリーミングを流しこみます。 test.py import datetime from pytz import timezone def getStreamKey ( title , desc ): youtube = get_authenticated_service ( YOUTUBE_API_SERVICE_NAME , YOUTUBE_API_VERSION ) request = youtube . liveStreams (). list ( part = "snippet,cdn,contentDetails,status...