← ダッシュボードに戻る

📘 SNS連携セットアップガイド

各SNSを sns-auto-poster に繋ぐ手順。基本は「ワンクリック連携」が用意されているSNSから始めるのがおすすめ。

🎯 SNSごとの難易度
LinkedInかんたん noteかんたん Blueskyかんたん Facebookふつう Threadsふつう WordPressふつう はてなブログふつう X (Twitter)むずかしい

♾️ 自律改善ループの使い方
自律改善ループとはPro限定 /insights ページの見方 重要投稿モード ネタ候補の活用

📹 動画投稿
動画投稿の概要 動画の添付手順 媒体別の制限一覧 動画投稿のトラブル対処

📹 動画投稿の概要

7媒体すべてに mp4 動画を投稿できます。各媒体の API・仕様に合わせて自動で変換・アップロードします。

対応形式

💡 初回テスト推奨: 10〜15秒の短いmp4 を Bluesky か Facebook で試すのが最速で動作確認できます。

📝 動画の添付手順

  1. ダッシュボード → ✨ AI Generate でドラフトを通常通り作成
  2. 📝 Drafts タブに移動 → 作成したドラフトの行に 📹 動画 ボタンが見える
  3. クリック → ファイル選択ダイアログ → mp4 を選ぶ
  4. サーバーが Supabase Storage (video-assets バケット) に保存 + DBに記録
  5. サムネが動画プレビュー (▶ オーバーレイ付き) に変わる
  6. Approve → 予約 or Post Now で実投稿
⚠️ 1ドラフト = 1メディア です。動画を添付すると既存の画像は上書き削除されます (媒体仕様の都合)。

NOTE は特殊

NOTE は ローカル PC の Playwright runner が15分おきに拾います。Approve しても即時投稿されません。サーバー側 (Railway) からは NOTE 投稿は走りません。

📓 note 連携 セクションの ③ で Task Scheduler 登録手順を参照してください。

📊 媒体別の制限一覧

媒体最大サイズ最大長さ形式備考
Bluesky100MB60秒mp4 (H.264)video.bsky.app で非同期変換
Facebook10GB4時間mp4 / movPage 投稿のみ
Threads1GB5分mp4 (H.264)Supabase 経由でURL渡し
X (Twitter)512MB140秒 (Basic)mp4 (H.264)chunked upload (4MB単位)
LinkedIn200MB10分mp4 (H.264)register→PUT→AVAILABLE 待ち
WordPressサーバー次第制限なしmp4 推奨本文先頭に <video> 埋め込み
notenote仕様note仕様mp4 推奨Playwright で本文中に挿入
💡 横断運用のコツ: 全媒体に同じ動画を投げる場合、「60秒 / 100MB以内 / mp4 H.264」 を共通仕様にしておけば全媒体で安全に通ります。Bluesky の60秒上限が最厳しいため。

🆘 動画投稿のトラブル対処

症状原因対処
「too_large」エラー100MB 超圧縮ツール (HandBrake等) で 100MB 以下に
「duration_exceeds_max」10分超10分以内にトリミング
「video too long: Xs (max Ys)」媒体別の長さ制限超え媒体別制限表を確認してトリム
「video processing timeout」媒体側の変換が3分超過もう一度試す。続くなら短い動画で検証
Bluesky 「getServiceAuth failed」App Password 失効 or 動画機能未対応 PDSApp Password を再生成、bsky.social の標準 PDS を使う
LinkedIn 「video PUT failed」access token のスコープ不足OAuth で w_member_social 確実に取得済か確認
X 「FINALIZE failed」動画 spec 違反 (codec/aspect 等)HandBrake で「X 用」プリセット出力
NOTE 「動画アップロード input が見つからない」note エディタの UI が変更storage/note-runs/ のスクショで現状確認、セレクタ更新

♾️ 自律改善ループとはPro限定

Resonate Post の 最大の特徴 がこれ。投稿するたびに AI が反響を学習して、来週の生成プロンプトに自動反映するループ。
運用するほど発信が磨かれていきます。

仕組み

1. 投稿            → 7媒体 (X / LinkedIn / Bluesky / Threads / FB / WP / NOTE)
2. 反響を毎時計測  → いいね / コメント / 保存 / シェア / 閲覧
3. 日曜 23:30 UTC  → AI が「効いた要素」「避ける要素」を抽出 → WeeklyInsight に保存
4. 月曜 08:30 JST  → 週次サマリーメールで通知
5. 以降の生成     → systemPrompt に自動注入されて、次週の投稿に反映
💡 Pro プラン もしくは 所有者特権 email でのみ稼働します。Free / Lite / Standard は無効。

📊 /insights ページの見方

ダッシュボード右上の ♾️ Insights ボタンから開けます。3つのセクションで構成:

① ステータスサマリー (4カード)

② 過去のインサイト一覧

プラットフォーム別カード:

💡 ⚡今すぐ分析 ボタンで cron を待たず手動キックも可能。

③ 📡 読者が次に聞きたがってる話題

過去30日のあなたの投稿のうち、以下のいずれかが「異常に高い」投稿から続編ネタを自動抽出:

各カードの 📝 この角度でドラフト作成 ボタンで、その角度のままダッシュボードの Generate タブに飛んで投稿作成できます。

④ 📅 14日以内のイベント・先回りネタ

祝日・季節・ビジネス周期 (年度末・ボーナス時期 etc) を AI があなたのテーマと結びつけて角度提案。「桜が綺麗」じゃなくて「桜と起業3年目で気付くこと」のような切り口を出します。

⚡ 重要投稿モード (マルチAI討論)

ダッシュボードの AI Generate タブにある ⚡ 重要投稿モード チェックボックス。絶対外したくない投稿だけに使ってください。

4段パイプライン

Stage 1: OpenAI が初期草案を3つの角度で生成
Stage 2: 別 AI (Claude / Gemini) が独立した視点で辛口批評
Stage 3: OpenAI が批評を踏まえて統合・書き直し
Stage 4: 「重要投稿の格」最終仕上げ (フック最強化、無駄削除)

コストとレイテンシ

項目通常生成重要投稿モード
所要時間約10秒約15〜25秒
API コスト$0.005$0.02 (4倍)
⚠️ 全投稿で ON にしないでください。AI 月間消費量を一気に食い潰します。重要な発信 (採用 / リリース / プレゼン直前) だけで使うのが正解です。

使い方

  1. ダッシュボード → ✨ AI Generate タブ
  2. テーマ・切り口を入力
  3. 重要投稿モード のチェックを ON
  4. 「生成 (プレビュー)」をクリック
  5. 結果カードの下に ⚡ マルチAI討論の中身を見る という折りたたみセクションが出る → クリックで Stage 1〜4 の中身が全部見られる

💡 ネタ候補を効率よく回す

毎週月曜の朝にやるルーティン例:

  1. 📧 週次サマリーメールを開く → 「今週のAI分析」セクションを読む
  2. ♾️ Insights ページを開く → 「効いた要素」を頭に入れる
  3. 📡 「読者が次に聞きたがってる話題」セクションから1〜2件、続編ネタを選ぶ
  4. 各カードの 📝 この角度でドラフト作成 をクリックして AI Generate へ
  5. 3案から選んで予約投稿 (定期ルールに組み込めばさらに自動化)
  6. 📅 「先回りネタ」もチェック → 来週の祝日 / 業界イベントに合わせた投稿を予約
💡 この流れを続けると、「何を書くか考える時間」がほぼゼロ になります。AI が「読者が次に聞きたがってるもの」を毎週運んでくるので、あなたは選んで予約するだけ。

🚀 はじめに

各SNSを sns-auto-poster と連携するには大きく2つの方法があります。

方法 手順 対象
ワンクリック連携 (OAuth) ボタンを押して該当SNSの認証画面で「許可」するだけ。トークンが自動保存されます。 LinkedIn (今後 X / Facebook / Threads も対応予定)
認証情報を手動登録 各SNSの管理画面でAPIキー / トークンを取得し、コピペで登録。 note (ローカル運用) / Bluesky / WordPress / はてなブログ など

💡 おすすめ順: まず LinkedIn (ワンクリック連携) で動作確認 → 次に note (運用者側設定が必要) → そのあと使いたいSNSを順次追加。

🔵 LinkedIn 連携かんたん

ワンクリックで連携できます。アクセストークンの手動取得は不要です。

クライアント側 (利用者) の手順

① ダッシュボードを開く
右上のメニューから SNS Credentials タブをクリック。
② 「🔗 ワンクリック連携 (OAuth)」セクションを探す
LinkedIn 行の「LinkedInに接続」ボタンをクリック。
③ LinkedIn の認証画面で「許可」
普段使っている LinkedIn アカウントでログイン。
「Allow」ボタンで投稿権限を許可。
④ 完了画面で「✅ LinkedIn 連携完了」と表示
3秒で自動的にダッシュボードに戻ります。
⑤ 「✅ 連携済み: お名前」と表示されればOK

運用者 (サービス提供側) の事前セットアップ

ワンクリック連携を使えるようにするには、サービス管理者が LinkedIn Developer Console で1回だけ設定する必要があります。

① LinkedIn Developer アカウントでアプリ作成
https://www.linkedin.com/developers/apps → 「Create app」
必要事項: アプリ名 / 紐付ける LinkedIn Company Page / ロゴ / Legal agreement
② Products タブで2つを追加
必須:
Sign In with LinkedIn using OpenID Connect (即承認)
Share on LinkedIn (即承認)
どちらも「Request access」→「Add」で `Added products` に移動すれば完了。
③ Auth タブで Redirect URL を登録
「Authorized redirect URLs for your app」に以下を追加:
https://post.snsmapapp.work/api/oauth/linkedin/callback
一字一句完全一致で。末尾スラッシュ違いでも失敗します。
④ Client ID と Client Secret をコピー
Auth タブ → Application credentials セクション
Client ID をコピー (例: 86xxxxxxxxxx)
Primary Client Secret の👁ボタンで値を表示 → コピー (例: WPL_xxxxxx==)
⑤ Railway の Variables に登録
sns-auto-poster の Railway プロジェクト → Variables タブ → New Variable で2つ追加:
LINKEDIN_CLIENT_ID=86xxxxxxxxxx
LINKEDIN_CLIENT_SECRET=WPL_xxxxxx==
保存すると自動で再デプロイ。3〜5分後にクライアント側で「LinkedInに接続」ボタンが使えるようになります。
⚠️ よくあるエラー

手動でアクセストークンを入れる場合 (緊急用)

OAuth が動かない場合の逃げ道。LinkedIn 公式 Token Generator を使います。

  1. https://www.linkedin.com/developers/tools/oauth/token-generator を開く
  2. 自分の作ったアプリを選択
  3. Scopes チェック: openid profile email w_member_social
  4. 「Request access token」→ 認証画面で許可 → access token が表示される
  5. ダッシュボード → SNS Credentials → 「認証情報の追加 / 更新」:

トークンの有効期限は2ヶ月。失効したら再取得して同じ手順で上書き。

📓 note 連携かんたん

note は 公式投稿APIがない ため、他媒体と違って ローカル PC でブラウザ自動化 (Playwright) を使います。サービス運用者側の Windows PC (常時稼働) で 15分おきに動く仕組みです。

⚠️ 注意: note 連携は Railway クラウドでは動きません。投稿予約しても、ローカル PC のタスクスケジューラが拾うまで実行されません。クライアント側からは「予約は完了したが、note 公開タイミングは数分〜15分後」になります。

使い方 (クライアント側)

  1. ダッシュボード → ✨ AI Generate タブ
  2. プラットフォーム: NOTE を選択
  3. テーマを入れて「生成」→ 3案から選ぶ
  4. 「Draft 作成」または「予約投稿」をクリック
  5. 15分以内にローカル runner が拾って note.com に投稿 (下書きor公開、設定による)
💡 note は長文向き。X / LinkedIn の本文をそのまま流用するより、AI に「note 用に膨らませて」と指示すると刺さりやすいです (Generate の「補足情報」欄に note 用に1500字以上で展開 と書く)。

運用者側セットアップ (Windows PC で1回だけ)

① npm 依存をインストール
cd C:\Users\weapo\OneDrive\デスクトップ\SNS\自動投稿
npm i -D playwright
npx playwright install chromium
② 初回ログイン (1回だけ)
npx tsx scripts/note-spike/login.ts
Chrome が開くので note.com に手動でログイン → コンソールに戻って Enter。
cookie が storage/note-spike-userdata/ に保存される (以降は自動でログイン状態維持)。
③ Windows タスクスケジューラに「投稿runner」登録 (15分おき)
schtasks /create /f /sc minute /mo 15 /tn "SnsAutoPoster-NoteTick" /tr ""C:\Users\weapo\OneDrive\デスクトップ\SNS\自動投稿\scripts\run-note-tick.bat"" /ru "ガレリア\weapo" /it
これで予約された note 投稿が自動公開される。
④ Windows タスクスケジューラに「メトリクス取得runner」登録 (1日1回, 自律ループ用)
schtasks /create /f /sc daily /st 23:00 /tn "SnsAutoPoster-NoteMetrics" /tr "cmd /c cd /d "C:\Users\weapo\OneDrive\デスクトップ\SNS\自動投稿" && set NOTE_METRICS_ENABLED=1 && npx tsx scripts/note-metrics-runner.ts" /ru "ガレリア\weapo" /it
23:00 に note ダッシュボードを巡回して、スキ数・コメント数を Resonate Post の PostMetric に保存。これで 自律改善ループ (Pro) が note の反響も学習対象にできる。
⑤ .env に投稿モード設定
C:\Users\weapo\OneDrive\デスクトップ\SNS\自動投稿\.env に以下を追加:
NOTE_PUBLISH_MODE=publish      # 自動公開する場合 (draft なら下書き保存まで)
NOTE_USERNAME=your_note_user   # note.com の自分のユーザー名 (URL用)
NOTE_METRICS_ENABLED=1         # メトリクス取得を許可 (安全装置、未設定なら走らない)

動作確認

  1. 投稿: ダッシュボードから NOTE 向けドラフト作成 → 15分以内に runner が拾う → タスクスケジューラの「最終実行結果」が成功になる → note.com に反映
  2. メトリクス: 23:00 のメトリクスタスク実行後、/insights ページで NOTE 向けのインサイトが累積される

トラブルシューティング

症状原因対処
「note.com 未ログイン」エラーcookieが切れたもう一度 scripts/note-spike/login.ts でログインし直し
投稿runnerが15分おきに動かないタスクスケジューラ未設定 or 設定漏れschtasks /query /tn SnsAutoPoster-NoteTick で確認
「AccessDenied」エラーnote.com の WAF にブロック1時間ほど時間を置いてから再試行。連続アクセス回避
メトリクスが /insights に出ないNOTE_METRICS_ENABLED=1 設定漏れ.env に追加 + Task Scheduler の環境変数にも入っているか確認
記事URLがnoteで違うものになるNOTE_USERNAME 未設定.env に noteアカウント名を入れる
💡 WAFブロック対策: note.com は短時間に大量アクセスすると一時的にブロックされます。投稿は15分間隔、メトリクスは1日1回くらいに抑えるのが安全。複数アカウント運用したい場合は別 PC を用意するのが確実です。

🦋 Bluesky 連携かんたん

App Password 方式。OAuth不要、簡単。

  1. Bluesky 設定 → App Passwords でアプリパスワード生成
  2. ダッシュボード → SNS Credentials → 「認証情報の追加 / 更新」:

📘 Facebook 連携ふつう

Facebook Page への投稿のみ対応 (個人ウォール投稿は API 非対応)。

  1. Meta for Developers でアプリ作成
  2. 製品「Facebook ログイン」+「Pages API」を追加
  3. Graph API Explorer で Page Access Token 取得 (権限: pages_manage_posts pages_read_engagement)
  4. 長期トークンに変換 (60日有効)
  5. ダッシュボードに登録:

権限 pages_manage_posts は Meta の App Review 必須。承認に数日〜数週間かかります。

🧵 Threads 連携ふつう

Meta の Threads API。設定方法は Facebook と類似。

  1. Meta for Developers でアプリに「Threads API」を追加
  2. Threads User ID と Long-lived Access Token を取得
  3. ダッシュボードに登録:

📝 WordPress 連携ふつう

WordPress 5.6+ の Application Password 機能で連携。

  1. WordPress 管理画面 → ユーザー → プロフィール → Application Passwords セクション
  2. 名前 (例: sns-auto-poster) を入れて「新しいアプリケーションパスワードを追加」
  3. 表示される xxxx xxxx xxxx xxxx xxxx xxxx 形式のパスワードをコピー
  4. ダッシュボードに登録:

📔 はてなブログ 連携ふつう

AtomPub API + WSSE 認証。

  1. はてなブログ管理画面 → 設定 → 詳細設定 → AtomPub セクション
  2. 「APIキー」をコピー
  3. ダッシュボードに登録:

🐦 X (Twitter) 連携むずかしい

⚠️ X API は有料です
投稿APIを使うには Basic tier ($200/月) 以上が必須。無料枠では投稿できません。
法人向け運用で X が必須でない場合、LinkedIn / note / Facebook で十分なケースがほとんどです。

  1. X Developer Portal で開発者アカウント取得 (Use Case 申請審査あり)
  2. Basic Plan ($200/月) に課金
  3. App を作成し、OAuth 1.0a の4つの値を取得:
  4. ダッシュボードに4つ全て登録 (service=X, key_name はそれぞれ api_key / api_secret / access_token / access_token_secret)

🆘 困ったときは

最終更新: 2026-05-18