iPhoneショートカットからWordPressに下書きを送る ― APIを郵便のやり取りで整理してみた

こんにちは、ごうはちです。
今回、iPhoneショートカットから直接WordPressに「下書き」を送るショートカットを作りました。

やっていることはシンプルですが、裏側では API という仕組みが動いています。
この記事では、その API の動きを「郵便のやり取り」にたとえながら、ショートカットで下書きが届くまでの流れを、整理します。
1. この実装をやろうと思った理由
実はこのショートカット、色々と構想している自動化の一部分だったのですが、思いの他、苦戦をしたのと、まったく知らなかった事も出てきて、勉強になったので、備忘録も兼ねて、記事にすることにしました。
その構想をざっくりいいますと、断片的にまとめたブログネタを、AIに投げて、帰ってきた返答を、WordPressの下書きに放り込むというものです。
色々調べて、使うことにしたのが、WordPressが公式に用意している REST API でした。
2. そもそも「API」とは何か?
API(Application Programming Interface)は、「専用の郵便システム」を例に理解していくことにします。
- APIエンドポイント:「投稿受付窓口」という、正確な住所(URL)。
- APIの役割:私たちのデータを、WordPressに届ける専用の配達員。
普段、私たちはブログの管理画面(玄関)からログインして、投稿ボタン(手書き)で記事を作ります。
これは「郵便局の窓口まで自分で行く」ようなものです。
対してAPIは、「決められた形式の郵便を送ること」「遠隔で処理を依頼する仕組み」です。
💡 「REST」って何の意味?
WordPressのAPIは正確には「REST(レスト)API」と呼ばれます。
このRESTとは、簡単に言うと「Webの世界で最も一般的な, 郵便の送り方のルール(規格)」のことです。
- 住所(URL)で場所を指定する
- 動詞(GET/POSTなど)で命令を伝える
このように、Webの標準的なお作法(REST)に従っているからこそ、iPhoneのショートカットという外部のツールからでも、迷わずWordPress郵便局に荷物を届けることが可能になります。
3. 準備:専用の「私書箱の鍵」を手に入れる(アプリケーションパスワード)
APIという「裏口」から郵便を届けるには、特別な許可証が必要です。
アプリケーションパスワードは、いわば「投稿受付という特定の私書箱だけを開けられる合鍵」です。
パスワード取得方法
- WordPress管理画面の「ユーザー」→「プロフィール」へ。
- 「新しいアプリケーションパスワード名」に名前(例:テスト用)を入れ、ボタンを押します。
- 表示された24文字をコピーします。

「ツール」→「プロフィール」
と進みます。


なぜメインのパスワードを使わないのか?
正門の鍵(WordPressメインパスワード)を渡すのはセキュリティ上不安ですが、この「私書箱の鍵」なら、万が一盗まれても、その鍵穴を替える(パスワードを削除する)だけで済みます。ブログ全体の安全を守りつつ、特定の作業だけを自動化するための賢い仕組みといえます。
💡 重要:パスワードの「空白」
表示されるxxxx xxxx xxxx xxxx… という空白は、人間向けの親切心です。システムに渡すときは、すべての空白を削除して24文字をギュッと詰めてください。この1ミリの隙間も許さない厳格さが、API開通の第一歩のようです。
4. 認証情報のパッキング(手順と理由)
まず初めに、WordPressの私書箱を開けるための「鍵」を準備します。ショートカットのアクションを順番に並べていきましょう。
【手順】
- 【テキスト】アクションを追加し、
ユーザー名:アプリケーションパスワードを入力します。:は「半角コロン」です。 - その下に 【Base64エンコード】アクションを追加し、1のテキストを渡します。アクションの中身はいじらずです。

なぜわざわざ変換するのか?
これは、生の鍵を「輸送用の真空パック」にする作業です。
Base64は、データを「A-Z, a-z, 0-9, +, /」という、世界中のどんなコンピュータでも100%誤解せずに読み取れる64種類の文字だけに置き換えます。
「暗号」のように誰にも読めなくするのが目的ではなく、「どんな過酷なルートでも、中身を壊さず、正確に窓口まで届けること」が目的の、いわば梱包術のようなものです。
- そのまま送ると…:生の食材をそのまま送るようなもの。配送ルートには特定の記号(
:など)を「システムへの命令だ」と勘違いして、勝手に書き換えたり配送を止めてしまったりする古い機械が混じっています。途中で「汁漏れ(通信エラー)」を起こして、郵便局に拒否されるリスクがあるのです。 - Base64にすると…:真空パックして無地の白い箱に入れるようなもの。中身が何であれ、外側からは安全な荷物にしか見えないので、どんな配送ルートでも拒否されずに最後まで届きます。
5. 封筒の表書きを整える(手順と理由)
真空パックした鍵に、正式な「通行証」としての仕上げを施します。
【手順】
- さらに下に 【テキスト】アクションを追加します。
Basic(※末尾に半角スペースを入れる)と打ち、その直後に 「Base64エンコード済みのテキスト(変数)」 を配置します。- 2で作ったテキストは後ほど使いますので、【変数を設定】のアクションを置き、「①通行証」と名付けておきます。
この「Basic」って何?
これは、封筒の左上に貼る「VIP通行証」を完成させる作業です。
郵便局(API窓口)には、免許証やパスポートなど、複数の本人確認ルールがあります。ここで Basic という合言葉を添えるのは、「私は『基本のID:パスワード方式』で来た正規の差出人です」という、身分証の種類の宣言をするためです。
この「宣言(Basic)」と「鍵(Base64)」が揃って初めて、窓口の局員は「よし、正規の通行証だ」と認めて、荷物を受け取ってくれるようになります。もしこの宣言を忘れたら、たとえ本物の鍵を持っていても「提示のルールが違う」と突き返されてしまいます。コンピュータとの対話には、こうした「お作法への厳格さ」が必要なようです。
6. 指定の便箋に中身を書く(手順と理由)
「私書箱の鍵」の準備ができたら、次はいよいよ手紙の中身を作ります。ショートカットでは「辞書」というアクションを使います。
【手順】
「辞書」アクションを追加し、以下の項目(キー)と内容(値)を入力します。
- title: 記事の題名。ここに入れた文字が、WordPressのタイトル欄に直行します。
- content: 記事の本文。
- status:
draftと書くことで、「まだ公開せず、一旦局内の保管庫(下書き)に入れておいて!」という指示になります。

APIは、空気を読んでくれない
人間が相手なら、文章を読めば「あ、これがタイトルだな」と雰囲気で察してくれます。しかし、機械であるAPIは空気を読んでくれません。そこで必要になるのが、この辞書アクションで作る「内容物の明細票」です。
いわば、マークシート式の専用伝票に記入するような作業です。決められた枠(キー)に、決められた内容(値)を書き込むことで、郵便局の機械が「これはタイトル」「これは本文」と一瞬で仕分けできるようになります。
ショートカットとWordPressが正しく対話するための「構造化」というお作法のようです。
7. 窓口での発送手続き(手順と理由)
いよいよ最後のアクションです。これまで作った「鍵」と「荷物」を配達員に託します。
【手順】
「URLの内容を取得」アクションを追加し、以下を設定します。
- URL:
https://あなたのドメイン/wp-json/wp/v2/posts - 方法 (Method):
POSTに設定 - ヘッダ:キーに
Authorization、値に「5で作った通行証(Basic …)」を指定 - 要求本文:種類を ファイル にし、「6で作った伝票(辞書)」を指定

「取得」という名の万能な配達員
このアクションは、名前こそ「取得」ですが、実は「荷物を届けて、受領印をもらってくる」という往復の仕事をこなす、超有能な配達員です。
指示のポイントは以下の3つです。
- POST(方法):郵便受けを覗く(GET)のではなく、窓口で「これをお願いします!」と投函(新規登録)する合図です。
- ヘッダ:封筒の左上に、5で作った「VIP通行証」を貼り付けます。これで門番を突破します。
- 要求本文:封筒の中に、6で作った「明細付きの荷物」を詰め込みます。
荷物を届けて、その代わりに「確かに受け取りました、投稿IDは〇〇番です」という受領印(レスポンス)を取得して戻ってくれば、ミッション完了です!

こう帰ってきたら、成功!


8. 作りながら出てきた Q&A
Q.「ユーザー名:パスワード」という書き方はWordPress専用のルール?
答え:書き方は「世界共通」、パスワードは「API専用」です。
名前とパスワードを :(コロン)で繋ぐのは、Basic認証というWebの世界の超・基本ルール(世界共通規格)です。そこに、WordPressが発行した「API専用の合鍵(アプリケーションパスワード)」を差し込んでいるイメージです。共通の規格に従いつつ、中身を専用の鍵にすることで、安全と便利を両立させています。
Q. パスワードに空白が入っているけど、そのままでいい?
答え:空白はすべて削除してください。
人間向けの読みやすさは、システムにとっては1文字の邪魔なデータです。空白を残すと、Base64で梱包した後の姿がまったく別物になり、認証エラーになります。1ミリの隙間も許さない厳格さが、APIにはあります。
Q. なぜアプリではなく、わざわざAPIを使うの?
答え:「道具を自分に合わせる」ためです。
アプリは「外食」のようなもので、メニューが決まっています。API自作は、ボタンひとつで「思いついた瞬間に題名と本文だけを飛ばす」という、自分だけの専用メニューを構築できるのが最大のメリットといえそうです。
Q. WordPressのAPIエンドポイント(URL・住所)は公式に発表されているの?
答え:公式の「開発者ハンドブック」ですべて公開されています。
WordPressを開発している公式コミュニティが、REST API Handbook というドキュメントを用意しています。ここを見れば、「投稿用」「ユーザー用」「コメント用」など、それぞれの窓口(URL)がどこにあるのか、どんなルール(POSTやGETなど)で送ればいいのかがすべて載っています。
【自分専用の案内図を見る方法】
実は、自分のブログURLの末尾に /wp-json/ と付けてブラウザで開くだけでも、そのサイトが受け付けている窓口の一覧(案内図)がズラッと表示されます。これは「サービスドキュメンテーション」と呼ばれる仕組みで、API自体が自分の使い方を教えてくれる設計のようなのですが、文字の羅列で、非エンジニアの私としましては、ちんぷんかんぷんでございます。
Q. 「辞書」アクションを使わずに中身を送る方法もある?
答え:いくつかある。ショートカットの「URLの内容を取得」の設定次第で、送り方を変えられるようです。
ショートカットには、主に以下の3つの「辞書以外の送り方」が存在します。
- 「要求本文」を「テキスト」にする(直書き):
「URLの内容を取得」の要求本文を「JSON」から「テキスト」に切り替え、直接{"title":"変数"}と書き込む方法です。辞書アクションを省けるのでショートカットが短くなりますが、"(クォーテーション)を一つ忘れただけで「文字化けした手紙」になり、エラーになります。 - 「要求本文」を「フォーム」にする(ファイル送信向き):
要求本文で「フォーム」を選択する方法です。これは封筒に「写真や書類」をそのまま同封するようなもの。画像付きツイートやファイルアップロードには便利ですが、今回の「下書き投稿」のように、WordPress側が「JSON形式のデータ」を待っている場合には適さないとのこと。 - アクションの結果をそのまま渡す(ファイル読み込み):
「ファイルを取得」などで読み込んだJSONデータを、直接「要求本文」の変数として指定する方法です。あらかじめiCloud Driveなどに保存してある「下書きのテンプレート(定型文の束)」を、そのまま横流しして発送するイメージです。
【なぜ「辞書」を推奨するのか】
今回の手順で「辞書」アクションを使ったのは、ショートカットが「JSONの文法」を裏側で完璧に整えてくれるからです。「入力欄を埋めるだけで、正しい便箋(JSON)が自動完成する」という安心感があるため、API初心者には最も確実なルートのようです。
9. まとめ:APIは「論理的な郵便システム」
難しそうに見えた「API」や「JSON」も、一つひとつの工程を郵便に置き換えてみると、少しイメージできた気がします。実は理にかなった動きをしていますね。
- 私書箱の鍵(パスワード)を、安全な真空パック(Base64)にする。
- 専用の伝票(辞書)に、記事の内容を正確に書き込む。
- 万能な配達員に、正しい窓口(URL)と発送方法(POST)を指示する。
この一連の流れが、ショートカットをタップした瞬間に、ほんの一瞬で行われています。
このショートカットは、更なる自動化の足がかりになる根幹部品だと思います。
あーしたらどうだろうと想像を膨らませながら、自分なりの自動化を、ぜひ楽しんでみてください!
付録:設定値のカンペ 早見表
| アクション内の項目 | 設定する値(半角) | 郵便で例えると |
|---|---|---|
| URL | https://あなたのサイト/wp-json/wp/v2/posts | 窓口の正確な住所 |
| 方法 (Method) | POST | 「投函」の指示 |
| ヘッダの「キー」 | Authorization | 封筒の身分証記入欄の名前 |
| ヘッダの「値」 | Basic [Base64文字列] | パッキング済みの鍵そのもの |
| 要求本文 (JSON) | 「辞書」を指定 | マークシート式の伝票 |
- パスワード: 空白をすべて削除し24文字のみにしましたか?
- ヘッダの値: Basic の後に「半角スペース」はありますか?
- 辞書のステータス: status の値を draft にしましたか?










