✂️
美容室向けAI投稿生成システムを個人開発した話 - FastAPI + Next.js + LLM/RAG
美容室の「SNS投稿しんどい」を手助けするサービス

背景
美容室オーナーや美容師さんからよく聞く悩みがあります。
- 「Instagramは毎日更新しないと集客できない」
- 「文章を考えるのに時間がかかる」
- 「AIを使っても美容室らしい表現にならない」
この課題を解決するために、美容室特化のAI投稿生成システムを開発しました。
システム概要

- フロントエンド: Next.js + Tailwind CSS (Vercel)
- バックエンド: FastAPI + Python (Render)
- データベース: PostgreSQL + pgvector
- AI: OpenAI GPT-5-mini
- 認証: JWT (httpOnly Cookie) + Argon2
機能はシンプルです。
- 店舗情報(住所・強み・サービス)を登録
- 投稿コンテキストを入力
- Instagram / LINE / X 向けに最適化された文章を生成
技術的なポイント
1. 美容室特化のプロンプト設計
汎用LLMでは「どこにでもある文章」になりがちなので、店舗の強みやサービスを織り込むプロンプトにしました。
prompt = f"""
あなたは美容室のSNS担当者です。
店舗の強み: {salon.strengths}
提供サービス: {salon.services}
投稿テーマ: {context}
{channel}向けに魅力的な文章を作成してください。
"""
2. RAG + pgvectorで「過去のバズ投稿」「美容特化DB」を活用
バズっている投稿や、インフルエンサーの投稿文のエッセンスをDBに保存してRAGで活用することでCVRを高める投稿文を作ります。※もちろんコピペしないです!!ニュアンスを参考にDBを蓄積します。
美容室向けの技術的な内容やトレンド情報もDB化し、随時蓄積することで美容特化のファインチューニング相当のRAGを実現させます。
CREATE TABLE sns_posts (
id SERIAL PRIMARY KEY,
sns_type VARCHAR(50),
posts TEXT,
hash_tags TEXT[],
engagement_score FLOAT,
embedding vector(1536)
);
3. ユーザー入力の最小化と選択式の採用
ユーザーはアイデアが無くて困っているはずなので入力フォームは最小限にしました。
代わりに選択式を多めにしてサジェストを積極的に行います。

また、投稿ネタも複数生成して提示し、選択してもらうようにすることでUXを向上させたつもりです。
(今はDBが数件しか入ってないのでネタが貧弱ですが、、、拡充すれば効果でます)

最後に投稿用の体裁を整える選択をしてもらう

これで投稿文の生成まで出来ます。気に入らないところは常にユーザー入力を受け付けるようにしてます。どうしてもLLMでは細かいところまでやりきれないので。

4. セキュリティとSaaS前提設計
- パスワード: Argon2でハッシュ化
- 認証: httpOnly Cookie + JWT
- レート制限: 1分間に10リクエスト
将来的なSaaS化を見据え、最初から「安全に複数店舗が使える」構成にしています。
🛠️ 学び
-
RAGは業界特化で効果を発揮する
美容室というドメインを限定させました。 -
pgvectorは現場投入レベルで使える
実装がシンプルで、検索精度・速度も十分。 -
フロントとバックの分離は小規模でも正解
デプロイや拡張がスムーズだった。
まとめ
身近な「めんどくさい」をAIで解決すると、現場に刺さるプロダクトに育てたいです。
また今回の開発を通じて、RAGやpgvectorを実案件に落とし込むリアルな知見が得られました。
同じようにSaaSを考えている方の参考になれば幸いです。
Discussion