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