こんにちは、Kawaguchiです。
今回は、Movable TypeへData API (主にcurl) を用いて記事を作成する方法について解説していきます。

Movable Typeとは

Movable Type (以下、MT) をwikipediaで調べると、

Movable Type(ムーバブル・タイプ、MT、エムティー)は、シックス・アパートが開発・提供する、ブログで用いられることの多いコンテンツ管理システム (CMS) 製品である。プラグイン機構により機能を拡張できることが特徴である。(参照:https://ja.wikipedia.org/wiki/Movable_Type)

と、ありますが、簡単に説明すると、WordPressに似たコンテンツ管理システムのことです。

MTは現在バージョン7まで出ていますが、今回はバージョン6のData APIについての内容になっております。
バージョンが異なるとData APIの仕様が異なる場合がありますので、お気をつけください。


Data APIの使用確認

versionの確認

まず、Data APIの使用確認として、versionの確認をしてみましょう。
<your-host>/<path-to-mt>には、MTへの登録の際に設定したCGIPathを指定してください。 CGIPathについて


$ curl http://<your-host>/<path-to-mt>/mt-data-api.cgi/version

バージョンによって異なりますが、成功すると{"endpointVersion":"v3","apiVersion":3.2}というようなJSONが返ってきます。
今後出てくる<mt-version>には、endpointVersionであるv3を指定します。

記事の取得

バージョンを取得できたら、記事の取得を行ってみましょう。
以下のcurlで必要な<site-id>には、記事を取得したいサイトもしくはブログのidを指定します。
ちなみにsite-idは以下の画像のように確認できます。

  1. MT管理画面のウェブサイトまたはブログの一覧ページにアクセスします。
  2. 右上の表示オプションをクリックします。
  3. 表示項目の中のIDにチェックを入れます。
  4. 表示されたIDカラムの値がsite-idです。

$ curl http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/sites/<site-id>/entries

成功すると、各記事の情報がJSON形式で返ってきます。


記事を投稿するData API

記事を投稿するにはアクセストークンが必要になるので、先に取得しておきましょう。

アクセストークンの取得

アクセストークンを取得する方法は、以下の項目を-dオプションで指定し、urlのmt-versionの後にauthenticationを付けます。

username サインインするユーザーのユーザー名を指定します。
password サインインするユーザーのパスワードを指定します。注意して頂きたいこととして、
v3 からは、CMS のログインパスワードではなく、Webサービスパスワードを指定することになっています。
Movable TypeのWebサービスパスワードを確認する方法
remember 1を指定すると、ユーザーのログインセッションは、サインアウトするまで有効になります。
clientId これはなんでもOKです。

$ curl -d username=<your-username> -d password=<your-password> -d remember=1 -d clientId=hoge http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/authentication

成功すると、accessTokenや、sessionIdなどが含まれたJSONが返ってきます。
記事を投稿する時に必要な<事前に取得したアクセストークン>にはaccessTokenの値を指定してください。

記事の投稿

記事を投稿するのはGETではなく、POSTなので-XでPOSTを指定します。
先ほど取得したアクセストークンは-Hオプション内に入れます。
記事の中身は-dオプションでentry内に指定します。entry内のダブルクォーテーションは\(バックスラッシュ)で、エスケープしないとエラーになるので気をつけてください。


$ curl -X POST -H "X-MT-Authorization: MTAuth accessToken=<事前に取得したアクセストークン>" -d entry="{\"title\" : \"sample_title\", \"body\" : \"sample_body\"}" http://<your-host>/<path-to-mt>/mt-data-api.cgi/<mt-version>/sites/<site-id>/entries

無事に投稿できたでしょうか?

さいごに

株式会社ルーターでは上記のような記事投稿の自動化を始め、様々なホワイトカラー業務を自動化できるRPAソリューションを提供しております。

なにか自動化されたい業務がありましたらぜひご相談ください!

Posted in RPA