cms について
cms は、プロジェクトに CMS が必要かを判断し、適切な場合に Strapi を設定するドイツ語のスキルです。簡易な編集方法とデータベース型 CMS を比較し、デプロイやアクセス方法も案内します。
主な機能
- 01CMS の必要性を評価
- 02Markdown、Decap CMS、Strapi の選択肢を比較
- 03SQLite と Docker Compose で Strapi を設定
- 04SSH トンネルで管理画面へのアクセスを制限
- 05ウェブサイトのビルドと CMS コンテンツを接続
- 06リソース要件とメディアの永続化を確認
活用シーン
- 01ウェブサイトの編集方法を選定
- 02セルフホストの Strapi を構築
- 03ターミナルを使わない人に編集を許可
- 04サイトのビルド時に CMS コンテンツを取得
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ dischen87/ albatros-skills --skill cmsインストール後、Claude Code で/cmsを入力して読み込まれたか確認します。
詳細
CMS:廊下の掲示板
たとえ
CMSは廊下にある掲示板です。何かを伝えたい人は、壁を作り直さずに紙を貼ります。ウェブサイトはその紙を読み取り、見やすく表示します。
掲示板が役立つのは、いろいろな人が頻繁に紙を貼る場合です。イベント、ニュース、商品、メニューなどが当てはまります。年に2回変わるだけのページには、場所を取るだけの家具になってしまいます。
このたとえの使い方: 質問をしたりコマンドを示したりする前に、最初の返答でこのたとえを伝えてください。相手がすぐに解決策を求めている場合も同じです。
話し方
- 質問するだけにしない: プロジェクトや情報が足りない場合でも、具体的な手順を示すか、仮定を明記してファイルの草案を作成してください(
[仮定:…])。足りない情報は最後に尋ねてください。 - 「あなた」を使い、簡潔にしてください。掲示板が不要なら、率直にそう伝えてください。ソフトウェアを追加するたびに、保守、バックアップ、更新が必要になります。
1. そもそもCMSが必要ですか?
次の3つを尋ねてください。
- コンテンツはどのくらいの頻度で変わりますか?(週1回以上 → 必要な可能性が高い)
- 誰が変更しますか?(ターミナルを使わない人 → 必要な可能性が高い)
- 同じ形式の項目がたくさんありますか?(イベント、商品、記事 → 必要な可能性が高い)
3つの段階から、要件を満たす最もシンプルなものを選んでください。
| 段階 | 内容 | 適している場合 |
|---|---|---|
| A:プロジェクト内のテキスト | コンテンツをリポジトリ内のMarkdownファイルとして置き、AIが変更する | 1人がAIを使ってすべてを管理し、変更頻度が低い |
| B:ログブック上の掲示板 | ブラウザーで使う編集画面(例:Decap CMS)から、リポジトリ内のファイルを変更する | 他の人にもテキストを変更してもらいたいが、データベースは不要 |
| C:独自CMS | Strapiなど、サーバー上で動作するデータベース付きのプログラム | 項目が多く、複数の役割があり、画像管理も必要で、後からアプリも作る予定 |
AまたはBが答えなら、その内容をdocs/plan.mdに書いて、ここで終わりにしてください。それで十分な成果です。段階Cでは専用サーバーが必要なので、パイロット扱いにします。LightではAとBを選べます。
2. Strapiを設定する(段階C)
事前準備
- Strapiにはメモリが必要です。サーバー上で
free -hを実行し、少なくとも約1 GBの空きがあるか確認してください。なければ、先に性能を上げてください(スキルkosten)。 - スナップショットを作成してください。名前は
vor-cms、ツールはsnapshotです(スキルzurueck-auf-gestern)。
設定
- リポジトリの
cms/フォルダーに、SQLiteをデータベースとしてローカルのStrapiプロジェクトを作成します(最新の手順:npx create-strapi@latest cms)。データベースファイルはログブックに含めません(.gitignore)。 compose.yamlにサービスcmsを追加します。コンテナ名はcms、ポートは内部向けのみ(127.0.0.1:1337:1337)とし、データベースとアップロード画像用のボリュームを設定します。シークレット(APP_KEYS、JWT_SECRET、ADMIN_JWT_SECRET、API_TOKEN_SALT)はサーバー上の.envから環境変数として渡し、リポジトリには絶対に含めないでください(スキルsicherheit)。- ログブックとパイプラインを設定します(スキル
git-logbuch、pipeline)。その後、サーバー上でdocker psを実行し、cmsが表示されることを確認します。
掲示板への秘密の通路
編集画面は公開されていません。利用者はトンネルを通ってアクセスします。イメージとしては、利用者のコンピューターから廊下まで続く秘密の通路です。通りから通行人が入り込むことはできません。
ssh -L 1337:localhost:1337 {name}@aufwind.sh
このウィンドウを開いている間、利用者はブラウザーでhttp://localhost:1337/adminを開けます。初回に、そこで利用者自身が管理者アカウントを作成します。パスワードを入力するのはその画面だけです。
コンテンツを接続する
- 利用者と一緒に、コンテンツタイプを1つ作成します(例:「イベント」。タイトル、日付、場所、本文、画像を含めます)。
- ウェブサイトはビルド時に、同じDockerネットワーク内から
http://cms:1337/api/...経由で項目を取得します。読み取り権限のみのAPIトークンを使い、サーバー上のシークレットとして保管します。 - 新しい項目は次回のビルド後に表示されます。すぐに反映したい場合は、Strapiにビルドを起動するWebhookを設定します。本当に必要になるまでは、追加しないでください。
落とし穴
- 管理画面をインターネットに公開すると、攻撃者を招き入れることになります。トンネルを使ってください。
- 更新を忘れないでください。Strapiを定期的に更新し、その前に写真を撮ってください。
- 画像がコンテナ内にしかない場合、ボリュームがなければ次の再起動後に消えてしまいます。
ミッションを確認する
mission_pruefen を webseite-04-cms とともに実行します。確認では、コンテナ cms が実行中かどうかを調べます。その人がステージAまたはBを意識的に選んだ場合は、このミッションをスキップしてよいと伝えてください。それは良い判断であり、抜け漏れではありません。
最後のメッセージ
このステップでの最後のメッセージは、「廊下の掲示板」という画像について、要点をあらためて伝える一文から始めてください。その後に、達成したこと、成果物の保存場所、まだ残っていること、次に行うことを伝えてください。