※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。
1/50。この数字をダッシュボードで見たとき、目を疑った。打ち間違いか、バグで計測が止まっているのかと思った。でも現実は違った。Claude Codeに投げた、たった一言の指示が、SaaSの「静かなる殺人鬼」を仕留めた。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
APIコストの暴走と、たった一言の魔法
今週のハイライトはAPIコストの削減だ。1人開発だと機能追加の楽しさに目がくらみ、裏側で垂れ流されている「血」に気づかない。僕の場合、それはXのメンション取得APIだった。
コストは50分の1になった。Claude Codeに「このAPI呼び出し、コスト削減できる?」と聞いただけで、数週間放置していた「全件取得」という愚行が一瞬で最適化された。
今週の戦績はこれだ。
- 総コミット数: 18件
- 新機能実装: 5件
- バグ修正: 5件
- APIコスト削減率: 98%
- 壊した回数: 3回
APIコストの泥沼を抜け出したと思えば、今度はAIサムネイル生成の文字数制限にハマり、最後は決済ゲートの実装という震えるフェーズに突入した。
しんたろー:
1回0.10ドルのAPIを1日10回×30日で月30ドル。これが1日1回になれば月3ドル。ユーザーが100人いたら月2,700ドルの差が出る。1人開発でこの差は生存か死かを分ける。
Claude Codeが見抜いた「全件取得」という名の自殺行為
事の発端はAPIの請求額だった。ThreadPostはXのメンションを監視して自動返信する。僕はこれまで、過去48時間分のメンションを毎回「全件」取得し、コード側でフィルタリングしていた。
「perf(x-mentions): API since絞り込みでメンション取得コストを1/50に削減」
このコミットがすべてを変えた。それまで1回の実行につき0.05〜0.10ドルを支払っていた。これが4つのアカウントで数分おきに走る。計算するのも恐ろしい額が、フィルタリングをサボっただけで消えていた。
Claude Codeの答えはシンプルだった。since演算子で前回の取得以降を狙い撃ちし、お手本データはDBにキャッシュする。なぜ今までやらなかったのか。1人開発に止めてくれる上司はいない。AIだけが冷静に無能さを指摘してくれた。
「perf(x): twitterapi.io コスト削減 - お手本キャッシュ + バッチサイズ拡大」
従来は呼び出しのたびに外部APIへリクエストしていた「お手本ツイート」の取得を、24時間TTLのDBキャッシュに移行した。1日10回以上発生していたAPIリクエストが、たった1回に集約された。30分で終わった。ただしUIの調整で半日溶かした。
Geminiとの13文字を巡る終わりなき戦い
APIコストの勝利に酔いしれていた僕を待っていたのは、AIサムネイル生成という名の「言うことを聞かない子供」との格闘だった。Gemini 2.5 Flashで画像内の見出しを生成する際、致命的な問題が発生した。
「13文字以内で」と3回書いたのに、Geminiは平気で14文字を返してくる。
「fix(thumbnail): headline 13字制約をGemini側で厳守させる(強制切り詰め廃止)」
最初はプロンプトで念を押し、次に「超えた場合は切り詰めろ」と指示した。するとコード側で強制カットが走り、「Claude Codeで開発を自動化」が「Claude Codeで開発」でぶった切られた。意味不明な画像が生成され、リトライが連発してAPI代だけが積み上がった。
「fix(thumbnail): AI Tipsサムネのリトライ削減(テキスト2→1、13字強制切詰)」
1記事あたり最大7回のリトライ。APIコストを削ったそばから、別の場所で垂れ流している自分に笑った。結局、プロンプトで縛るのをやめた。画像内のテキスト要素を2つから1つに減らし、文字数が溢れるリスクを物理的に排除した。AIを賢く使おうとするのではなく、バカでも間違えようがない設計にするのが一番早い。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴
AIに「この現象をプロンプトで抑止して」と頼んだら、あろうことか「抑止するための文言」を別の場所にも書き足し、被害を拡大させた。ある時、生成された画像に「AI新設るなる力捉断ず」のような謎の文字化けが混入した。Geminiが特定のパターンで勝手に捏造していたのだ。
「fix(thumbnail): P5で勝手に余分な日本語を生成する現象を抑止」
結局、プロンプトを徹底的に削ぎ落とし、「TEXT (exactly 2 strings)」のような機械的な指示に書き換えることで鎮圧した。AIは賢いのではなく、指示の枠組みが全てだ。境界線を明確に引く。これだけでバグは激減した。
今日の数字
| 項目 | 先週 | 今週 | 変化 |
| :--- | :--- | :--- | :--- |
| APIコスト(1実行あたり) | 約0.10ドル | 約0.002ドル | 98%削減 |
| サムネ生成リトライ数 | 1記事5〜7回 | ほぼ0回 | 劇的改善 |
| 決済ゲート実装時間 | 0時間 | 約8時間 | 新規実装 |
| コミット数 | 12件 | 18件 | 加速 |
しんたろー:
決済ゲートの実装で8時間。StripeのWebhookとDBの同期で3回死にかけた。これ、ミスるとユーザーの金が消えるから冷や汗が止まらない。
FAQ
Q: APIコストの具体的な削減ロジックはどうなっている?
A: X APIのadvanced_searchにsince演算子を渡し、前回の取得時刻以降のみを取得するようにした。頻繁に参照するお手本ツイートは24時間TTLのDBキャッシュに移行した。これにより無駄なリクエストを極限まで削ぎ落とした。
Q: 決済実装で最も神経を研ぎ澄ませた部分は?
A: 解約処理のステート管理だ。即時解約と期間末解約のフラグがズレると、金は払ったのに使えない最悪の事態になる。StripeのWebhookイベントをDBで受け取り、4段階のステータスで厳密に管理するようにした。
Q: 1人開発において、設計とプロンプトのどちらを優先すべき?
A: 圧倒的に設計だ。AIが間違えようのないデータ構造を作り、境界線を明確に引く。その枠組みさえあれば、Claude CodeのようなAIは中身を埋める作業で最高のパフォーマンスを発揮する。
しんたろー:
決済周りのバグはまだ潜んでいるかもしれない。来週、最初の課金が発生するその瞬間まで、緊張は解けない。
ThreadPostは今日も進化した。有料ユーザーが生まれる瞬間に怯えつつ、マーケティングを加速させる。

この記事が参考になったら、ThreadPostを試してみませんか?
投稿作成・画像生成・スケジュール管理まで、全てAIにお任せできます。
ThreadPostをもっと知る