# tfora LP Maker > tfora(tool for AI)の道具のひとつ。AI エージェントが、人の手を借りずに「ロングLP」(画像を縦に30〜40枚積んだ広告用のランディングページ)を作る・直す・検品する・書き出すための REST API。 > 画像生成を直接呼ぶと、パートごとに商品・人物・色がばらばらになり、文字や値段が化け、画像どうしがつながらない。LP Maker はそれを仕組みで受け持つ:本物の商品写真を毎回添える/文言を一字一句で持ち、生成のたびに画像から読み取って突き合わせる/大きく描いてから余白を切る/前後のパートと重ねてつなぐ。 - 機械が読む仕様:/openapi.json - 手元のコマンド(同じ中身):`node ai/lp.mjs <コマンド> …`(TFORA_API_KEY があれば、この API を呼ぶ) ## はじめかた(人の画面は通らない) 1. `POST /api/v1/signup` → `test_key`(tf_test_…)が返る。全文が見えるのはこの1回だけ。 試し用キーでは画像生成も AI も呼ばず、本物と同じ形の仮の返事(同じ大きさの仮の絵・文章を空行で区切った仮の構成・検品は設計どおり)を返す。クレジットはかからない。作る・直す・検品・書き出しの流れを、全部そのまま確かめられる。 本番用キー(tf_live_…)は、持ち主(人)が引き取ってから渡される。 2. 以後のリクエストには `Authorization: Bearer <キー>` を付ける。 3. `POST /api/v1/run` にコマンドを送る:`{"command":"new","args":["my-lp"],"options":{"title":"商品名"}}` 4. ファイル(商品写真・LPの文章・parts.json)は、先に `POST /api/v1/uploads?filename=商品.png`(本文にファイルそのもの)で上げ、返ってきた `ref`(`upload:`)を引数に書く。 5. 書き出されたファイル(画像・index.html)は、返事の `files[].url`(24時間有効)から取る。 ## run の返事 - `output`:コマンドの表示(手元の lp と同じ文)。次の一手もここに書いてある(例「見てよければ:lp adopt …」) - `files`:書き出したファイル `[{name, url}]` - `credits`:`{used, left, estimate}`。`mode`:test か live。`failed`:一部でも失敗したら true - 見積もりが大きい実行は、すぐには動かず `202 {"status":"needs_confirmation","estimate_id":…,"estimate":…}` が返る。同じ本文に `estimate_id` を足して呼び直すと実行する(30分以内) - エラーは `{"error":…, "code":…, "hint":…}`。hint に次にすることが書いてある ## 流れ 1. `new ` → `outline --file upload:<文章>`(LPの文章の全文) 2. `ref-add product upload:<商品写真> --label "パウチ正面"`(商品写真は必ず本物。AIに描かせた物で代用しない)/`ref-add design upload:<見本>` 3. `plan `(文章からパートに割る)→ `show ` で確かめ、`set`・`add`・`move`・`rm` で直す 4. `gen --blank`(空白のパートを作る。時間の上限があるので、残りがあれば `output` にそう出る。同じ呼び出しをくり返す) 5. `check `(画像の文字を読み取って設計の文言と突き合わせる)と `sheet `(通しの縮小図)で検品 → `get --split` で取り出して自分の目で見る 6. 直す:文字・値段の化けは `gen --rect x,y,w,h --say "…"`(範囲の外は1画素も変わらない)、端切れは `gen --extend top|bottom|both`。画像のあるパートの直しは下書きになるので、`.compare.jpg`(左が前・右が後)を見てから `adopt <下書きID>` 7. `export [--animate]` → `files` に index.html と img/ が返る。試し用・未引き取りの書き出しは透かし入り・検索よけつき ## コマンド(args は位置引数、options は --名前 の値。値を取らないものは true) | コマンド | args | 主な options | |---|---|---| | list | | | | show | LP | json | | part | LP, ID | | | new | LP | title, outline(upload) | | fork | 元LP, 新LP | title | | outline / style / title | LP | file(upload) か value。どちらも無ければ今の値を返す | | refs / ref-add / ref-rm | LP, (product\|design, upload…) / (キー) | label | | draw | 出力名.png | say, size, ref(upload の配列) | | plan | LP | force | | add | LP | file(upload: parts.json) か role・brief・text(配列)・size・product・link、after・before | | set | LP, ID | role brief text texts-file size product link seam img motion kind img2 video start rows | | replace | LP | from, to | | move / copy / rm | LP, ID… | after・before・first | | gen | LP, ID… | blank fresh ok-redraw adopt rect say size extend retry no-check parallel | | clone / crop / stack / paste / put | LP, ID (put は画像の upload も) | from to shape feather/top bottom/slice(配列)/file(upload) at w shadow | | seams | LP, ID… | fix | | adopt / discard | LP, ID, 下書きID / 下書きID | | | get / sheet | LP, ID… | split width | | check | LP, ID… | json no-check | | export | LP | animate link-form link-onetime dock-button dock-note dock-small index config(upload) | | reviews / review | LP, (ID) | ok fix clear | 大きさ(size):tall/portrait/square/wide/band。範囲(rect・at など)は 0〜1 で左上が原点。 ## 直し方の決まり(守ると早く仕上がる) - 指示には「変える所」と「変えない所」を両方書く(人物・商品・ほかの文字・背景・位置・大きさを名指しで) - 画像のあるパートを `--fresh` で作り直さない(絵も言葉も全部変わる)。文字の直しは `--rect`、並べ替えは `stack` - 商品の形・ロゴは AI に描かせると変わる。正確さが要る所は `gen --rect` で消してから `paste` で本物を貼る - お客様の声・受賞・数字は、出どころのあるものだけ。brief に「指定の文字のまま。ほかの名前を作らない」と書く - 検品が OK でも、ラベル・ロゴ・人物の崩れは機械では見ていない。`sheet` と `get` で必ず目で見る ## 料金 クレジット制。画像1枚・Claude のトークンの分だけ引く(単価は GET /api/v1/me の `credits.price`)。チャージ(前払い)した分から使った分だけ引く従量課金。クレジットの期限はチャージから1年。試し用キーは無料(1日の回数に上限あり)。