Posts Tagged ‘blog’

GreasemonkeyからXMLRPCプロトコルでブログに投稿する

XML-RPCを使ってWordpressやMovable Typeなどのブログに投稿するGreasemonkeyの書き方みたいなものです。
XMLRPCに対応したブログにどういうものがあるかは下のサイトによくまとまってます。(ちょっと古いですが)

BlogWrite – Atom API, XML-RPC
http://www.witha.jp/BlogWrite/bloglist.html

WordPressでしかテストしてませんがXMLRPCに対応してるブログなら動作すると思います。
今回は投稿機構みたいなものを書いただけなので、このスクリプトだけではあんまり意味はないと思います。

// ==UserScript==
// @name           XMLRPC poster
// @namespace      http://efcl.info/
// @include        http://*
// ==/UserScript==

/* 投稿先のメタ情報 */
var metaBlog = {
	"endPoint" : "ブログのエンドポイントURL",
	"blogid"   : "ブログのログインID",
	"username" : "投稿者名", //空だとblogidを使用
	"password" : "パスワード"
}

var XMLRPC = (function() { this.initialize.apply(this, arguments); });
XMLRPC.prototype = {
	/*
	 * @arg
		{
				"endPoint": "endPoint",
				"blogid"   : "blogid",
				"username" : "username",//空だとblogidを使用
				"password" : "password"
		}
	*/
	initialize : function(arg) { //引数は{}オブジェクト
		this.endPoint = arg.endPoint;
		this.blogid   = arg.blogid;
		this.username = (arg.username) ? arg.username : arg.blogid;
		this.password = arg.password;
	},
	/* *
	 * @title 記事タイトル
	 * @desc 記事内容
	 * @tags タグ(カンマ区切り)
	 * @callback 更新成功時のコールバック関数
	 */
	post : function (title, desc, tags, callback){
		var postURI = this.endPoint;
		this.tags = (tags.length == 0) ? "" : tags.join(",");
		var XMLbody = '<?xml version="1.0"?>\n';
		XMLbody += this.template(title, desc , this.tags);
		console.info(XMLbody);
		GM_xmlhttpRequest({
			method : "POST",
			headers : {
				'Content-type' : 'text/xml'
			},
			url : postURI,
			data : this.template(title, desc , tags),
			onload : callback,
		})
	},
  template : function (title, desc , tags){
    var repuest =  <methodCall>
                      <methodName>metaWeblog.newPost</methodName>
                      <params>
                        <param>
                          <value>
                            <string>{this.blogid}</string>
                          </value>
                        </param>
                        <param>
                          <value>
                            <string>{this.username}</string>
                          </value>
                        </param>
                        <param>
                          <value>
                            <string>{this.password}</string>
                          </value>
                        </param>
                        <param>
                          <value>
                            <struct>
                              <member>
                                <name>title</name>
                                <value>
                                  <string>{title}</string>
                                </value>
                              </member>
                              <member>
                                <name>description</name>
                                <value>
                                  <string>{desc}</string>
                                </value>
                              </member>
                              <member>
                                <name>mt_keywords</name>
                                <value>
                                  <string>{tags}</string>
                                </value>
                              </member>
                              <member>
                                <name>mt_allow_comments</name>
                                <value>
                                  <boolean>1</boolean>
                                </value>
                              </member>
                            </struct>
                          </value>
                        </param>
                        <param>
                          <value>
                            <boolean>1</boolean>
                          </value>
                        </param>
                      </params>
                    </methodCall>;
		return repuest.toString();
	}
}
/* init メタ情報を使って投稿先決める*/
var t = new XMLRPC(metaBlog);
t.post(
	"title",
	"description",
	["tag1","tag2"],
	function(res){//callback
		console.log(res);
	}
);

ブログのエンドポイントURLは各ブログによってまちまちですが、Wordpressだとhttp://WordPressトップ/xmlrpc.php
になります。

E4Xを使ってポストするXMLを作成していますが、先頭に<?xml version=”1.0″?>を入れるとなぜかエラーになったので、後で結合するようにしました。
後、XMLRPCを使ってWordpressにタグを指定できるのかを検索した時、下のようにできないというのが出てきましたが、mt_keywordsにタグを指定できます。
なので下の情報は古いか間違っています。

WordPressでXML-RPCを使った投稿で、記事にタグの指定はできるのでしょうか。できるようでしたらやり方を書いたページを教えてください。.. – 人力検索はてな

WordPressでは,で区切る事でタグを複数指定できます。
カテゴリーは面倒だったので放置してます(誰か…)

記載したソースは自由に使用してください。
gist: 224968 – GitHub

参考

肉少なめ | Item – Greasemonkeyでブログを更新
http://niku.suku.name/item/591
MovableType で使える XML-RPC API
http://www.na.rim.or.jp/~tsupo/program/blogTool/mt_xmlRpc.html#w01
XML-RPC経由の投稿 でタグを登録したい « Selflow WordPress
http://www.selflow.com/?p=6

追記 完全に自分用になってますがこれを使ったものを作ってみた。

NicoMylist poster with XML-RPC for Greasemonkey
http://userscripts.org/scripts/show/64569

ニコニコのマイリストからWordpressへポストするGreasemonkey。
上記では実現できてなかったカテゴリーの指定もできるようになりました。

WordPressのcategoriesは複数なので、XML-RPCからポストする場合もArrayで要素を作らないといけなかったようです。
XML部分だけを取り出したもの→gist: 398599 – GitHub

MetaWeblogAPI metaWeblog.newPost メソッド
http://msdn.microsoft.com/ja-jp/library/aa905673.aspx
juust ~ php oddities » metaWeblog.newPost posting to WordPress from Word
http://www.juust.org/index.php/metaweblog-newpost-posting-to-wordpress-from-word/2009/10/

「RefControl」でリファラを偽装しておくべきサイト

RefControlというアドオンを使う事でURL毎に、リファラを阻止や偽装することができます。
偽装までしなくても阻止すれば問題ないサイトも多いです。

RefControl
https://addons.mozilla.org/ja/firefox/addon/953

このアドオンを使ってリファラを阻止、偽装しておくべきサイトのメモ

URLのリストはインポートできるので、インポートするのが一番楽です。
ss-2009-09-23-21-07-59

RSSリーダから画像を表示するためにリファラを偽装、阻止するサイト

  • blogs.yahoo.co.jp
  • fc2.com
  • image.itmedia.co.jp
  • plusd.itmedia.co.jp

AmazonはGoogleからのリファラを見て、商品説明の上部に検索結果を表示するようになったためリファラを偽装しています。

  • www.amazon.co.jp

WordPress 移転と使用プラグインのまとめ

 

サーバ移転してプラグインやテーマも切り替えたのでメモ。

サーバ移転の参考

[WP]WordPressのサーバー&ドメイン移転メモ | emuxx blog
基本的なやり方が書いてある。
301リダイレクトの方法
WordPressのサーバー&ドメイン移転 | WordPress | 『Weblogy』

WordPressで使ってるプラグイン

WordPressの自動バックアップをGmailで取る | VIVABlog
Gmailにgzipで圧縮したデータベースをバックアップする。
WordPress › 404 Notifier « WordPress Plugins
404が発生したページをRSSまたはメールで知らせてくれる。
移転したときなどの調査が楽になる。
関連エントリーの自動作成プラグイン『YARPP』 | WordPress | 『Weblogy』
記事の本文等を解析して、自動的に関連記事をグルーピングするプラグイン。日本語に対応してる。
閾値は3にして使用してる。
関連記事リストを作成するプラグインのまとめなども書いてあるので読んでおくべき。
Yuriko.Net » WP-PageNavi を使わずにナビゲーション表示
どちらにしてもテーマをいじらないといけないのでこっちの方が楽だった。
Maintenance Mode Plugin — Software Guide
管理者だけにページを表示するメンテナンスモードをつける。
日本語化ファイル
guff : Post Updated
投稿の更新日時を表示するプラグイン。
自分的には必須な気がする。デフォルトで用意されてそうな気もするけど。
WordPress › PS Disable Auto Formatting « WordPress Plugins
自動整形を停止するプラグイン。
記事やコメントなど適応する範囲を指定できる。
過去の記事への適応も考慮されている。
自動整形は記事中にソースコードを書いたりする時邪魔になったり、floatをclearするタグが消えたりしてたから入れてた。
多分これを入れるとScribeFireとかからの投稿でおかしくなるかも。
自動整形機能のイライラを軽減するGoogle Syntax Highlighterプラグイン | とりさんのソフト屋さん
ソースコードをpreタグに入れてビジュアルとHTMLモードを往復を可能にする。
これがあれば自動整形があってもソースが書ける。
[WP:Plugin] 被ブックマーク数表示+ランキング生成プラグイン | AOINA.COM
国内のSBMに対応してる&記事の被ブックマーク数をカスタムフィールドに保存できる。
人気記事をランキングできるので重宝してる。wp-sbm_popular_entry
記事下に注釈を表示するプラグイン「WP-Footnotes」 » FORGET
特定のフォーマットで書くことではてなダイアリーみたいな注釈表記ができる。
((の前に半角スペースが必要
ページトラックバックプラグイン | ABCP-weblog
ページにトラックバックを送信する機能をつける.
何でデフォルトでないのかが不思議。 ((WordPress2.8以上で動作))
WordPress › Enhanced Recent Posts « WordPress Plugins
新着記事ウィジェットの上位互換です。
更新された記事や含むカテゴリーなども設定できる。
WordPress Plugins/JSeries » Feed Control 日本語版
RSSに更新された記事を含められる。
ただしATOMは対応してない。対応してるプラグインあったら教えて欲しいです。

 

はてなダイアリーへのポスト機構を追加するGreasemonkeyスクリプト

元ネタ

Greasemonkeyに、はてブポスト機構を追加するGreasemonkeyスクリプト
http://d.hatena.ne.jp/nastack/20080610/1213100873

はてなダイアリー版が有れば結構便利そうなので、作成してみた。
単体では特に意味はないGreasemonkeyなので、他のGreasemonkeyから呼び出して使用します。
@includeの初期値が*となってしますが、使うところに限定する方がいいかも。

gist: 35464 — GitHub

使い方ははてブ版とほとんど同じで、上のをインストールしてなるべく上の方におきます。
Altキーを使って移動させる。

ポスト機構の使い方

if(!window.Hateda)return; //ポスト機構ができていなかったら終了する

var atom = new window.Hateda(
	"userID", //ID
	"password" //パスワード
).include(this);

IDとパスワードはどちらも文字データで入れてください。

var userID = "userID"//ID
var passWD = "password" //パスワード
var atom = new window.Hateda(
	userID, //ID
	passWD //パスワード
).include(this);

という感じでも大丈夫です。

上でユーザーの情報をポスト機構に割り当ててから、実際にポストさせます。

	atom.post(
		["test", "tags"], //タグ 配列データ
		"titlename",      //title
		"comment",    //コメント
		function (){ //ポストが完了時実行される
			console.log("post!")
		}
	)

ポスト機構はかなり手抜きで日付は設定させてないので、常に最新の位置にポストしています。

ブログ記事に関連性のある画像を挿入できる「Zemanta」

Walter Connolly in Libeled Lady trailer.

Image via Wikipedia

Zemantaはブログの記事内容に対して、入力された単語からそれにそうような画像をFlickrなどの二次利用ができる画像を検索してくれるアドオンである。(日本語は無視される)
使用するには利用しているブログが対応しているかを確認し、アドオンをインストールする。
アドオンはFirefoxとIEどちらにも対応している。

Zemantは“WordPress” “Blogger” “MovableType” “TypePad” “LiveJournal”などのブログに対応する。

基本的な使用方法はアドオンをインストールした状態で通常の投稿画面に行き、記事を書いていけば画像が自動で取得されていき(手動で選ぶこともできる)、利用したい画像をクリックするだけの簡単さである。

Zemanta
http://www.zemanta.com/

各サイトを記事同士の関連性でを繋ぐブログパーツ”シムエントリ”

シムエントリ』というブログパーツ(Webサービス)の紹介です。
シムエントリはサイトのfeed(RSSのURL)を登録し、javascriptコードをブログのテンプレートに書くことで、
その記事の内容に関連する他サイトの記事へのリンクを表示するブログパーツです。

大きな特徴は内容を解析して、シムエントリに登録してあるブログの中から関連性が高いものを表示するという点です。
記事の関連性のみを参照するため、アクセス数や人気度などに影響されないのがいい点でもあります。

コード自体は2行のjavaascriptなので大抵のブログで取り入れることができると思います。
詳しいやり方は【シムエントリ】ブログパーツの貼り付け方を参照。

という感じでテスト記事を書いてみた。
下の方に関連するブログの記事が表示されるそうです。

更新頻度は

情報更新頻度 現状のシステムでは、6時間~1日に1回、データを更新します。リアルタイムでは更新されませんのでご注意ください。

とのこと。

シムエントリ
記事をブログパーツで結ぶ

プロフィール: azu(あず)
Firefoxの事やソフトウェアの紹介や使い道、Greasemonkeyの作成
  • OS:Vista
  • ブラウザ:Firefox
  • Twitterのアカウントはこちら
  • azu_re
  • メールアドレス(Twitterの方が確実)
  • info@ドメイン名
リンク

WebMoney ぷちカンパ

あわせて読みたい