WordPressでアメブロ特定テーマの記事を自動で記事化する機能を作ってみよう①
こんにちは、webエンジニアのゾノ( @ozonosho )です。
さて、今回はWordPressでアメブロ特定テーマの記事を自動で記事化する機能に挑戦していこうと思います。
ちょうど昨日制作することが決まった機能で、これから調べつつ制作するので完成するかどうかは僕にも分かりませんw
(途中でつまづいたらどなたかアドバイスください…!)
作りたい機能の仕様は下記のとおりです。
- 仕様
-
- アメブロで特定のテーマ(=ブログカテゴリー)で書いた記事をWordPressで管理している別サイトに転送して記事化する
- 転送は毎日深夜0時に自動でおこなう(前日分の記事を転送)
- 重複ペナルティーを避けるために転送先の記事には「nofollow」「noindex」を加える
こんな感じです!
僕の運営するサイト『未来地図』では、普段アメブロでブログを書いているママブロガーの方々が活動してくれているのですが、「どちらのサイトにも掲載したい記事がある」「書き慣れているアメブロのほうが書きやすい」なんて話をいただいたので、こんな機能があったら良いだろうという話になりました。
基本的にはRSSを元に記事化する感じで実装できると思うのだけど、早速これから30分ほど試してみます!
30分後・・・!(SEO無視の見出しw)
今回、未来地図のママスタッフyukiさんのブログを利用させていただきました。
30分間あれやこれや調べたり試したりして、ひとまずアメブロのRSSを取得して中身を表示するところまで進みました。
▽取得結果
アメブロのRSSデータをWordPress側に引っ張ってくることには成功。
(明日まではこちらのページで実際に確認できます)
作った関数はこちら。
RSSのURLを渡して中身を表示してくれる関数です。
//RSSから自動記事作成 function create_blog_by_feed($url, $count=5) { //RSSデータを取得 $feed = fetch_feed($url); //RSSデータ取得時にエラーが出たら処理終了 if(is_wp_error($feed)) exit; //一応取得件数の最大値を定義しておく $maxitems = $feed->get_item_quantity($count); //指定した件数のRSSデータを格納 $rss_items = $feed->get_items(0, $maxitems); //今回は利用しないが↓でブログのメインタイトルやURLを取得できる $title = $feed->get_title(); $site_url = $feed->get_permalink(); //試しに取得したRSSデータの中身を表示してみる foreach($rss_items as $item) { echo '<h2>' . esc_html($item->get_title()) . '</h2>'; //タイトル echo '<p>' . $item->get_date('Y.m.j') . '</p>'; //日付 echo '<p>' . $item->get_content() . '</p>'; //本文 } }
(試行しながらなのでコメント多めw)
WordPress側にRSSを取得する関数が用意されていたのでRSSデータを持ってくること自体は簡単だったのですが、アメブロのRSS用URLを見つけるのに時間がかかりました。
- アメブロのRSS
- http://rssblog.ameba.jp/アメブロID/rss20.xml
一般的にはURL末尾に「/feed」とか「/rss」がつくことが多いですが、アメブロの場合は上記のURLで配信されていました。
しかも、1つ分かったのが、アメブロはカテゴリーごとのRSSページが無いし、ブログ全体のRSS情報の中にもカテゴリー情報が無い!ということ。
これは結構大変そうだ…。というかどうやって実装するんだろうw
(スクレイピングはやったことがなくて1から勉強になっちゃうので出来れば避けたい)
- 残り作業
-
- 取得したRSSデータの中から指定するカテゴリーの記事だけ抽出する(これが出来れば後は簡単そう!)
- 取得するRSSデータを前日分のみにする
- RSSデータを元にWordPressの記事を作成する処理を追加する
- 毎日深夜0時にこの処理が実行されるようにcronにセットする
おわりに
以上、今回はWordPressでアメブロ特定テーマの記事を自動で記事化する機能に挑戦してみました。
夜にまた少しコーディングの続きをする予定なので、明日は報告とコード紹介をメインにできればと思います(*´`)
当サイトではWordPressのカスタマイズ依頼を請け負っています。実現したい機能・要望がある方はぜひ下記ページよりご相談ください。