SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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

IFTTTのヘルプ

関連するメモ

コメント