オススメ記事を紹介するMovableTypeプラグイン:RecommendedEntry

Posted by
ぴろり
Posted at
2007/02/12 16:59
Trackbacks
関連記事 (2)
Comments
コメント (36)
Post Comment
コメントできます
Category
プラグイン カテゴリ

 Amazon などで『この商品を買った人はこんな商品も買っています』という案内をご覧になったことがあると思います。ユーザの購買動向を分析することで関連商品を推薦(リコメンド)してくれる機能で、その絶妙なチョイス(?)に釣られて他の商品ページに寄り道してしまう方も多いのではないでしょうか?
 そこで、などでもこれを真似て『この記事を読んだ人はこんな記事も読んでいます』なんてナビゲーションが作れると面白いかもしれません。RecommendedEntry は、過去の訪問者が辿った記事の傾向を集計して,簡易的な記事リコメンデーション機能を実現するためのです。

この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する | Twitterにポストする

動作環境

 ビジタの動向データの集積と集計に を使用しています。 ご利用の が使用でき、 かつ RecommendedEntry をご利用の予定のの個別記事ページで が動作する必要があります。

  • 3.3x 以上(もしかしたら 3.2 でも動くかも)
  • [必須] 個別エントリアーカイブで が動作すること

動作概要

動作概要図

 RecommendedEntry は、個別記事ページにユーザ追跡のためのコード片を埋め込みます。 ユーザが個別記事ページを閲覧する度に、ユーザがどのような順番でページを渡り歩いたのかを集積し、 このデータを集計することで記事間のユーザの移動状況を求めることができます。 ユーザ追跡にはの Cookie を使用していますが、 あくまで任意のユーザの記事間の移動を追跡することが重要であって、 ユーザを個々に限定・追跡することが目的でがありません。
 また、記事リコメンデーションの精度についてですが、 ユーザ嗜好や記事内容の関連性のクラスタリングと云ったリコメンデーションで多用されるは全く使われていません。 個々のユーザが現在閲覧している記事を基点としたユーザの移動をデータとして集計し、 多いものから順に表示するだけの非常に好い加減かつお遊び的なものであることを了承ください。

導入方法

 少し手順が複雑ですが、気合で(ぇー

  1. の導入
  2. エントリ一覧用インデックスの作成
  3. データフォルダの準備
  4. エントリアーカイブの修正

1.の導入

 したアーカイブを展開します。 MTRecommendedEntry.pl というファイルが一つだけ現れるので、 のインストールフォルダにある plugins にコピーしてください。 その後、 の管理画面から[]と移り、 RecommendeEntry が表示されていることを確認します。

2.エントリ一覧用インデックスの作成

 RecommendeEntry はエントリの一覧を記述した ファイルを要求します。 以下の内容でインデックスを新規作成してください。 インデックスの名前とファイルの出力先はどこでも構いませんが、どちらか一方を控えておいてください。
 このインデックスは、後述の $MTRecommendedEntryParam$ タグで必要とするパラメータに応じて編集してください。 下の挙げた例では記事タイトル(title)と記事のパーマ URL (permalink)が記述されています。 記事 ID (eid) の項は RecommendeEntry が使用するため変更しないでください。

3.データフォルダの準備

 次に、RecommendeEntry が集計したユーザ動向のデータファイルを保存するためのディレクトリを作成してください。 データファイルには個人が含まれるわけではありませんが、気になる人はドキュメントルート以外に作成されることをします。 作成したディレクトリの絶対パスを控えておいてください。

4.エントリアーカイブの修正

 RecommendeEntry を用いて、ユーザ動向の集計と記事リコメンデーションを行うために、 個別アーカイブを修正します。 最も小さな個別アーカイブは次のようになります。

 <$MTUseRecommendedEntry$> タグには、先ほど準備したエントリ一覧用インデックスの名前とデータフォルダのディレクトリパスを指定する必要があります。また <$MTUseRecommendedEntry$> タグはあらゆる文字出力が行われる前に記述されるよう、必ずファイルの先頭に置いてください。

追加されるタグ

$MTUseRecommendedEntry$ タグ
 記事リコメンデーションを行うページの一番最初で文字出力を行う前に一度だけ記述してください。 タグの前に文字列や空白文字、改行があると Cookie が正しく処理されませんので注意してください。 このタグは動作に必要な のコード片を生成します。 個別エントリアーカイブのみで使用されることを想定していますので、 カテゴリ別アーカイブや月別アーカイブ、インデックスでは使用できません。
template [必須*]
 エントリ一覧用インデックスの名前を指定します。 このパラメータを省略する場合、後述のindexが必須です。 両方の指定がある場合、indexによる指定が優先されます。
index [必須*]
 エントリ一覧用インデックスによって出力されたファイルへの絶対パスを指定します。 このパラメータを省略する場合、先述のtemplateが必須です。 両方の指定がある場合、templateによる指定を上書きします。
datapath [必須]
 データフォルダの絶対パスを指定します。 ユーザ動向のデータファイルがここで指定されたパス以下に生成されます。 このパラメータは省略できません。
cookie_expire
 ユーザ追跡用 Cookie の有効期間を設定します。このパラメータは省略できます。 省略時のデフォルト設定値は 30 日間です。
cookie_name
 ユーザ追跡用 Cookie の名前を設定します。このパラメータは省略できます。 省略時のデフォルト設定値は mtrcmnd_eid です。 既存の Cookie と名前が衝突する場合には変更してください。
MTRecommendedEntries コンテナタグ
 現在のエントリについて、流入数、流出数の多いエントリを列挙するためのコンテナタグです。 このタグはループ処理のための小さな コード片を生成します。 一般的な タグとは動作が異なりますので注意ください。
mode
 集計モードを設定します(動作概要図も参照してください)
  • 0 … 流入数(incoming flow)と流出数(outgoing flow)を合算します。ビジタの相互間の移動が多いエントリを集計します。デフォルト設定値です。
  • 1 … 流入数(incoming flow)のみを集計します。現在のエントリへビジタが流入した流入元エントリを集計します。
  • 2 … 流出数(outgoing flow)のみを集計します。現在のエントリからビジタが移動した流出先エントリを集計します。
offset
 ランキングの上位 offset 位を表示しません。デフォルト値は 0 です。
count
 ランキングの上位を offset で指定された順位から count 件だけ表示します。デフォルト値は 10 です。
$MTRecommendedEntryParam$ タグ
 MTRecommendedEntries コンテナタグの中で使用します。
name [必須]
 name で指定されたパラメータを表示します。 タグのようですが、実際には小さな コード片を生成します。 そのため、タグで有効なグローバルフィルタなどは使用できません。 name に指定できるパラメータには、エントリ一覧用インデックスで記述されたパラメータに加えて、 流入数または流出数を示す count が常に使用できます。
 先に挙げたエントリ一覧用インデックスの例では、 name パラメータには titlepermalink を指定することができます。 例えばあなたが記事の作成された日付と投稿者名も表示したいと思うならば、 エントリ一覧用インデックスを以下のように修正し(一部抜粋)、 name="date"name="author"とすることで実現できるでしょう。

ユーザ動向のデータファイルについて

 RecommendedEntry が利用するユーザ動向が集積されたデータファイルについて説明します。 MTUseRecommendedEntry タグの datapath パラメータによって指定されたディレクトリ以下に、 <記事 IDα>.txt というファイル名で記事毎にテキスト形式のデータファイルが生成されます。  <記事IDα> の記事には <記事IDβ> から <流入カウントβ> の訪問があり、 <記事IDα> の記事からは <記事IDβ> <流出カウントβ> だけユーザが移動したことを示します。 初めてサイトを訪問するユーザや、Cookie の有効期限が切れたユーザが <記事IDα> を訪問した場合、 同じ <記事IDα> の <流入カウントα> として記録されます。

困った時は

Warning: touch(): Unable to create file XXX/XXX.txt because Permission denied in XXX line XXと表示される
 データファイルの保存先に指定したディレクトリ(datapath)に/からファイルを生成できるように,適切な書き込み権限を与えてください。
Warning: Cannot modify header information - headers already sent by (output started at XXX:XXX) in XXX on line XXXと表示される
 $MTUseRecommendedEntry$タグはページの一番最初に記述してください。また,エントリ一覧用インデックスにも余計な空白,改行が含まれていないか確認してください。タグよりも前には空白・タブ文字や改行などのあらゆる文字出力があってはいけません。
ページ一覧が表示されない
同じページをリロードしただけではカウントされません。一度,他のページを見てCookieを受けてからページを見てください。

RecommendedEntry  new
ファイルのMD5ハッシュ値: 15936af0022a8c1e3135ceb93eefe985
ver.1.00, '07/02/12, 2508 bytes, 3.33 で動作確認、 必須
  • 初版公開

最新版のやバグレポートはRecommendedEntry の trac レポジトリでも行っています。

のお願い

 開発の継続のためには、書の購入やバグの修正、新機能の追加、欄でのユーザサポートなど、意外にお金と時間を費やします。そこで、「ビールでも奢ってやるか」ですとか「これで牛丼(並)でも食え」と仰るお方からのお申し出をいつでも受け付けております。どうぞ、よろしくお願いいたしますm(_ _)m
 金の送付には PayPal の小額決済をご利用いただけます。


この記事を読んだ人はこんな記事も読んでいます 記事リコメンデーションについて

その他の関連する記事


関連記事/トラックバック (全 2 件中、最新 5 件まで表示しています)

Open MagicVox.net のスクリーンショット
タイトル
RecommendedEntry プラグインの導入は平均ページビュー増加に効果があります
Trackbacked at
2009/02/04 07:52
from
Open MagicVox.net
評価
Web Scouter
概要
 と言ってもいいでしょう。TinyLPO プラグインの効果測定をヒントにRecommendedEntry プラグインについても導入した効果測定もしてみま...

WEBデザインストック のスクリーンショット
タイトル
この記事を読んだ人はこんな記事も読んでいますを実現するプラグイン
Trackbacked at
2008/05/22 12:13
from
WEBデザインストック
評価
Web Scouter
概要
Amazonなどにある、この商品を買った人はこんな商品も買っていますを、Mov...

この記事にトラックバックを送るには?

寄せられたコメント (全 36 件中、最新 5 件まで表示しています)

Posted by
ぴろり ◆OLEEi.VOX.
at
2010/05/22 13:38
ID
qNLIsMO6

試せてはいないのですが、MTのバージョンに依存するような部分はないと思うので、動作すると思います。

Posted by
上田
at
2010/05/21 15:03
ID
x/up/LUw

はじめまして。
とても便利なプラグインなので是非導入してみたいと思っていますが、こちらはMT5でも動作しますでしょうか。

どうぞよろしくお願いいたします。

Posted by
ty
at
2010/03/10 12:37
ID
X5pe.5as

>ぴろり様

カテゴリでの絞り込みには対応していないとのことで、ご返答ありがとうございました。

また、対応していただけることを祈りつつ、ちょこちょこ見にこさせていただきます。

ご返答ありがとうございました。

Posted by
ぴろり ◆OLEEi.VOX.
at
2010/03/08 17:15
ID
fovHBqpk

カテゴリでの絞込みには現在対応していません。
でも、面白いアイディアだと思うので検討はしてみたいと思います。
ありがとうございました。

Posted by
ty
at
2010/03/08 00:43
ID
pF8l2yfI

すみません。

さきほど質問させていただいたのですが、ソース部分 注意事項を見落としておりました。

下記ご確認くださいませ。

<?php
function RecommendedEntry_getAllEntries () {
$ret = array ();
<MTEntries lastn="9999" >
array_push ($ret, array (
'eid' => '<$MTEntryID$>',
'title' => '<img src="<$MTBlogURL$><$MTEntryCategory$>/img/<$MTEntryTitle$>-thumb.jpg" border="0" class="over" alt="<MTExtraFields><$MTExtraFieldValue field="pagetitle"$></MTExtraFields>">',
'permalink' => '<$MTEntryPermalink$>',
'pagetitle' => '<MTExtraFields><$MTExtraFieldValue field="pagetitle"$></MTExtraFields>',
'lead' => '<MTExtraFields><$MTExtraFieldValue field="lead"$></MTExtraFields>',
null));
</MTEntries>
return ($ret);
}?>

コメントを投稿する

 
 (匿名可/必須/公開)
 (匿名可/必須/非公開)
 (必須)
コメントスパム防止のため投稿前に ランダムな数字 CAPTCHAについて を入力してから投稿してください。お手数ですがご協力のほど宜しくお願いいたします。
 
MovableType, NovableType, JovableType, KovableType, MIvableType, M9vableType, M0vableType, MPvableType, MLvableType, MKvableType, MoCableType, MoFableType, MoGableType, MoBableType, MovQbleType, MovWbleType, MovSbleType, MovZbleType, MovaVleType, MovaGleType, MovaHleType, MovaNleType, MovabKeType, MovabOeType, MovabPeType, MovablWType, Movabl3Type, MovablRType, MovablDType, MovablSType, MovableRype, Movable5ype, Movable6ype, MovableYype, MovableGype, MovableFype, MovableTTpe, MovableT6pe, MovableT7pe, MovableTUpe, MovableTHpe, MovableTGpe, MovableTyOe, MovableTy0e, MovableTy-e, MovableTyLe, MovableTypW, MovableTyp3, MovableTypR, MovableTypD, MovableTypS プラグイン PHP, OHP, 0HP, -HP, LHP, PGP, PYP, PUP, PJP, PNP, PBP, PHO, PH0, PH-, PHL ダウンロード