Nothing ships to Instagram or Threads until you click approve. Your data, your tokens — no SaaS in the loop except the Anthropic API for writing captions.
あなたが承認ボタンを押すまで、InstagramにもThreadsにも一切投稿しません。データもトークンも全部あなたのもの。キャプション生成のAnthropic API以外、途中に外部SaaSは入りません。
The tool does the daily grind. You keep the one decision that matters: hitting approve.
面倒な毎日の作業はツールが回します。あなたに残るのは大事な判断ひとつ=承認を押すことだけ。
Rotates through your Shopify catalog — a different product each day, no repeats for weeks.
Shopifyカタログを順送りし、毎日違う商品を選びます。同じ商品が何週間も続きません。
Claude builds the carousel and writes the caption. Dedup, burst and safety guards run automatically.
Claudeがカルーセルを組み、キャプションを書きます。重複・連投・安全チェックは自動で通ります。
Open the preview, see exactly how it'll look, click approve. Only then does it post.
プレビューを開いて「こう見える」を確認し、承認をクリック。そこで初めて投稿されます。
Runs on your own machine (or a small server). Docker is the smooth path; plain Node works too.
あなたのPC(または小さなサーバ)で動きます。Dockerが一番スムーズ。素のNodeでも動きます。
Clone the repository to your machine.
リポジトリを自分のPCにクローンします。
# clone the repo
git clone https://github.com/veinsystem/post.git
cd post
A setup wizard writes your .env and config.json. It asks for your Shopify domain + Admin token, brand name, IG handle, Instagram/Threads tokens, your Anthropic key, and Cloudflare R2 settings (for public image URLs).
セットアップウィザードが .env と config.json を作ります。Shopifyドメイン+Adminトークン、ブランド名、IGハンドル、IG/Threadsトークン、Anthropicキー、Cloudflare R2設定(公開画像URL用)を順に聞きます。
node bin/init.js
Meta (Instagram/Threads) token setup is walked through in docs/setup_meta_tokens.md. This step — getting the keys — is the real work; the rest is quick.
Meta(Instagram/Threads)トークンの取り方は docs/setup_meta_tokens.md にまとまっています。この鍵の準備がいちばんの山場で、あとはすぐ終わります。
With Docker: build, generate today's plan (dry-run — writes nothing live), and start the approval UI.
Dockerの場合: ビルド → 今日のプラン生成(dry-run・本番に何も書きません)→ 承認UIを起動。
docker compose build docker compose run --rm daily # today's plan (dry-run, safe) docker compose up -d preview # approval UI → localhost:8782
Prefer plain Node? npm ci, then DRY_RUN=1 node run-daily.js --dry-run, then node gen-preview.js.
素のNodeがよければ: npm ci → DRY_RUN=1 node run-daily.js --dry-run → node gen-preview.js。
Open http://localhost:8782. You'll see the AI-written post with its product carousel. Read it, and click approve. Live posting still needs the --live flag — two gates, so you're always in control.
http://localhost:8782 を開くと、AIが書いた投稿案と商品カルーセルが並びます。中身を読んで承認をクリック。実投稿にはさらに --live フラグが必要です。二重ゲートで、常にあなたが主導権を持ちます。
This is a developer-hosted tool, not a one-click app. Here's who has a smooth time — and where the wall is.
これはワンクリックのアプリではなく、自分で動かすツールです。スムーズに進む人と、関門になる所を正直に書きます。
node modules/cli/token-refresh.js (Threads) — the tool warns you when fewer than 7 days remain. Check status any time with node modules/cli/token-check.js.node modules/cli/token-refresh.js(Threads)で更新してください。残り7日を切ると警告が出ます。状態確認はいつでも node modules/cli/token-check.js。HOSTING_MODE=local_static instead.HOSTING_MODE=local_static も使えます。http://localhost:8782, see exactly how the post will look, and click approve. Only approved posts enter the publish queue, and live posting requires the --live flag. Two gates keep you in control.http://localhost:8782 を開いて「こう見える」を確認しクリックで承認。承認した投稿だけがキューに入り、実投稿には --live フラグが必要です。二重ゲートで常にあなたが主導権を持ちます。select tracks a rotation cursor and a cooldown (default 14 days in config.json), so it advances through your catalog and won't repeat an item until the cooldown passes.select がローテーションのカーソルとクールダウン(config.json の既定14日)を管理し、カタログを順送りしながらクールダウンが明けるまで同じ商品を出しません。media block in config.json toggles channels; the wizard defaults to Threads on. Provide a token for whichever channel(s) you want.config.json の media で媒体をON/OFFでき、ウィザードの既定はThreads ON。使いたい媒体のトークンだけ入れてください。This is an unofficial tool not affiliated with Meta, Instagram, or Threads. Use it in compliance with the Meta Platform Policy and Instagram's Terms of Use. The author is not responsible for any account suspension or API access revocation.
本ツールはMeta / Instagram / Threads の非公式ツールであり、これらと提携関係にありません。 MetaプラットフォームポリシーおよびInstagram利用規約に従い、自己責任でご利用ください。アカウント停止・API利用停止について、作者は一切の責任を負いません。