Instagram投稿を、画像制作から公開URL化、投稿前チェック、Zapier MCP経由の投稿までCodexでつなげる運用を整えました。今回は、2026年6月12日に神戸サンボーホールで開催される「第8回 今すぐ使える!! IoT・AI・ロボット展」でのAIエージェント活用セミナー告知を題材に、実際にInstagramのカルーセル投稿まで行いました。
この記事では、単なる「SNS投稿を自動化しました」という話ではなく、どのような設計で、どの部分をMCPやスクリプトに任せ、どこに人間の確認を残したのかを技術寄りに整理します。中小企業の現場でAIエージェントを運用する場合、最後に効いてくるのは派手な自動化よりも、事故を起こしにくい工程設計です。
今回作ったもの
今回のゴールは、CodexからInstagram投稿を完結できる運用を作ることでした。実装した範囲は次の通りです。
- Instagram投稿用のCodex Skill作成
- Pencil MCPによる1080×1350pxカルーセル画像の作成
- NASのpublicフォルダを使った画像公開URLの生成
- 画像URLが外部から取得できるかの検証
- Zapier MCPをCodexに接続
- Zapier MCP経由でInstagram for Businessへカルーセル投稿
- 投稿前チェックをSkillの運用ルールとして保存
- 今後、ユーザー支給画像を使う場合の確認フローを追加
完成したInstagram投稿では、4枚のカルーセル画像を使いました。1枚目にNIROイベントの公式ヒーロー画像、4枚目に同時開催の「神戸ものづくり中小企業展示商談会」の画像を使い、2枚目と3枚目はオリジナルのテキスト・カード型デザインにしました。途中で公式画像の重複に気づき、最終版では同じ公式画像を繰り返さない構成に修正しています。


全体構成
今回の処理は、次のような流れで構成しました。

- 投稿テーマと素材を整理する
- Pencil MCPでカルーセル画像を作る
- 画像をPNGで書き出す
- NASの公開フォルダに保存する
- 公開URLを生成し、HTTPで画像として取得できるか確認する
- 投稿文を作成する
- Zapier MCPでInstagram for Businessの投稿アクションを呼び出す
- 投稿結果を記録する
一見すると単純な流れですが、実際には各工程でつまずきやすい点があります。たとえば、Instagram APIやZapierに渡す画像は、ローカルファイルではなく、外部からログインなしで取得できるURLである必要があります。また、Instagramの通常投稿やカルーセル投稿では、画像内やキャプション内のURLがクリック可能リンクとして機能しません。そのため、画像内のCTAも「URLを載せる」ではなく、「検索してもらう」「プロフィールのリンクから誘導する」という表現に変更しました。
Codex Skillとして運用を固定する
単発のスクリプトで終わらせず、Codex Skillとして保存したのが今回の重要な点です。Skillは、AIエージェントに対する業務手順書のようなものです。毎回同じ説明をしなくても、Instagram投稿を作る時に必要な手順、チェック項目、保存先、注意点をCodexが読み込めるようになります。
作成したSkillは、次のような構成です。
/Users/ozaki/.codex/skills/kogyoshokai-instagram-publisher/
├── SKILL.md
├── agents/openai.yaml
├── references/
│ ├── company-profile.md
│ ├── environment.md
│ ├── preflight-checklist.md
│ └── user-supplied-images.md
└── scripts/
├── storage.py
├── prepare_instagram_assets.py
├── instagram_graph_api.py
└── zapier_webhook.py
SKILL.mdには全体のワークフローを置き、詳細な会社情報や投稿前チェックはreferences/に分けました。これにより、毎回すべての情報を読み込むのではなく、必要な時だけ詳細を参照できます。
特に重要なのは、preflight-checklist.mdです。ここには、画像を作ったら必ず確認する項目を入れました。
- 文字がスマホサイズで読めるか
- 日時・会場・イベント名に誤りがないか
- 公式画像が意図せず重複していないか
- Instagram上でクリックできないURLを、クリックできるように誤解させていないか
- 公開URLが
200 image/pngで返るか - Zapier投稿前にdry-runまたはpayload確認をしているか
AIエージェントの運用では、「作れる」ことよりも「確認が抜けない」ことの方が大事です。今回のSkill化では、この確認工程を明示的に入れました。
Pencil MCPで画像を作る
画像制作にはPencil MCPを使いました。Pencil MCPは、CodexからPencilのデザインファイルを操作できるMCPサーバーです。1080×1350pxのInstagram向けフレームを作り、テキスト、背景、画像、カード、ドットインジケーターなどを配置しました。
作業中は、Pencilのsnapshot_layoutでレイアウト崩れを確認し、get_screenshotで実際の見た目を確認しました。これにより、ノード構造としては正しくても、見た目として文字が小さい、余白が広すぎる、画像が切れているといった問題を発見できます。
実際に今回も、最初の4枚版では公式画像が重複していました。また、リンク用スライドでURLをそのまま大きく載せていましたが、Instagramの通常投稿ではクリックできないため、検索誘導へ変更しました。
最終的な4枚構成は、次のようにしました。
- イベント概要とNIRO公式ヒーロー画像
- 2・4・6は同一内容で、使用プロバイダーを分ける説明
- AIエージェント活用で話す実務ポイント
- 検索・プロフィールリンクへの誘導と同時開催イベント画像
NASのpublicフォルダを画像配信元にする
InstagramやZapierに渡す画像は、外部からアクセス可能なURLでなければなりません。そこで、社内NASのpublicフォルダをWeb公開し、画像配信元として使いました。
今回使った設定は次の通りです。
STORAGE_PROVIDER=public_folder
PUBLIC_FOLDER_PATH=/Volumes/NAS_KGS/KGS_QC/public/instagram
PUBLIC_BASE_URL=https://kogyoshokai.synology.me/instagram
ローカル保存先に画像を置き、ファイル名から公開URLを生成します。たとえば、次のような対応です。
/Volumes/NAS_KGS/KGS_QC/public/instagram/niro-ai-agent-seminar-2026-final-01.png
↓
https://kogyoshokai.synology.me/instagram/niro-ai-agent-seminar-2026-final-01.png
ここで重要なのは、Synology DSMのFile Station URLを使わないことです。:5001やlaunchApp、SynoTokenを含むURLは管理画面のURLであり、InstagramやZapierが画像として取得するURLではありません。Skill側にも、このようなURLを拒否するルールを入れました。
画像保存とURL検証は、prepare_instagram_assets.pyで行います。処理内容は次の通りです。
- 環境変数からストレージ設定を読む
- 画像ファイル名を英数字・ハイフン・アンダースコア中心に整える
- publicフォルダへコピーする
- 公開URLを生成する
HEAD、必要に応じてGETでURL検証する200かつimage/*でなければ失敗扱いにする
Zapier MCPでInstagramへ投稿する
Instagram投稿は、最初はMeta Graph APIで直接投稿する案も検討しました。そのため、instagram_graph_api.pyも用意し、IG_USER_IDとIG_ACCESS_TOKENがあれば、画像コンテナ作成、カルーセル親コンテナ作成、公開まで進められる構成にしています。
ただし、綱業商会では以前からZapier経由でInstagram投稿ができていたため、今回はZapier MCPを使う方が現実的でした。Zapier側にInstagram for Businessの接続があり、CodexからはZapier MCPのPublish Photo(s)アクションを呼び出しました。
Zapier MCPの投稿アクションでは、次のパラメータを使います。
app: Instagram for Business
action: publish_media_v2
media:
- https://kogyoshokai.synology.me/instagram/niro-ai-agent-seminar-2026-final-01.png
- https://kogyoshokai.synology.me/instagram/niro-ai-agent-seminar-2026-final-02.png
- https://kogyoshokai.synology.me/instagram/niro-ai-agent-seminar-2026-final-03.png
- https://kogyoshokai.synology.me/instagram/niro-ai-agent-seminar-2026-final-04.png
caption: 投稿本文
instagramPageId: Zapier側で選択された綱業商会アカウント
画像を1枚だけ渡すと通常のフィード投稿、2〜10枚渡すとフィードのカルーセル投稿になります。今回の4枚投稿は、ストーリーズではなくInstagramフィードのカルーセル投稿です。
実行結果として、Zapier MCPからはcreated=trueが返り、Instagram投稿が作成されました。Zapier側からパーマリンクは返りませんでしたが、投稿作成自体は成功しています。
投稿文もInstagram向けに調整する
技術的には投稿できても、Instagramの仕様に合っていない文章では運用上の効果が落ちます。今回の投稿文では、最初はURLをそのまま案内していましたが、Instagramの通常投稿ではURLがクリックできないため、次のように変更しました。
各回の枠に限りがありますので、参加をご希望の方は事前登録をお願いします。Instagram投稿内のURLはクリックできないため、「NIRO IoT AI ロボット展」で検索、またはプロフィールのリンクから公式ページをご確認ください。
この変更は小さく見えますが、SNS運用では重要です。AIエージェントは文章を作るだけでなく、媒体ごとの制約に合わせて導線を整える必要があります。
ユーザー支給画像を使う場合の運用も追加
今後は、こちらで用意した画像だけでなく、ユーザーがアップロードした写真やチラシ、スクリーンショットを編集して投稿することも想定しています。そのため、Skillにuser-supplied-images.mdを追加しました。
ここでは、次のような確認を必須にしています。
- 元画像を上書きせず、コピーで作業する
- 人物、会社名、顧客情報、QRコード、書類、画面情報が写っていないか確認する
- 必要ならぼかしやトリミングを行う
- 画像の使用目的を明確にする
- 支給画像が複数ある場合、重複感のある画像を減らす
- 最終的に書き出した画像を必ず目視確認する
AIに画像編集や投稿を任せる時ほど、「何を使ってよいか」「何を隠すべきか」を工程に入れておく必要があります。ここを曖昧にすると、顧客名や個人情報が写ったまま投稿される危険があります。
今回わかったこと
今回の実装で見えたポイントは、AIエージェントの実務導入にもそのまま当てはまります。
- MCPを使うと、画像制作、ファイル操作、投稿処理を一つの流れにできる
- 一方で、公開前チェックは必ず工程として固定する必要がある
- API直結より、既に業務で使えているZapierを活かす方が安全な場面がある
- NASのpublicフォルダは、公開画像URLを用意する手段として有効
- Instagramは媒体特性があるため、文章やCTAも自動生成のままではなく調整が必要
- Skill化しておくと、同じ業務を次回以降も再現しやすくなる
特に大事なのは、AIエージェントを「全部自動でやるもの」として扱わないことです。今回も、画像生成、URL検証、Zapier投稿は自動化しましたが、事実確認、画像重複、リンク誘導、投稿前承認は人間が確認する工程として残しました。
中小企業のSNS運用とAIエージェント
中小企業のSNS運用では、毎回デザイナーやエンジニアに依頼できるとは限りません。一方で、投稿画像の品質、告知内容の正確さ、リンク誘導、公開タイミングなど、考えることは意外と多くあります。
今回のように、Codex、Pencil MCP、NAS、Zapier MCPを組み合わせると、投稿作業をかなり小さな手順にできます。
- イベント情報を整理する
- 投稿画像を作る
- 画像を公開URL化する
- 投稿前チェックをする
- Zapier経由でInstagramへ投稿する
- 結果を記録する
この一連の流れをSkillにしておけば、次回からは「このイベント告知をInstagram投稿にして」と依頼するだけで、同じ基準で作業を進められます。属人的な作業を減らしながら、最終確認は人間が担う。これが、現場で使いやすいAIエージェント運用だと考えています。
まとめ
今回、Instagram投稿を題材に、Codexを中心としたSNS投稿ワークフローを構築しました。技術的には、Pencil MCPで画像を作り、NASで画像を公開し、Zapier MCPでInstagramへ投稿する構成です。運用面では、事実確認、画像チェック、リンク誘導、支給画像の扱いをSkillに残しました。
綱業商会では、こうした実際の業務を題材にしながら、AIエージェントやDX支援を進めています。単にツールを導入するのではなく、現場で使い続けられる形にすること。そのための小さな自動化を、これからも積み重ねていきます。
