インディーハッカーワークフロー — OpenClaw 自動ボイラープレートでローカル大量生産ウェブマイクロアプリ
インディーハッカーが失敗するのはアイデア不足ではなく、17番目のアイデアがスモークテストに届かないからです。 OpenClaw はチャット玩具ではなく、自動ボイラープレート工場として使います。同じ Next.js/Vite マイクロアプリ骨格をスキルとシェルで量産し、同じ npm test ゲートを回し、合否を finance が無視できる CSV に残します。本ワークフローはローカル Mac での量産とテストを第一に置きます。リモート Mac レンタルは夜間バッチ用の任意レーンです。
Apple Silicon で OpenClaw を運用している場合は、hour-zero インストール規約、Webhook 前のレート制限、複数 repo 時の Git ディスク管理を併読してください。ボイラープレート反復のみなら OpenClaw + Ollama でトークン支出を抑えられます。
開示:KvmZone の記載は、長時間バッチ用にレンタル Mac を選ぶ場合に限ります。ワークフローの大半はお手持ちの Mac で完結します。
ローカル優先の量産が「完璧な1本」に勝つ理由
| 痛み | ローカル優先 OpenClaw の応答 |
|---|---|
| テンプレート漂流 | 1 スキルが毎回同じフォルダ構成を出力 |
| 出荷恐怖 | バッチスモークで各アイデアを 15 分ゲートに圧縮 |
| API 請求ショック | ボイラープレートはローカル/安価モデル、昇格時のみフロンティア |
| repo 散乱 | worktree + sparse checkout でディスクを予測可能に |
オペレーター向け公式は OpenClaw gateway configuration examples です。インストール済みバージョンでスキルと CLI フラグを確認してください。
アーキテクチャ:1 台のワークステーション上のボイラープレートループ
インディーループのデータフロー:
Idea CSV → OpenClaw skill (scaffold) → git worktree → npm ci → npm run build → npm test → PASS/FAIL 行
一度だけ固定するコンポーネント
| コンポーネント | パス / コマンド | 役割 |
|---|---|---|
| Workspace | ~/.openclaw/workspace | スキルとエージェント既定 |
| Boilerplate skill | skills/micro-app-scaffold/ | package.json、src/、README.md を出力 |
| Batch driver | ~/indie-batch/run.sh | アイデア列挙(root 実行禁止) |
| Artifact root | ~/indie-apps/ | slug ごと 1 ディレクトリ、下に worktree |
| Smoke log | ~/indie-apps/smoke.csv | タイムスタンプ、slug、終了コード、ログパス |
モデルルーティング(支出を退屈に)
| フェーズ | モデルレーン | 理由 |
|---|---|---|
| Scaffold + ファイル編集 | ローカル Ollama または高速クラウド mini | 反復回数が多い |
| UI コピー磨き | フロンティアモデル | 頻度が低い |
| 本番 Webhook エージェント | フロンティア + レート制限 | 予算アラート記事参照 |
6 段階量産ランブック(ローカル Mac)
Step 1 — Node と OpenClaw を固定
node -v # 22.x を想定
openclaw --version
openclaw doctor
バッチ前に PATH を修正してください—hour-zero 規約参照。
Step 2 — アイデアキューを作成
~/indie-apps/ideas.csv:
slug,title,stack
ping-dashboard,Ping Dashboard,vite-react
waitlist-mini,Waitlist Mini,next-14
Step 3 — OpenClaw でスキャフォールド(1 スキル、多数 slug)
export IDEA_SLUG=ping-dashboard
openclaw run --skill micro-app-scaffold --var slug=$IDEA_SLUG --var stack=vite-react
合格ゲート: ~/indie-apps/$IDEA_SLUG/package.json が存在し CSV と一致。
Step 4 — git worktree で隔離
cd ~/indie-apps/monorepo.git
git worktree add ../wt-$IDEA_SLUG -b indie/$IDEA_SLUG
rsync -a ~/indie-apps/$IDEA_SLUG/ ../wt-$IDEA_SLUG/
合格ゲート: git -C ../wt-$IDEA_SLUG status が意図的文件以外クリーン。
Step 5 — バッチ install と build
cd ~/indie-apps/wt-$IDEA_SLUG
npm ci --prefer-offline
npm run build
合格ゲート: dist/ または .next/ が存在し、終了コード 0。
Step 6 — バッチ test と記録
npm test -- --passWithNoTests 2>&1 | tee ~/indie-apps/logs/$IDEA_SLUG.test.log
echo "$(date -Iseconds),$IDEA_SLUG,$?,$PWD" >> ~/indie-apps/smoke.csv
昇格ルール:終了コード 0 の slug のみカレンダーに人間レビューを置きます。
バッチテストマトリクス(PASS の定義)
| チェック | コマンド | PASS | FAIL 時 |
|---|---|---|---|
| Typecheck | npm run typecheck または tsc -b | 終了 0 | OpenClaw 修正スキル 1 回、以降人間 |
| Unit | npm test | 終了 0 | smoke.csv で隔離 |
| Lint | npm run lint | 終了 0 | アイデア段階は任意、公開 URL 前は必須 |
| Dev server | timeout 30 npm run dev | / が HTTP 200 | ポート競合をログ、並列 dev は避ける |
| Bundle size | du -sh dist | パイロットは < 5MB | 昇格前にアセット削減 |
空き RAM 8GB 以上のノート PC ではチェックを直列実行。16GB Apple Silicon では並列 npm ci を2本までに抑え、スワップ暴走を防ぎます。
シナリオ A — ノート PC のみのインディー週間
条件:APFS 空き 50GB 以上、Webhook 公開なし。
- 1 日目:5 slug で Step 1–3。
- 2 日目:全 slug で Step 4–6、1 slug を昇格。
- 3 日目:昇格 slug のランディングコピーのみフロンティアモデル。
推奨: 同一スタックテンプレで smoke.csv に3連続 PASS が出るまでローカルに留まります。
シナリオ B — 夜間バッチ用の任意レンタル Mac
条件:ローカル Mac がスリープする、または並列 npm ci を6本必要。
レンタル Mac mini M4 16GB は電気代とスリープの OPEX 代替であり、必須ではありません。レンタルする場合は SSH 優先運用を再利用し、シークレットはサーバー側に置きます。東京ノードなどリージョンは 料金ページで Compare できます。
トラブルシューティング
openclaw run 成功だがフォルダが空
パターン: スキル終了 0、ファイルなし。
対処:
- スキルが repo CWD ではなく config の
workspaceに書くか確認。 - verbose で対話実行 1 回、パスをスキル README に記録。
- スキルバージョンを固定—自動更新でパスが静かに壊れます。
バッチ中の npm ci OOM / kill
パターン: Killed: 9 またはスワップ嵐。
対処:
- 並列を 1 に下げる。
- スモークのみ
npm ci --omit=dev(CSV に逸脱を記載)。 - 16GB 以上統合メモリのマシンへバッチ移行。
FAQ
ideas.csv の stack をパラメータ化し、必要なら 2 列目にスタック別スモークコマンドを置きます。