Movable TypeにTwitter投稿機能をつける

リニューアル中なので、さくらのブログにあってMT標準にない機能をいろいろと追加中。

Twitterへの更新通知もその1つ。
PostTweetというプラグイン(エムロジック放課後プロジェクト: PostTweet アーカイブ)を試してみた。

さくらのブログだと、更新テンプレートが

『記事名』ブログ名|URL(非短縮)

になってるので、その通りにしたかったんだけど、何故か上手くいかない。末尾が切れてしまう。
いろいろ試していて原因が判明。なんと、このプラグインが勝手に140文字で切ってしまってた。

え?Twitterは140文字制限じゃないの?と思うかも知れないけど、実は現行のTwitterは「URLを含むツイートをすると勝手にt.coの短縮URLに変換されて、その部分は23文字(httpsの場合)しか消費しない」ということになってる。
参考:Twitterは140文字ではない。と気づいた時の処方箋 | アライドアーキテクツ エンジニアブログ

そのため、ツイート文字数を増やすためだけにtinyurlなどのサードパーティ短縮URLを使う意味はない。
URLをわかりにくくするなら意味はあるけど、私はそういうことはしたくない。
あとは、短縮URLサービスが提供してるトラッキング(アクセス解析)を使いたい場合とかもありそうだけど、それも今のところ不要だし、そもそもt.coだったらTwitter側の解析が使えるはずだからいらない。

そこで非短縮URLをツイートするようにテンプレートを書いたんだけど、プラグインが「140文字超えてる!切り捨て御免!!」って切っちゃってたというわけ。
本当はプラグイン自体を弄ってしまいたいけど、MTOSじゃないので改変禁止ライセンスになるから、合法的に弄れないため断念。
まあ、実用上問題ない結果になったのでよし。


最後に一応、私の書いたテンプレートを掲載。

<mt:setvar name="title_len" value="140" />
<mt:setvar name="link_len" value="50" />
<mt:setvarblock name="blog"><mt:blogname remove_html="1" /></mt:setvarblock>
<mt:setvarblock name="title"><mt:entrytitle remove_html="1" /></mt:setvarblock>
<mt:setvarblock name="link">|<mtentrypermalink type="Individual" /></mt:setvarblock>
<mt:setvarblock name="blog_len"><mt:var name="blog" count_characters="1" /></mt:setvarblock>
<mt:setvar name="title_len" op="-" value="$link_len" />
<mt:setvar name="title_len" op="-" value="$blog_len" />
<mt:setvarblock name="title_len_trimmer"><mt:var name="title_len" />+…</mt:setvarblock>
<mt:setvarblock name="title_trimmed">『<mt:var name="title" trim_to="$title_len_trimmer" />』</mt:setvarblock>
<mt:var name="title_trimmed" /><mt:var name="blog" /><mt:var name="link" />