✂️

美容室向け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

機能はシンプルです。

  1. 店舗情報(住所・強み・サービス)を登録
  2. 投稿コンテキストを入力
  3. 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