webサイトのスクショを自動ツイートしたく、Heroku + node.js + papeteerで実現した。その時の覚え書きです。
Hrokuを使う理由:Xサーバー を使いたかったが、papeteerがXサーバでは使えなかったのでHerokuを使うことにした。
Node.jsで自動tweetする際のAPIkeyの扱いに注意する。環境変数を利用するのが良いらしい。(heroku-configを使った)参考:https://e-tec-memo.herokuapp.com/article/277/ 、https://qiita.com/MosamosaPoodle/items/6e3b64feb22153fd33b8 , https://qiita.com/rarewin/items/d38ba161864107f94f7d
今回のことをするだけならフレームワーク(Expressなど)は必要ない。
Herokuでは生成したファイルを保存しておくことができない。だがtmpフォルダでのみ一時ファイルとして少しの間保存することはできる。なので、Papeteerで生成したスクリーンショットをtmpフォルダに保存した後にTweetすることが可能。参考:http://pbs.twimg.com/media/EgDrbKPWoAA-Lq8.png
Herokuにアプリをデプロイ。heroku run npm start とコマンドを打った時だけアプリが実行されると思っていたが、複数回実行されるし、時間をおいて何度も実行される。package.jsonのmainファイルにダミーを仕込んで解決した。参考:http://yamacent.hatenablog.com/entry/2015/05/12/235603
1日に1回ツイートする処理のために、herokuにアドオンを追加する。アドオン名:Heroku Scheduler。アドオンの使用のためにはHerokuにクレジットカードを登録しなければならない。
Papeteerでのスクリーンショット時に全てが表示されないことがある。ページの読み込み完了を待つ必要がある。参考:https://obel.hatenablog.jp/entry/20180823/1535002627