twitterで自動ツイートしたい(RSS利用)
問題
twitterで自動ツイートしたい。
答え
自動ツイートする方法はさまざまありますが、IFTTTを利用すると、ツイートする部分は実装する必要がなく、材料の提供だけで済みます。簡単です。
今回は、IFTTTとRSSを利用する方法をやってみます。
WordPressで構築したWebサイトの新着情報などなら、http://サイトのURL/feed
などですでにRSSフィードを出力可能な状態なので、IFTTTの設定のみで可能です。
New Applet → if this に RSS の New feed item で URLを指定 → then that に twitter の Post a tweet でツイート内容を指定
任意のツイートをするためには、この元になるRSSを作ってやればOKです。
以下のようなphp でRSS(XML)を出力できます。
example.com は環境に応じて書き換えてください。
<?php header('Content-Type: application/xml; charset="UTF-8"'); // RSSの材料はデータベース、外部サービスから取得したり、ここに書き溜めておいて小出しに出力したり $data = array( /* array( 'id' => '一意なURL', 'title' => 'ツイートさせたい内容', 'link' => 'URLもツイートしたかったら持たせたり', 'updated' => 'ツイート予定日時のタイムスタンプ', 'summary' => '空欄は非推奨のため活用しないなら適当な値を', ), */ array( 'id' => 'http://example.com/5', 'title' => 'テストツイート5', 'link' => 'http://example.com/5', 'updated' => strtotime('2018-02-13 12:00:12'), 'summary' => '5', ), array( 'id' => 'http://example.com/4', 'title' => 'テストツイート4', 'link' => 'http://example.com/4', 'updated' => strtotime('2018-02-11 10:11:12'), 'summary' => '4', ), array( 'id' => 'http://example.com/3', 'title' => 'テストツイート3', 'link' => 'http://example.com/3', 'updated' => strtotime('2018-02-10 10:11:12'), 'summary' => '3', ), array( 'id' => 'http://example.com/2', 'title' => 'テストツイート2', 'link' => 'http://example.com/2', 'updated' => strtotime('2018-02-02 10:11:12'), 'summary' => '2', ), array( 'id' => 'http://example.com/1', 'title' => 'テストツイート1', 'link' => 'http://example.com/1', 'updated' => strtotime('2018-02-01 10:11:12'), 'summary' => '1', ), ); //上のように書いた場合、updated が未来だったら除外して上から10件とるなどすると、予約ツイートが可能 $_data = array(); foreach ($data as $v) { if ($v['updated'] < time()) { $_data[] = $v; } if (count($_data) >= 10) { break; } } $data = $_data; ?><?php echo '<?xml version="1.0" encoding="UTF-8"?>'; ?> <feed xmlns='http://www.w3.org/2005/Atom' xml:lang='ja'> <id>tag:example.com,2018:feed/</id> <title>rss</title> <updated><?php echo date('c'); ?></updated> <link href='http://example.com/' /> <link rel='self' href='http://example.com/feed.php' /> <author> <name>example.com</name> </author> <?php foreach ($data as $v) { ?> <entry> <id><?php echo $v['id']; ?></id> <title><?php echo $v['title']; ?></title> <link rel='alternate' type='text/html' href='<?php echo $v['link']; ?>' /> <updated><?php echo date('c', $v['updated']); ?></updated> <summary><?php echo $v['summary']; ?></summary> </entry> <?php } ?> </feed>
IFTTTでRSSを読ませるには、以下を満たすようにとのことなので、うまく動かないときはご確認ください。
・ A top-level feed title and a unique link
・ A GUID and date for each entry
・ Valid RSS or Atom syntax
コメント