この記事では、ノーコードツールZapier(ザピアー)を使って、WordPressの投稿から「アイキャッチと本文内の画像を自動で抜き出し」、さらに「ChatGPTで魅力的な要約文を作成」して、Instagramに「カルーセル(複数枚)投稿」する完全自動化ワークフローの作り方を解説します。
プログラミング知識は不要ですが、少しだけ「魔法のコード(コピペ用)」を使います。
手順通りに進めれば誰でも実装可能です!
自動化の全体像
今回作成する「Zap(自動化の仕組み)」は、以下の4ステップで構成されます。

- Trigger (WordPress):記事が「公開」されたらスタート
- Action (ChatGPT):記事本文を読み込み、Instagram用に100文字で要約する
- Action (Code by Zapier):記事からアイキャッチと本文画像をすべて抜き出す
- Action (Instagram):画像をカルーセル形式で、AI要約をキャプションにして投稿する
事前準備
作業を始める前に、以下のものを準備しておきましょう。

- Zapierアカウント(Freeプランでも試せますが、ステップ数が多いためStarterプラン以上推奨)
- OpenAI API Key(ChatGPTを動かすために必要。従量課金ですが、1投稿あたり数円以下です)
- Instagramビジネスアカウント(クリエイターアカウントまたはビジネスアカウント必須)
Step 1: WordPressの投稿をトリガーにする
まず、Zapierで新しいZapを作成し、トリガーを設定します。

- App & Event: 「WordPress」を選択し、Eventは「New Post」を選びます。
- Account: ご自身のWordPressサイトを連携します。
- Trigger Settings: Post Status(投稿ステータス)を「Published」に設定します。これで「公開ボタンを押した時」だけ動くようになります。
- Test: 必ず「Test trigger」を行い、最近の投稿データを取得してください。
Step 2: ChatGPTで記事を要約する

Instagramのキャプション(本文)を自動生成します。
- App & Event: 「ChatGPT」を選択し、Eventは「Conversation」を選びます。
- Account: OpenAIのAPI Keyを入力して連携します。
※注意:OpenAIの管理画面でクレジットカードを登録し、事前に5ドル程度チャージ(Add to credit balance)しておかないとエラーになります。 - Action Settings:
- User Message: 「以下のブログ記事を、読者がクリックしたくなるような魅力的な文章で、100文字以内で要約してください。:」と入力し、その後にWordPressステップから取得した「Content Rendered(本文)」を埋め込みます。
- Model: コスパと速度に優れた
gpt-4o-miniがおすすめです。
Step 3: 画像を一括抽出する(最重要)
ここが最大の難関です。
通常、Zapierだけでは「本文中の画像」を取り出せません。
そこで「Code by Zapier」を使って、画像をリスト化します。

設定手順
- App & Event: 「Code by Zapier」を選択し、Eventは「Run JavaScript」を選びます。
- Input Data: ここに以下の2つを正確に入力してください(左側がキー、右側がデータ)。
content: WordPressの「Content Rendered」を選択featuredImage: WordPressの「Featured Media URL」を選択
- Code: 以下のコードをすべてコピーして貼り付けてください。
// Input Dataからデータを取得
const content = inputData.content || "";
const featuredImage = inputData.featuredImage || "";
// Instagramの許容アスペクト比(縦横比)
// 最小 4:5 (0.8) 〜 最大 1.91:1 (1.91)
const MIN_RATIO = 0.8;
const MAX_RATIO = 1.91;
let validImages = [];
const processedUrls = new Set(); // 重複チェック用
// --- 関数定義 ---
// 画像がInstagramの基準内か判定する関数
function isSafeRatio(width, height) {
if (!width || !height) return false; // サイズ不明なら念のため除外(安全策)
const ratio = width / height;
return ratio >= MIN_RATIO && ratio <= MAX_RATIO;
}
// 有効な拡張子かチェックする関数
function hasAllowedExtension(url) {
if (!url) return false;
const lowerUrl = url.toLowerCase();
// webpなどは除外
return ['.jpg', '.jpeg', '.png'].some(ext => lowerUrl.includes(ext));
}
// --- メイン処理 ---
// 1. アイキャッチ画像を追加
// (アイキャッチは通常安全なサイズと仮定して、サイズ不明でも追加します)
if (featuredImage && featuredImage.startsWith('http') && hasAllowedExtension(featuredImage)) {
validImages.push(featuredImage);
processedUrls.add(featuredImage);
}
// 2. 本文(HTML)から画像タグ全体を抽出
const imgTagRegex = /<img[^>]+>/g;
let match;
while ((match = imgTagRegex.exec(content)) !== null) {
const imgTag = match[0];
// src(URL), width, height を抽出
const srcMatch = /src=["']([^"']+)["']/.exec(imgTag);
const wMatch = /width=["'](\d+)["']/.exec(imgTag);
const hMatch = /height=["'](\d+)["']/.exec(imgTag);
if (srcMatch) {
const url = srcMatch[1];
// 重複チェック & 拡張子チェック
if (processedUrls.has(url) || !hasAllowedExtension(url)) {
continue;
}
// サイズ情報がある場合のみ比率チェックを行う
if (wMatch && hMatch) {
const w = parseInt(wMatch[1]);
const h = parseInt(hMatch[1]);
if (isSafeRatio(w, h)) {
validImages.push(url);
processedUrls.add(url);
} else {
// サイズ違反(縦長すぎなど)の場合は除外されます
}
} else {
// サイズ情報がHTMLにない場合
// エラー回避を最優先するため、今回は「除外」します
}
}
}
// 3. 枚数調整
// Instagram上限の10枚までに絞る
validImages = validImages.slice(0, 10);
// ★重要★ カルーセル投稿は「最低2枚」必要です。
// もしフィルタリングの結果「1枚」しか残らなかった場合、
// エラー回避のため、同じ画像を2回入れて無理やりカルーセルにします。
if (validImages.length === 1) {
validImages.push(validImages[0]);
}
// 4. 結果を出力
// もし0枚になってしまった場合は、空リストを返します(次のステップでエラーになりますが、コンテナエラーは回避されます)
return { imageUrls: validImages, count: validImages.length };
設定後、「Test Action」を実行し、imageUrls に画像のURLリストが表示されれば成功です!
Step 4: Instagramへ投稿する

最後に、集めた素材をInstagramに送ります。
- App & Event: 「Instagram for Business」を選択し、Eventは「Publish Photo(s)」を選びます(複数枚投稿のため)。
- Action Settings:
- Photos: Step 3(Code by Zapier)で出力された
imageUrlsを選択します。 - Caption: Step 2(ChatGPT)の
Reply(要約文)を選択します。手入力で「続きはプロフィールのリンクから!👇」などを書き加え、Step 1のLink(記事URL)も配置しましょう。
- Photos: Step 3(Code by Zapier)で出力された
よくあるエラーと対策
Q. Image Countが0になる
A. Input Dataの設定ミスが原因です。
Step 3のInput Data欄で、左側のキー名(content, featuredImage)がコード内の記述と完全に一致しているか確認してください。大文字・小文字も区別されます。
Q. “Could not upload media file” エラーが出る
A. 画像の読み込みタイムラグが原因の可能性があります。
WordPressで記事を公開した直後は、サーバー側で画像の準備が完了していないことがあります。対策として、WordPressトリガーの直後に「Delay by Zapier」を追加し、2〜3分待機させる設定を入れると劇的に改善します。
まとめ

これで、WordPressで記事を書くだけで、AIが勝手に要約し、画像をまとめてInstagramに投稿してくれるシステムが完成しました。
最初は設定が少し複雑に感じるかもしれませんが、一度作ってしまえばSNS運用の手間がゼロになります。
ぜひチャレンジしてみてください!
