8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

YouTube から Twitter に自動投稿するボットを作った話

Last updated at Posted at 2019-11-26

TL;DR

  • YouTube のプレイリストから動画をダウンロードしてツイッターにアップロード
  • URL 貼り付けでなく Video Tweet
  • ソースコード: https://github.com/teramotodaiki/youtube-to-twitter
  • 運用中のボット: https://twitter.com/hackforplay
    • 1日1本、 子どもがプログラミングで作った ゲームの実況動画を投稿しています。良かったらフォローしてね!

何が嬉しいのか

マーケティング施策として YouTube に1日1本動画をアップしています。チャンネル登録者数を増やしたいけど、YouTube のリコメンドだけでは流入が望めません。そこで、動画を数十秒だけ切り取って Twitter にアップして、「続きは YouTube で!!」的なのをやりたくなりました。しかし、

  • 動画のトリミング だるい
  • Twitter の動画アップロード 遅い
  • YouTube の スケジュール投稿に合わせてツイート しなきゃいけない

こんな作業を毎日やるとか、、人間の仕事ではない、、

ということで、自動化したいですよね

それ IFTTT にないの?

結論から言うとないです。それっぽいのはあるけど、あくまで YouTube リンクをツイートするだけ。これだと タイムライン上で動画が再生されません

タイムライン上で動画が再生 される ツイート

タイムライン上で動画が再生 されない ツイート

タイムライン上で動画を流すには、Twitter に動画をアップロードする必要があります。当然、帯域やらストレージやらを食います。さらに、 Twitter では動画が 140 秒までに制限されている ため、トリミング(カット)する必要があります。動画編集にはそれなりの CPU 時間がかかるので、フリーのクラウド使うにしても、無償で提供出来るものではありません

多少おかね払っていいから、そういう SaaS ないの?とも考えたけど、ツイートの内容とかトリミングの秒数とか自分で比較検証することも考えると、やっぱりピッタリなソリューションは存在しないと思います。ないものは作るっきゃねえだろ。千空先生もそう言ってました。

とにかく今すぐボットを作りたい人

このリポジトリをクローンなりフォークなりしてください。環境変数は .env.txt ってファイルにキーだけ書いてあるので、設定してください

npm にパッケージも公開してるけど、あんまりオススメしません。なぜなら一部 Python を使っているせいで、環境構築が面倒だと思います

2019/11/27 追記

Pytube から ytdl に切り替えたので、Python 環境が不要になりました。試してないですが、おそらく動くはずです。自分用なのでテストも型定義も書いてませんが、Issue 立ててくれたら時間のある時に対応します

npm install --save youtube-to-twitter

あとは適宜 cron jobs を使ってお好みのタイミングで GET / を叩いてください

前提

  • 今回は 再生リスト に含まれている動画を対象とします
  • 動画が 公開されたら ツイートします
  • 一日一回、 cron job で curl してボットにツイートさせます
  • 同じ動画を2回ツイートすることがないようにします

実装方法とかハマりポイントとか

YouTube Data API

Pytube

  • YouTube から動画をダウンロードするためのライブラリです
  • 名前の通り Python のライブラリなので、 pip でインストールする必要があります
  • YouTube から動画をダウンロードする API はありません。何らかのトリックが必要で、それを Python で実装したライブラリが Pytube です
    • これを書いている途中で ytdl なる npm パッケージを見つけたので、そっちに移行するかも知れません
    • 余談ですが、これは YouTube の Terms of Use に抵触している行為なので、もし他人に第三者の動画をダウンロードさせるために使うのであれば権利についてご一考ください

ffmpeg

  • 言わずと知れた動画編集ライブラリです
  • 今回は npm パッケージ経由でバイナリを入手し、 CLI から使います

ffmpeg-installer

何を言ってるか分からない方向けの解説

Twitter API

8
8
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?