AIでサイト更新を簡単にする | ClaudeをCMSとして使う構成の忘備録
Claude.aiとSupabase MCPを組み合わせてCMSを構築する方法。postsテーブルのスキーマ、Skillの設定、よく使うSQLまとめ。

構成概要
Claude.ai
└─ Supabase MCPコネクター(接続済み)
└─ Skill: supabase-web-content
└─ project_id: my_project_id
└─ table: public.posts
└─ storage bucket: post-imagespostsテーブルのスキーマ
カラム | 型 | 備考 |
|---|---|---|
id | uuid | 自動生成 |
slug | text | unique、URLに使う |
title | text | |
date | date | YYYY-MM-DD |
img | text | ファイル名のみ(例:hero.png) |
content | text | Markdown |
published | boolean | デフォルト false |
created_at / updated_at | timestamptz | 自動 |
画像のフルURLは https://my-project-id.supabase.co/storage/v1/object/public/post-images/<filename> で構成される。サイト側で postImageUrl(filename) が展開する。
Skillに書いたこと
- テーブルスキーマと各カラムの説明
- 画像はファイル名のみ保存するルール
published = trueにする前は必ず確認するルール- slugはタイトルから自動生成(未指定時)
- updateは必ず
updated_at = now()を含める - 操作には
execute_sqlを使う
Skillファイルは .skill 形式でパッケージ化してインストール済み。
よく使う操作メモ
一覧取得
SELECT id, slug, title, date, published FROM posts ORDER BY date DESC;作成
INSERT INTO posts (slug, title, date, img, content, published)
VALUES ('my-slug', 'タイトル', '2026-05-19', null, '# 本文', false)
RETURNING *;公開
UPDATE posts SET published = true, updated_at = now() WHERE slug = 'my-slug';削除(要確認)
DELETE FROM posts WHERE slug = 'my-slug';再現手順(次回セットアップ時)
- Supabaseでプロジェクト作成、postsテーブルとストレージバケット(post-images)を用意する
- Claude.aiのコネクター設定からSupabase MCPを接続する
- Skillファイルを作成し、スキーマ・ルール・project_idを記載する
.skill形式にパッケージングしてインストールする- 動作確認:「記事一覧を見せて」と話しかけてみる

Takaaki Yoneda
環境保全、グラフィックデザイン、マーケティングなどプログラミング以外にも幅広い興味を持ったソフトウェアエンジニアです。 最近の趣味は、ボードゲームと登山