mcpField
C
cms

cms

github.com/dischen87その他010 回インストール今日更新
リポジトリ

cms について

cms は、プロジェクトに CMS が必要かを判断し、適切な場合に Strapi を設定するドイツ語のスキルです。簡易な編集方法とデータベース型 CMS を比較し、デプロイやアクセス方法も案内します。

主な機能

  1. 01CMS の必要性を評価
  2. 02Markdown、Decap CMS、Strapi の選択肢を比較
  3. 03SQLite と Docker Compose で Strapi を設定
  4. 04SSH トンネルで管理画面へのアクセスを制限
  5. 05ウェブサイトのビルドと CMS コンテンツを接続
  6. 06リソース要件とメディアの永続化を確認

活用シーン

  1. 01ウェブサイトの編集方法を選定
  2. 02セルフホストの Strapi を構築
  3. 03ターミナルを使わない人に編集を許可
  4. 04サイトのビルド時に CMS コンテンツを取得

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dischen87/albatros-skills --skill cms

インストール後、Claude Code で/cmsを入力して読み込まれたか確認します。

詳細

CMS:廊下の掲示板

たとえ

CMSは廊下にある掲示板です。何かを伝えたい人は、壁を作り直さずに紙を貼ります。ウェブサイトはその紙を読み取り、見やすく表示します。

掲示板が役立つのは、いろいろな人が頻繁に紙を貼る場合です。イベント、ニュース、商品、メニューなどが当てはまります。年に2回変わるだけのページには、場所を取るだけの家具になってしまいます。

このたとえの使い方: 質問をしたりコマンドを示したりする前に、最初の返答でこのたとえを伝えてください。相手がすぐに解決策を求めている場合も同じです。

話し方

  • 質問するだけにしない: プロジェクトや情報が足りない場合でも、具体的な手順を示すか、仮定を明記してファイルの草案を作成してください([仮定:…])。足りない情報は最後に尋ねてください。
  • 「あなた」を使い、簡潔にしてください。掲示板が不要なら、率直にそう伝えてください。ソフトウェアを追加するたびに、保守、バックアップ、更新が必要になります。

1. そもそもCMSが必要ですか?

次の3つを尋ねてください。

  1. コンテンツはどのくらいの頻度で変わりますか?(週1回以上 → 必要な可能性が高い)
  2. 誰が変更しますか?(ターミナルを使わない人 → 必要な可能性が高い)
  3. 同じ形式の項目がたくさんありますか?(イベント、商品、記事 → 必要な可能性が高い)

3つの段階から、要件を満たす最もシンプルなものを選んでください。

段階内容適している場合
A:プロジェクト内のテキストコンテンツをリポジトリ内のMarkdownファイルとして置き、AIが変更する1人がAIを使ってすべてを管理し、変更頻度が低い
B:ログブック上の掲示板ブラウザーで使う編集画面(例:Decap CMS)から、リポジトリ内のファイルを変更する他の人にもテキストを変更してもらいたいが、データベースは不要
C:独自CMSStrapiなど、サーバー上で動作するデータベース付きのプログラム項目が多く、複数の役割があり、画像管理も必要で、後からアプリも作る予定

AまたはBが答えなら、その内容をdocs/plan.mdに書いて、ここで終わりにしてください。それで十分な成果です。段階Cでは専用サーバーが必要なので、パイロット扱いにします。LightではAとBを選べます。

2. Strapiを設定する(段階C)

事前準備
  • Strapiにはメモリが必要です。サーバー上でfree -hを実行し、少なくとも約1 GBの空きがあるか確認してください。なければ、先に性能を上げてください(スキルkosten)。
  • スナップショットを作成してください。名前はvor-cms、ツールはsnapshotです(スキルzurueck-auf-gestern)。
設定
  1. リポジトリのcms/フォルダーに、SQLiteをデータベースとしてローカルのStrapiプロジェクトを作成します(最新の手順:npx create-strapi@latest cms)。データベースファイルはログブックに含めません(.gitignore)。
  2. compose.yamlにサービスcmsを追加します。コンテナ名はcms、ポートは内部向けのみ(127.0.0.1:1337:1337)とし、データベースとアップロード画像用のボリュームを設定します。シークレット(APP_KEYS、JWT_SECRET、ADMIN_JWT_SECRET、API_TOKEN_SALT)はサーバー上の.envから環境変数として渡し、リポジトリには絶対に含めないでください(スキルsicherheit)。
  3. ログブックとパイプラインを設定します(スキルgit-logbuch、pipeline)。その後、サーバー上でdocker psを実行し、cmsが表示されることを確認します。
掲示板への秘密の通路

編集画面は公開されていません。利用者はトンネルを通ってアクセスします。イメージとしては、利用者のコンピューターから廊下まで続く秘密の通路です。通りから通行人が入り込むことはできません。

ssh -L 1337:localhost:1337 {name}@aufwind.sh

このウィンドウを開いている間、利用者はブラウザーでhttp://localhost:1337/adminを開けます。初回に、そこで利用者自身が管理者アカウントを作成します。パスワードを入力するのはその画面だけです。

コンテンツを接続する
  1. 利用者と一緒に、コンテンツタイプを1つ作成します(例:「イベント」。タイトル、日付、場所、本文、画像を含めます)。
  2. ウェブサイトはビルド時に、同じDockerネットワーク内からhttp://cms:1337/api/...経由で項目を取得します。読み取り権限のみのAPIトークンを使い、サーバー上のシークレットとして保管します。
  3. 新しい項目は次回のビルド後に表示されます。すぐに反映したい場合は、Strapiにビルドを起動するWebhookを設定します。本当に必要になるまでは、追加しないでください。

落とし穴

  • 管理画面をインターネットに公開すると、攻撃者を招き入れることになります。トンネルを使ってください。
  • 更新を忘れないでください。Strapiを定期的に更新し、その前に写真を撮ってください。
  • 画像がコンテナ内にしかない場合、ボリュームがなければ次の再起動後に消えてしまいます。

ミッションを確認する

mission_pruefen を webseite-04-cms とともに実行します。確認では、コンテナ cms が実行中かどうかを調べます。その人がステージAまたはBを意識的に選んだ場合は、このミッションをスキップしてよいと伝えてください。それは良い判断であり、抜け漏れではありません。

最後のメッセージ

このステップでの最後のメッセージは、「廊下の掲示板」という画像について、要点をあらためて伝える一文から始めてください。その後に、達成したこと、成果物の保存場所、まだ残っていること、次に行うことを伝えてください。

コメント