AP社 SNS連携 システム図(API 版)

取得・返信・DM・投稿をすべて各媒体の公式 API で行う構成。処理はさくらVPS 上で常駐し、systemd timer と Webhook で起動する。台帳は Google スプレッドシート、承認は AP コンソール。

スマホは「画面幅に合わせる」で全体を見て、指で広げて読んでください
ブラウザAP コンソール(承認)/構成案コンパネ/素材置き場
さくらVPSUbuntu 24.04・常駐(systemd)
systemd timersns-worker 毎日
notify-digest 07:30
backup 日次
CaddyTLS・Basic 認証
X-Auth-Email を付けて転送
Hono API :3210 /console/* 承認UI・素材置き場 /api/console/deliveries 承認・publish
/api/composer/drafts 構成案の受け口 /api/webhooks/* 媒体からの通知 /files/* 配信物
ストレージ /opt/aquacut assets・thumbs・proxies・renders / JSON store(projects・compositions・deliveries・composer batches)
SNS ワーカーAPI で取る・返す
取り込み4媒体の API・Webhook から クチコミ/コメント/DM/メンション
判定・下書き分類(何の話か・ネガポジ・言語)→ 返信型 → 定型文
反映確認API で読み戻し、載っているか照合
送信・投稿承認済みを API で 返信/DM/予約投稿
承認は台帳の「状態」で判断。承認済みの行だけが送信・投稿に進む。レート制限・日次上限はここで制御
AQUACUT動画の制作と配信物
素材置き場/console/library。チャンク分割アップロード → assets
composerComposerSpec → autoEdit → Composition → preview job
JobQueue → ffmpegpreview/full render → renders/
Deliverydraft → queued → rendering
→ preview → approved → published
配信物/files/renders/<job>。期限付きの公開 URL を発行し、投稿 API に渡す
通知JobQueue.onFinished → Slack / 07:30 未承認まとめ → Slack / ワーカー失敗 → Slack
環境変数GBP/Meta/TikTok/X の API トークン・GAS トークン・SLACK_WEBHOOK_URL
Google台帳と窓口
GAS Web AppdoGet/doPost・トークン検証。受信箱・履歴・送信結果を読み書き
スプレッドシート受信箱(24列・1件1行)/履歴(前の値・更新者・日時)
媒体の公式 API取得・返信・DM・投稿
Google Business Profile APIaccounts.locations.reviews
list / reply
Meta Graph API(Instagram)コメント・返信
Messaging API(DM)
Content Publishing(リール)
Webhooks
TikTok API for Businessコメント管理
Business Messaging API(DM)
Content Posting API
Webhooks
X API v2mentions / tweets(返信)
DM / media upload
Webhook がある媒体は即時(Meta・TikTok)。無い媒体は timer のポーリング(GBP・X)
動画の投稿は公開 HTTPS URL で渡す(Instagram・TikTok)。X は media upload。VPS が期限付き URL を発行する
Instagram の DM 返信は相手の最終メッセージから 24 時間以内。TikTok の予約は 5 分刻み。X は有料プラン
Slackレンダ完了・未承認まとめ・失敗通知
HTTPS・Basic 認証
reverse_proxy → :3210
承認・確定文
(GAS)
受信箱へ書く
承認済みを読む
毎日 起動
07:30
取得(クチコミ/コメント/DM/メンション)
送信・投稿 ⇄ 反映の読み戻し
配信物
URL
POST /api/composer/drafts
Webhook
approved
assets/renders
通知
API 呼び出し(HTTPS) Webhook・通知 定期起動(systemd timer)