ゴールと前提条件
このワークフローで実現できること
複数のSNSプラットフォーム(X/旧Twitter、Facebook、Instagram、LinkedIn)への投稿を、一元管理して自動化するワークフローを構築します。
具体的には、以下のような業務を自動化します:
- Notionでコンテンツカレンダーを一元管理
- 投稿内容をChatGPTで各SNSに最適化
- MakeでNotionとBufferを連携し、予約投稿を自動設定
- 投稿後の結果をNotionに自動記録
- チームメンバーへのSlack通知
このワークフローにより、週5〜10時間かかっていたSNS投稿作業を、週1時間程度のコンテンツ企画時間だけに圧縮できます。
前提となる環境
このワークフローを実装するには、以下のツールとアカウントが必要です:
- Notion(無料プランまたは有料プラン)
- Make(旧Integromat、無料プランは月1,000オペレーションまで)
- Buffer(無料プランは3つのSNSアカウントまで)
- ChatGPT API(使用量に応じた従量課金)
- 投稿したいSNSアカウント(X、Facebook、Instagram、LinkedInなど)
プログラミング知識は一切不要で、すべてノーコードで実装できます。
全体フローの俯瞰図
このワークフローは、以下の5つのステップで構成されています:
- トリガー:Notionのコンテンツカレンダーで投稿予定を作成・更新
- 情報取得:Makeが定期的にNotionをチェックし、投稿予定の情報を取得
- AI処理:ChatGPT APIで各SNSに最適化された文章を生成
- 予約投稿:BufferのAPIを通じて各SNSに予約投稿を自動設定
- 記録と通知:投稿状況をNotionに記録し、Slackでチームに通知
この流れにより、「企画」だけに集中すれば、実際の投稿作業はすべて自動化されます。
使用するツールと役割
Notion:コンテンツカレンダーの中枢
Notionは、このワークフローの「司令塔」として機能します。具体的な役割は:
- SNS投稿のコンテンツカレンダーを管理
- 投稿内容、投稿日時、対象SNS、ステータスを一元管理
- 投稿結果(成功/失敗、エンゲージメント)の記録
- チームメンバーとの共同編集
Make:ワークフローの自動化エンジン
Make(旧Integromat)は、各ツールを繋ぐ「接着剤」の役割を果たします:
- 15分〜1時間ごとにNotionをチェック
- 投稿予定のアイテムを抽出
- ChatGPT APIとBufferの間でデータを橋渡し
- エラー処理と再試行の制御
Zapierと比較すると、Makeは複雑な条件分岐やデータ変換に強く、無料プランでも十分に使えるのが特徴です。
ChatGPT API:コンテンツの最適化
ChatGPT APIは、投稿内容を各SNSの特性に合わせて最適化します:
- X(旧Twitter):280文字以内に要約、ハッシュタグ追加
- Facebook:やや長めの親しみやすい文章に変換
- Instagram:絵文字を活用した視覚的な文章を生成
- LinkedIn:ビジネスライクなトーンで専門性を強調
同じコンテンツでも、プラットフォームごとに最適な形に自動変換されます。
Buffer:SNS投稿のハブ
Bufferは、複数のSNSへの予約投稿を一括管理するツールです:
- X、Facebook、Instagram、LinkedIn、Pinterestなどに対応
- APIを通じた自動予約投稿
- 投稿時間の最適化(エンゲージメントが高い時間帯を自動提案)
- 投稿後の分析データ取得
Bufferの代わりに、Hootsuiteや直接SNS APIを使うこともできますが、Bufferは設定が簡単で初心者にも優しいです。
手順詳細(ステップバイステップ)
STEP 1:Notionでコンテンツカレンダーを作成
まず、Notionでコンテンツカレンダーのデータベースを作成します。
必要なプロパティ:
| プロパティ名 | タイプ | 説明 |
|---|---|---|
| タイトル | タイトル | 投稿内容の見出し |
| 投稿内容 | テキスト | メインの投稿文章(ベース) |
| 投稿日時 | 日付 | 投稿を予約する日時 |
| 対象SNS | マルチセレクト | Twitter、Facebook、Instagram、LinkedIn |
| ステータス | セレクト | 下書き、予約済み、投稿完了、エラー |
| 画像URL | URL | 添付する画像のURL(任意) |
| Buffer投稿ID | テキスト | Bufferで作成された投稿のID(自動記録) |
設定のポイント:
- 「ステータス」は初期値を「下書き」にしておく
- ビューを「カレンダー」形式にすると視覚的に管理しやすい
- フィルターで「ステータス = 下書き」のみ表示するビューを作成すると便利
STEP 2:BufferとSNSアカウントを連携
Bufferにログインし、投稿したいSNSアカウントを接続します。
- Bufferの管理画面で「Channels」→「Connect a Channel」をクリック
- X、Facebook、Instagram、LinkedInなど、連携したいSNSを選択
- 各SNSの認証画面で権限を許可
- 接続が完了すると、Bufferのダッシュボードに各SNSが表示されます
つまづきポイント:Instagramの場合、ビジネスアカウントまたはクリエイターアカウントである必要があります。個人アカウントでは連携できないので注意してください。
STEP 3:Buffer APIキーを取得
MakeからBufferを操作するために、APIキーを取得します。
- Bufferの設定画面で「Developers」セクションに移動
- 「Access Token」を生成
- 表示されたトークンをコピーして安全な場所に保存
このトークンは後でMakeの設定で使用します。
STEP 4:ChatGPT APIキーを取得
OpenAIのプラットフォームでAPIキーを発行します。
- OpenAI Platformにアクセス
- アカウントを作成(クレジットカード登録が必要)
- 「API Keys」セクションで新しいキーを生成
- キーをコピーして保存
料金の目安:GPT-4oを使用した場合、1投稿あたり約0.5〜1円程度です。月に100投稿しても100円以内に収まります。
STEP 5:Makeでワークフローを構築(前半:トリガーとデータ取得)
ここからMakeでの設定に入ります。新しいシナリオを作成します。
5-1. Notionトリガーの設定
- Makeで新規シナリオを作成
- 最初のモジュールとして「Notion」→「Watch Database Items」を選択
- Notionアカウントを接続(OAuth認証)
- 先ほど作成したコンテンツカレンダーのデータベースを選択
- 「Filter」で以下の条件を設定:
- ステータス = 「下書き」
- 投稿日時 ≤ 現在時刻 + 1時間(これから1時間以内に投稿予定のもの)
設定画面のイメージ:
- 「Database」欄に自分のコンテンツカレンダーが表示される
- 「Properties」で取得するプロパティを選択(全て選択でOK)
- 「Limit」は10件程度に設定(一度に処理する最大件数)
5-2. Router(分岐)モジュールの追加
対象SNSごとに異なる処理を行うため、Routerモジュールを追加します。
- 「Flow Control」→「Router」を追加
- 各SNS(X、Facebook、Instagram、LinkedIn)ごとのルートを作成
- 各ルートにフィルターを設定:「対象SNS」に「Twitter」が含まれる、など
STEP 6:Makeでワークフローを構築(中盤:AI処理)
各SNSルートごとに、ChatGPT APIで文章を最適化します。
6-1. ChatGPTモジュールの設定(Xの例)
- Routerの「Twitter」ルートに「HTTP」→「Make a Request」モジュールを追加
- URL:
https://api.openai.com/v1/chat/completions - Method: POST
- Headers:
- Authorization:
Bearer [あなたのAPIキー] - Content-Type:
application/json
- Authorization:
- Body(JSON形式):
{ "model": "gpt-4o", "messages": [ { "role": "system", "content": "あなたはSNS投稿の専門家です。以下の内容を、X(旧Twitter)向けに280文字以内で最適化してください。魅力的で、エンゲージメントが高まるような文章にし、適切なハッシュタグを2〜3個追加してください。" }, { "role": "user", "content": "{{1.投稿内容}}" } ], "max_tokens": 200, "temperature": 0.7 }
6-2. 他のSNS向けプロンプトの例
Facebook向け:
「以下の内容を、Facebook向けに親しみやすく、やや長めの文章(300〜500文字)に最適化してください。共感を呼ぶストーリー性を加え、行動を促すCTAを含めてください。」
Instagram向け:
「以下の内容を、Instagram向けに視覚的で魅力的な文章に最適化してください。適切な絵文字を使い、改行を効果的に活用し、関連するハッシュタグを5〜10個追加してください。」
LinkedIn向け:
「以下の内容を、LinkedIn向けにプロフェッショナルで洞察に富んだ文章に最適化してください。ビジネス上の価値を明確にし、専門性を示すトーンで書いてください。」
つまづきポイント:ChatGPT APIのレスポンスは JSON形式で返ってきます。生成されたテキストは choices[0].message.content に格納されているので、次のステップでこのパスを指定してください。
STEP 7:Makeでワークフローを構築(後半:Buffer投稿)
ChatGPTで最適化された文章を、Bufferを通じて各SNSに予約投稿します。
7-1. Bufferモジュールの設定
- ChatGPTモジュールの後に「HTTP」→「Make a Request」を追加
- URL:
https://api.bufferapp.com/1/updates/create.json - Method: POST
- Query String:
- access_token: [あなたのBuffer APIキー]
- profile_ids[]: [対象SNSのプロファイルID]
- text:
{{ChatGPTモジュールの出力.choices[0].message.content}} - scheduled_at:
{{Notionの投稿日時をUNIXタイムスタンプに変換}} - media[photo]:
{{Notionの画像URL}}(画像がある場合)
プロファイルIDの確認方法:
BufferのAPIで https://api.bufferapp.com/1/profiles.json?access_token=[あなたのトークン] にGETリクエストを送ると、接続している全SNSのプロファイルIDが取得できます。
7-2. 日時のフォーマット変換
Notionの日時形式をUNIXタイムスタンプに変換する必要があります。Makeの「Tools」→「Set Variable」を使って:
{{formatDate(1.投稿日時; "X")}}
このように設定すると、自動的にUNIXタイムスタンプに変換されます。
STEP 8:投稿結果をNotionに記録
Buffer投稿が成功したら、その結果をNotionに記録します。
- Bufferモジュールの後に「Notion」→「Update a Database Item」を追加
- 対象データベース:コンテンツカレンダー
- Item ID:
{{最初のNotionモジュールのID}} - 更新するプロパティ:
- ステータス:「予約済み」
- Buffer投稿ID:
{{Bufferのレスポンス.id}}
エラー処理の追加:
Buffer投稿が失敗した場合に備えて、エラーハンドラーも設定します。
- Bufferモジュールを右クリック→「Add error handler」
- 「Notion」→「Update a Database Item」を追加
- ステータスを「エラー」に更新
- 「メモ」プロパティにエラー内容を記録:
{{error.message}}
STEP 9:Slack通知の設定(オプション)
チームで運用している場合、投稿完了やエラーをSlackに通知すると便利です。
- 最後に「Slack」→「Create a Message」モジュールを追加
- Slackアカウントを接続
- 通知先チャンネルを選択
- メッセージ内容の例:
✅ SNS投稿を予約しました タイトル: {{1.タイトル}} 投稿日時: {{1.投稿日時}} 対象SNS: {{1.対象SNS}} Buffer ID: {{Bufferのレスポンス.id}}
STEP 10:スケジュール設定とテスト
最後に、このワークフローを定期実行するようスケジュールを設定します。
- シナリオ設定画面で「Scheduling」をクリック
- 実行間隔を設定(推奨:15分ごと、または30分ごと)
- 「Run once」ボタンでテスト実行
- Notionで「下書き」ステータスのテストアイテムを作成して動作確認
テスト時のチェックポイント:
- Notionから正しくデータが取得できているか
- ChatGPTで適切に文章が生成されているか(Makeの実行履歴で確認)
- Bufferに予約投稿が作成されているか(BufferのQueueを確認)
- Notionのステータスが「予約済み」に更新されているか
自動化前後でどう変わるか(ビフォーアフター)
作業時間の比較
| 作業内容 | 自動化前 | 自動化後 |
|---|---|---|
| コンテンツ企画 | 週1時間 | 週1時間(変わらず) |
| 各SNS向けに文章を書き分け | 週3〜4時間 | 0時間(自動化) |
| 各SNSに個別ログインして予約投稿 | 週2〜3時間 | 0時間(自動化) |
| 投稿結果の記録 | 週1時間 | 0時間(自動化) |
| 合計 | 週7〜9時間 | 週1時間 |
削減効果:週6〜8時間、月換算で24〜32時間の節約
ミスの削減
自動化前のよくあるミス:
- 投稿時刻を間違える(深夜に投稿してしまうなど)
- プラットフォームごとの文字数制限を超過
- ハッシュタグの付け忘れ
- 画像の添付忘れ
- 複数SNSで同じ文章をコピペしてしまう(プラットフォームの特性を活かせていない)
自動化後:
- 投稿日時は確実に予約通りに実行
- ChatGPTが自動的に文字数を調整
- プラットフォームごとに最適化された文章
- 画像URLをNotionに入力すれば自動添付
メンバー間の共有のしやすさ
自動化前:
- 誰が何を投稿したか分かりにくい
- スプレッドシートとSNS管理画面を行き来
- 投稿内容の承認プロセスが曖昧
自動化後:
- Notionですべての投稿予定を一覧化
- ステータス(下書き、予約済み、投稿完了)が一目瞭然
- メンバーがコメント機能で承認やフィードバック可能
- Slack通知で投稿完了を共有
応用・拡張アイデア
1. エンゲージメント分析の自動取得
Buffer APIは投稿後のいいね数、リツイート数、クリック数なども取得できます。Makeで定期的に(例:毎日朝9時)以下のワークフローを追加:
- Buffer APIから投稿の統計情報を取得
- Notionの該当アイテムに「いいね数」「シェア数」などを自動記録
- 週次レポートをSlackやメールで送信
2. 画像生成の自動化
投稿に使う画像も自動生成できます:
- Canva APIでテンプレートから画像を自動生成
- DALL-E 3 APIでAI画像を生成
- 生成した画像のURLをNotionに自動記録
3. ハッシュタグの自動分析
投稿内容から、トレンドのハッシュタグを自動提案:
- ChatGPTに「この投稿内容に最適なハッシュタグを10個提案して」と依頼
- RiteTag APIでハッシュタグの人気度を分析
- 最もエンゲージメントが期待できるハッシュタグを自動選択
4. A/Bテストの実施
同じ投稿内容で、異なる文章パターンを複数生成してテスト:
- ChatGPTに「3つのバリエーションを作成して」と指示
- 異なる時間帯に投稿
- エンゲージメント結果をNotionで比較
- 最も効果的なパターンを学習
5. RSS連携で完全自動化
ブログを運営している場合:
- WordPressのRSSフィードをMakeで監視
- 新規記事が公開されたら自動的にNotionに追加
- 記事の要約をChatGPTで生成
- 各SNSに自動投稿
これにより、ブログを公開するだけで、SNS投稿まで完全自動化できます。
よくある質問・つまづきポイントQ&A
Q1: Makeのシナリオが実行されません
A: 以下を確認してください:
- シナリオが「ON」になっているか(右上のトグルスイッチ)
- スケジュール設定が正しいか
- Notionのフィルター条件を満たすアイテムが存在するか
- 各モジュールの接続が切れていないか(再認証が必要な場合があります)
Q2: ChatGPTのAPIエラーが出ます
A: よくあるエラーと対処法:
- 401 Unauthorized: APIキーが間違っているか、期限切れです。OpenAIで確認してください
- 429 Rate Limit: リクエスト数が多すぎます。Makeのスケジュール間隔を長くするか、OpenAIのプランをアップグレード
- 500 Internal Server Error: OpenAI側の一時的な問題です。エラーハンドラーで再試行を設定してください
Q3: Bufferに投稿が作成されません
A: 以下を確認:
- Buffer APIキーが正しいか
- プロファイルIDが正しいか(TwitterとX は異なるIDです)
- scheduled_at の日時が未来になっているか(過去の日時は拒否されます)
- 無料プランの場合、Queueの上限(10件)に達していないか
Q4: Instagramに投稿されません
A: Instagramには特別な制限があります:
- 画像が必須です(テキストのみは投稿できません)
- アカウントがビジネスアカウントまたはクリエイターアカウントである必要があります
- Buffer経由の場合、投稿は「下書き」として保存され、Instagram側で最終確認が必要な場合があります
Q5: 同じ投稿が複数回予約されてしまいます
A: Notionのフィルター条件を見直してください:
- ステータスが「下書き」のものだけを対象にする
- 投稿日時が「未来」のものだけを対象にする
- Makeのシナリオで、既に処理したアイテムは必ず「予約済み」に更新する
Q6: Make の無料プランでオペレーション数が足りません
A: 以下の最適化を試してください:
- スケジュール間隔を長くする(15分→30分、または1時間)
- Notionの「Watch Database Items」ではなく、「Search Objects」を使う(変更があったときだけ実行)
- Router の各ルートで不要なモジュールを削除
- それでも足りない場合は、Makeの有料プラン(Core: $9/月、10,000オペレーション)を検討
Q7: ChatGPTの生成内容が期待通りではありません
A: プロンプトを調整してください:
- より具体的な指示を追加(「絵文字を3個使って」「質問形式で終わらせて」など)
- temperature パラメータを調整(0.7→0.5で安定性UP、0.7→0.9で創造性UP)
- システムメッセージに成功例を含める(Few-shot Learning)
まとめ:まずどこから着手すべきか
いきなり全てを自動化しようとすると、設定が複雑で挫折しやすくなります。段階的に導入することをお勧めします。
フェーズ1:基礎を固める(最初の1週間)
まずは1つのSNS(Xを推奨)だけで自動化を試してみましょう:
- Notionのコンテンツカレンダーを作成
- Bufferに Xアカウントだけ接続
- Makeで「Notion → Buffer」の基本フローを構築(ChatGPTなしでもOK)
- 手動で数件テストして動作確認
この段階で、「Notionに書けば自動的にXに予約投稿される」という基本の流れを体感できます。
フェーズ2:AI最適化を追加(2週目)
基本が動いたら、ChatGPT APIを追加:
- OpenAI APIキーを取得
- Makeのフローに ChatGPTモジュールを挿入
- X向けのプロンプトを調整
- 生成された文章の品質を確認・改善
これで、Notionに簡単なメモを書くだけで、魅力的な投稿文が自動生成されるようになります。
フェーズ3:複数SNSに拡大(3週目以降)
Xでの運用が安定したら、他のSNSにも展開:
- Facebook、Instagram、LinkedInをBufferに接続
- MakeのRouterで各SNSルートを追加
- 各プラットフォーム向けのChatGPTプロンプトを作成
- 投稿結果を比較して、最も効果的なパターンを見つける
フェーズ4:応用機能を追加(4週目以降)
余裕が出てきたら、さらに高度な機能を追加:
- エンゲージメント分析の自動取得
- 画像生成の自動化
- RSS連携でブログからの自動投稿
最初の1歩として
まずは次の週末に1時間だけ時間を取って、フェーズ1に取り組んでみてください。
NotionとBufferのアカウント作成、Makeの無料プランへの登録、そして最初のシナリオ作成。これだけでも、SNS運用の見え方が大きく変わるはずです。
プログラミング知識は一切不要です。マウスをクリックして、各ツールを繋げていくだけ。ぜひ、一歩踏み出してみてください。
あなたのSNS運用が、「作業」から「戦略」にシフトするきっかけになれば幸いです。