※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
「お前のLP、嘘書いてるぞ」
Claudeにそう言われた。深夜3時を過ぎた頃だ。

「営業DM一切なし」という文言が、機能として何も担保されていない。CTAのテキストが場所によってバラバラ。参加者数の表示が静的な数字のまま。僕が「完成した」と思っていたLPは、Claude視点だと穴だらけだった。
今週じゃなくて今日の話
今日1日で37コミット。新機能3件、バグ修正1件。
数字だけ見ると悪くない。でも中身を見ると、半分以上がLPの「言葉と現実のズレ」を埋める作業だった。機能を作ったんじゃなくて、自分が書いた嘘を消した1日だ。
深夜1時。PDFを30枚作った男の話
午前1時34分。最初のコミットは「Implement SNS Automation PDF design v2」だった。
収益化ガイドのPDFを作っていた。テキストだけのPDFは離脱されやすい。視覚的なアンカーを打ち込まないと読了率が落ちる。だから画像を埋め込む。
最初は11枚だった。気づいたら合計30枚以上の画像をPDFに埋め込んでいた。
しんたろー:
画像生成スクリプトを書いた。1枚ずつ手で作ってたら今ごろ朝になってた。スクリプト化で0秒になった。ただし「どんな画像を作るか」を考える時間はゼロにならない。そこだけ人間がやる。
PDFのレイアウト調整はしんどい。7ページ目のはみ出し修正、フッターのページ番号統一、印刷CSSの調整。コミットメッセージが「PDFフッター・レイアウト改善」「PDFページ全体のレイアウト調整(文字切れ修正)」「第1章まとめのデザインを元に戻す」と続いている。
最後の「元に戻す」が全てを物語っている。やって、壊れて、戻した。ソフトウェア開発の縮図だ。
タイトルも途中で変えた。「30万フォロワー」から「1万フォロワー」に。理由はシンプル。30万という数字が現実と乖離していたからだ。
「ユーザーが離脱するポイントを潰せ」と頼んだら、自分が書いた嘘が出てきた
午前3時19分。コミットメッセージは「LP改善 - CTA統一・フローティングCTA・『なぜ無料か』追加」。
その9分後、3時28分のコミットメッセージが「LP改善 - CTA統一・フローティングCTA追加・嘘の削除」になっている。
Claudeへの指示は一言。「ユーザーが離脱するポイントを潰せ」。返ってきたのは機能の提案じゃなかった。
- CTAのテキストが場所によってバラバラ
- 「なぜ無料か」の説明がどこにもない
- 参加者数の表示がリアルタイムじゃない
- 「営業DM一切なし」という文言が、機能として何も担保されていない
最後の指摘が刺さった。「営業DM一切なし」と書いていた。でも実際には、それを保証する仕組みは何もなかった。Discordコミュニティに入ってきた誰かが営業DMを送っても、技術的に防ぐ手段がない。
これは「価値が伝わっていない」問題じゃなくて、「嘘がある」問題だった。
しんたろー:
「価値が伝わってない」と「嘘がある」は全然違う問題。前者はコピーを磨けば解決する。後者は機能か文言を変えないと解決しない。今回は後者だった。
修正は一気にやった。「営業DM一切なし」を削除。「参加無料・退出自由」だけ残す。CTAテキストを「ぽすたまタウンに参加する(無料)」に全ページ統一。Discordの参加者数をリアルタイム取得に変えた。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴:Vercelが自分自身と話しようとして沈黙した
Discord参加者数のリアルタイム表示は、最初APIを叩くだけのはずだった。Server ComponentからAPIルートを呼んで、そこからDiscord Bot APIを叩く設計。動かなかった。
Vercelのサーバーレス環境では、Server Componentが自分自身のAPIエンドポイントを呼ぶ「自己参照フェッチ」が失敗する。コールドスタート時のネットワーク制限や、関数実行のタイムアウトが絡む。ローカルでは動いていた。本番環境で動かない。
APIエンドポイントを経由せず、Server ComponentからDiscord APIを直接叩く方式に切り替えた。5分間のキャッシュも追加してAPI制限を回避する設計にした。
しんたろー:
「自己参照フェッチが失敗する」ってエラーメッセージが出るわけじゃない。ただ何も返ってこない。ローカルで動いてたから気づくのが遅れた。Vercelで動かしてみて初めてわかる問題がある。
「誘導するボタン」が「迷子にする壁」になっていた
モバイルユーザーのためにフローティングCTAを設置した。画面下部に常時表示されるボタンだ。実装して確認した。PCでは問題なかった。
モバイルで開いたら、フッターの一番下のリンクがクリックできなかった。フローティングCTAがフッターの上に被さって、コンテンツを隠していた。フッターに「pb-24」を追加して下部パディングを確保する修正をした。
モバイルファーストの設計では、固定配置要素と他のUI要素の衝突は頻発する。特にフローティングCTA、固定ヘッダー、チャットウィジェットが同時に存在する場合、z-indexとpadding/marginの計算が複雑になる。確認する指示を出してなかったのは僕だった。
今日の数字
| 項目 | 今日 | 比較 |
|------|------|------|
| 総コミット数 | 37件 | チーム開発なら複数人で分担する量 |
| 新機能 | 3件 | — |
| バグ修正 | 1件 | — |
| PDF画像生成 | 30枚以上 | 手動なら1枚あたり15分以上 |
| 作業時間帯 | 01:34〜20:47 | — |
| LPから削除した嘘 | 1件 | 1件で十分すぎる |

PDF画像の話を深掘りする。手動で画像を1枚作って、サイズを調整して、PDFに埋め込む作業は、一般的に1枚あたり数十分かかる。スクリプト化することで、この作業は「スクリプトを走らせる」だけになる。30枚分の差は大きい。
企業開発でLPのコピーを修正する場合、マーケティング、法務、開発の確認フローが必要になる。今日は気づいてから数時間で修正した。これが1人開発の速度だ。意思決定のコストがゼロ。
FAQ
Q: PDFに30枚以上の画像を埋め込む必要はあるの?
テキストだけのPDFはスクロールを止めるアンカーがない。視覚的な区切りがないと、読者は「どこまで読んだか」を失いやすく、離脱率が上がりやすい。今回は画像生成スクリプトをパイプラインに組み込んだので、30枚でも追加コストはほぼゼロだ。
Q: 配信スケジュールを削減したのはなぜ?
毎日配信は運用が破綻すると、コンテンツの質が落ちてコミュニティ全体の信頼が下がる。週1〜2回の高品質な配信の方が、毎日の低品質な配信より長期的なエンゲージメントを維持しやすい。今回はエンゲージメントが高い時間帯にリソースを集中する設計に切り替えた。
Q: JST基準の時刻修正でハマった理由は?
Vercelのサーバーレス環境はデフォルトでUTC動作する。new Date()でローカル時間を取得しようとすると、日本時間との9時間のズレが生じる。今回は配信メッセージの取得処理がUTCで動作し、メッセージが見つからなかった。getJSTNow()を使ってJST基準で計算する方式に変更して解決した。
今日を一言で
嘘を消す1日だった。自分のLPに自分で嘘を書いていたことに、AIに指摘されるまで気づかなかった。「完成した」という感覚は、主観でしかない。
あなたのプロダクトのLP、今の機能と本当に一致していますか?

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