MAGAZINE
ルーターマガジン
curlだけでMovable Typeに記事を投稿する方法
こんにちは、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は以下の画像のように確認できます。
- MT管理画面のウェブサイトまたはブログの一覧ページにアクセスします。
- 右上の表示オプションをクリックします。
- 表示項目の中のIDにチェックを入れます。
- 表示された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ソリューションを提供しております。
なにか自動化されたい業務がありましたらぜひご相談ください!
CONTACT
お問い合わせ・ご依頼はこちらから