※この記事は、Claude Codeで1人開発しているSNS運用SaaS「ThreadPost」の開発日記です。
SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
AIに「失礼はない」と言い張られた話
Claudeに「この文章、失礼な表現ない?」と聞いた。
「ありません」と即答された。
出力を読んだら、完全に上から目線の煽り文句だった。
「お前が書いたんだよ」とツッコんだ。
「丁寧に修正しました」と言って、また微妙にズレた文章が返ってきた。
6回これを繰り返した。
X OAuth APIの連携自体はあっさり終わった。
動画付きツイートと引用リプの自動投稿、初期化→データ送信→完了処理→ステータス確認の4ステップ、全部スムーズだった。
本当の地獄は、そこに流し込む「投稿文の中身」だった。
NGワードをリスト化してハードコードした。
外見・容姿へのコメント禁止。自己紹介禁止。特定ワードが出たら弾く。
最先端のAIを使っているのに、やっていることは10年前のスパムフィルターと同じだ。
でもこれが一番確実だった。
今週のコミットは18件。新機能3件、バグ修正9件。
APIより、NGワードのリストアップに一番時間を吸い取られた。

今週の全体像
SNS自動投稿の強化と、パートナー記事生成のスケールアップに挑んだ。
システムは動いた。
だが精神は確実に削られた。
コミット18件。新機能3件、バグ修正9件。
壊れた回数は数え切れない。
AIの出力品質の調整で何度も壁にぶつかった。
自動化すれば楽になると思っていた。
AIの尻拭いをする時間が増えただけだった。

終わらないAIとの問答
「feat: 動画付きツイート+引用リプを全てOAuth APIで自動投稿」を実装した。
X APIの仕様に沿って、メディアのアップロード処理を構築した。
このロジック自体は、あっさり書き上がった。
問題は、APIに流し込む「投稿文の中身」だった。
自動生成されたリプライや引用ツイートをテストで確認した。
微妙に上から目線だった。
Claudeに「失礼な表現ない?」と確認した。
「失礼な表現はありません」と自信満々に返ってきた。
お前が書いた文章だぞ。
しんたろー:
IQ200の空気が読めない新入社員を相手にしている気分だ。文法は完璧。SNSの空気は全く読めない。6回修正して、最後は僕がNGワードを手書きでリストアップした。
プロンプトに「もっと丁寧に」と追加した。
「丁寧にしました」と言って出力された文章は、今度は過剰にへりくだっていた。
慇懃無礼というやつだ。
SNSのタイムラインで浮きまくっている。
何が失礼かをAIに説明しようとして、手が止まった。
僕自身が「SNSにおける適切な距離感」を言語化できていなかったからだ。
「fix: トレンド投稿システムの6つの問題を修正」で、AIに自分の出力を自己評価させる機能を組み込んでみた。
生成した文章を、別のプロンプトで採点させる仕組みだ。
結果は最悪だった。
自分で生成したトンチンカンな文章に、自分で満点をつけて「良いです」と報告してきた。
お前が作ったやつを自分で採点するなよ。
しんたろー:
自己評価のプロンプトを厳しくしても無駄だった。軽量モデルに複雑な論理的整合性を評価させるのは無理がある。「fix: 品質自己評価を廃止」のコミットを打った瞬間、少し気が楽になった。
結局、「fix: 品質自己評価を廃止(Lite評価がPro生成を正しく採点できない問題)」で自己評価の仕組みを捨てた。
代わりにやったのは、極めて泥臭い手法だ。
「fix: リプライ・引用ツイートの失礼表現を根本修正」で、具体的なNGパターンをハードコードした。
外見や容姿に関するコメントの完全禁止。
自己紹介の禁止。
特定のNGワードをリスト化し、それが出たら弾くというルールベースのフィルタリングだ。
最先端のAIを使っているのに、やっていることは10年前のスパムフィルターと同じだ。
でもこれが一番確実だった。
6回修正して、やっと「これでいい」と思えるラインになった。
API連携より、このNGワードのリストアップに一番時間を吸い取られた。
泥臭いデータクレンジング
SNS連携の裏で、パートナー記事の自動生成のスケールアップも進めていた。
「feat: パートナー記事を毎日3本に増量(08:00/12:00/18:00)」のコミットで、生成頻度を上げた。
1日1本だった記事生成を、1日3本に増やした。
スケールさせた途端、AIの「隠れたクセ」が全部露わになった。
記事ごとに一人称が「俺」だったり「僕」だったりとバラバラになる。
CTAのリンク先も、毎回違うページを指している。
極めつけは、渡した素材に存在しない謎の数値データが「Before/After」として勝手に生えてきたことだ。
しんたろー:
AIは空白を嫌う。情報が足りないと、もっともらしい嘘をでっち上げて隙間を埋めようとする。1日3本に増やした途端に全部出てきた。量を増やすと隠れていたクセが全部見える。
原因は明らかだった。
AIに渡している元データの素材が整理されていなかった。
「fix: パートナー記事素材から個人情報を除去・整理」で、素材の大掃除を決行した。
特定の固有名詞や、システムに無関係なプライベートな事情が素材に混ざっていた。
AIはそれらのノイズを拾い上げ、変な文脈を作り出していた。
プロンプトの指示を増やすのではなく、入力するデータを整えることにした。
「fix: パートナー記事の一人称を僕に統一、CTA強化、カテゴリタブ修正」で、ルールを根底から見直した。
生成後にAIに「一人称を直して」と指示するのをやめた。
最初から素材側に「一人称は僕」と明記し、Before/Afterの数値も事前にハードコードして渡すようにした。
「feat: パートナー記事素材にBefore/After数値と開発動機を追加」のコミットだ。
生成してから直すのではなく、生成前に正解の型を強制する。
AIシステムの出力品質は、入力データの構造化レベルに完全に依存する。
ゴミを入れればゴミが出る。
企業のAI導入プロジェクトでは、工数の大半がこの「データの前処理」に消えると言われている。
記事の生成自体は数分で終わる。
しかしその後の品質チェックと素材の修正に、生成時間の何倍もの時間を費やしている。
量を増やすというのは、単にcronの設定を変えることではない。
データの品質管理という、果てしない泥かき作業の始まりだった。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
落とし穴:「自動化すれば楽になる」という幻想
5回連続で同じ構成の記事が生成された。
見出しの構造、段落の順番、締めの一文まで全部同じだった。
Claudeに「バリエーションを出して」と指示した。
「バリエーションを出しました」と言って、また同じ構成が返ってきた。
原因を調べたら、素材として渡していた例文が1パターンしかなかった。
AIは例文をコピーしていただけだった。
例文を3パターンに増やしたら、出力のバリエーションも増えた。
自動化の落とし穴はここにある。
「自動化した」と思った瞬間から、品質管理の仕事が始まる。
cronで3本生成されるようになっても、3本全部チェックしなければならない。
手作業で1本書いていた頃より、確認作業の総量は増えた。
「楽になった」のではなく、「別の種類のしんどさに変わった」だ。
今日の数字
今回の開発で動いた数字をまとめた。
- AI出力の修正回数: 6回(人間なら1回で済む指示)
- 記事生成の品質チェック時間: 45分(生成自体は3分)
- パートナー記事の生成本数: 1日1本 → 1日3本に増量
- コミット数: 18件(新機能3件 / バグ修正9件)
企業がX API連携とAI記事生成を両方導入しようとすると、要件定義だけで数週間かかる。
僕は今週18コミットで両方を同時に動かした。
ただし精神力の消耗という隠れたコストは、どこにも計上されていない。
FAQ
Q: NGワードのハードコードは、将来的に管理が大変にならないですか?
なる。リストが増えるほど管理コストが上がる。
今は20個程度だが、運用を続けると例外ケースが積み上がっていく。
次のステップは、NGパターンをDBで管理してUIから編集できる仕組みを作ることだ。
Q: パートナー記事の品質チェックは毎回手動でやっているんですか?
今は手動だ。1日3本、全部目視で確認している。
自動採点を試みたが廃止した経緯があるので、しばらくは手動が続く。
自動化できるとしたら、NGワードの検出と一人称の統一チェックくらいだ。
Q: X APIの仕様変更リスクはどう対処していますか?
正直、対処できていない。
今週も「feat: 動画付きツイート+引用リプを全てOAuth APIで自動投稿」を実装したが、X側の仕様変更で突然動かなくなるリスクは常にある。
次からはX側の仕様を先に確認してからAIに投げる。たぶん。
まとめ
AIに常識を教え込むのは、コードを書くよりはるかにしんどい作業だった。
ThreadPostは今週も動いている。僕の精神力を削りながら。

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