# Magic CMS 実装ガイド(AI向け) このガイドは、AIアシスタントが Magic CMS(https://cms.magichtml.dev)の公開データを読み込んで表示するウェブサイトを作るための仕様です。人向けの説明は https://cms.magichtml.dev/docs にあります。 サイト運営者が管理画面の「AIへの指示」をコピーして渡している場合は、その指示に書かれたサイトID・キー・項目を最優先してください。このガイドは、その指示を補う一般的な規則です。 ## 仕組み - サイト運営者は Magic CMS の管理画面で、お知らせや紹介文などのデータを編集して「公開」します。 - ウェブサイトは、ページを開いたときに公開データを読み込んで表示します。ウェブサイトのHTMLを作り直さなくても、公開した内容が反映されます。 - データには2種類あります。「コンテンツ」は1件だけ(例:会社紹介)、「コレクション」は並び順のある複数件(例:お知らせ一覧)です。 - 読み込めるのは、管理画面で「公開」に設定された項目だけです。 ## 必ずやること 1. ページの `
` 直前に、SDKを次のとおり読み込む(URL、integrity、crossorigin を変えない): ```html ``` 2. その後の script で `new MagicCMS('https://cms.magichtml.dev', 'サイトID')` を作り、`get('キー')` で読み込む。サイトIDとキーは管理画面の指示の値を使う。 3. 今のHTMLに書かれている内容は、読み込めなかったときの表示として残し、読み込めたら置き換える。 4. 文字列は `textContent` で入れる。`innerHTML` を使ってよいのは、型が `rich_text` または `document` の項目だけ。 5. 読み込みに失敗したとき(`catch`)は、元の内容を表示したままにする。 ## やってはいけないこと - 管理APIのトークンや管理画面のURLをページに書く。公開ページに必要なのはSDK、サイトID、キーだけです。 - `rich_text`・`document` 以外の値を `innerHTML` で入れる。 - SDKのファイルを自分のサイトにコピーして読み込む、または integrity を外す。 - 公開データの内容を、読み込まずにHTMLへ直接書き写す(管理画面で更新しても反映されなくなります)。読み込めなかったときの表示として残す内容は除きます。 ## 読み込み結果の形 `cms.get(キー)` は次の形のオブジェクトを返します。 ```json { "version": "公開版のID", "name": "リソース名", "kind": "content または collection", "fields": [{ "key": "title", "label": "タイトル", "type": "text" }], "records": [{ "key": "main", "values": { "title": "…" } }], "pagination": { "page": 1, "per_page": 30, "total": 1 } } ``` - コンテンツは `records[0].values` に値が入っています。 - コレクションは `records` が管理画面の並び順の配列です。`page` と `per_page`(1〜100、初期値30)で分割し、`pagination.total` で全件数がわかります。 - `q` を指定するとキーワードで絞り込み、`entry` にレコードのキーを指定するとその1件だけを取り出せます(詳細ページに使います)。 ## 値の型と表示方法 | 型 | 値 | 表示方法 | |---|---|---| | text / email / tel / select / radio / hidden | 文字列 | `textContent` | | textarea | 改行を含む文字列 | `textContent` と `white-space: pre-line` | | rich_text / document | 許可されたタグだけのHTML(サーバーで検証済み) | `innerHTML` | | number | 数値 | 書式を整えて `textContent` | | boolean / checkbox | true / false | 表示の切り替えに使う | | date | `YYYY-MM-DD` | 表示形式を整えて `textContent` | | url | URL文字列 | `a` の `href` | | link | `{ "url": "…" }` | `a` の `href` に `値.url` | | asset | ファイルのURL。`/assets/` で始まる場合は相対パス | `new URL(値, 'https://cms.magichtml.dev')` で絶対URLにして `img` の `src` や `a` の `href` に使う | 値が空の項目は、`null` か、キー自体がないことがあります。どちらも空として扱ってください。 ## 完成形の例(お知らせ一覧) ```html
``` ## サイト運営者に伝えること - 読み込むサイトのURL(例:`https://example.com`)を、管理画面の「サイト設定・接続元」に登録する必要があります。未登録のままだと読み込みが拒否されます。 - データを管理画面で公開していないと読み込めません。保存しただけの下書きは読み込まれません。 ## 完成後の確認 1. ページを開き、公開データの内容が表示されること。 2. 管理画面で内容を変えて公開し、ページを再読み込みすると変更が反映されること。 3. ブラウザの開発者ツールのコンソールにエラーが出ていないこと。 ## うまくいかないとき | 症状 | 原因と直し方 | |---|---| | 読み込みが失敗し、コンソールに CORS のエラーが出る | 読み込むサイトのURLが接続元に未登録。運営者に登録を依頼する | | 404 になる | サイトIDかキーが違う、またはデータが未公開 | | 値が表示されない | その項目が非公開に設定されている、またはキーが違う | | 画像が表示されない | `/assets/` で始まる値を絶対URLにしていない、または素材が非公開 | --- # はじめに Magic CMS Cloud は、静的サイトに「あとから編集できる文章や一覧」を届けるホスト型の CMS です。管理画面でコンテンツやコレクションを作って値を下書きし、明示的に「公開」した内容だけを、静的サイトが公開API または CMS SDK(`@magichtml/cms`)で読み込みます。サーバーやデータベースを自分で用意する必要はありません。 ## できること | 機能 | 内容 | |---|---| | コンテンツ | 会社概要・ページ本文など、1件だけのデータを管理します。 | | コレクション | お知らせ・実績など、並び順を持つ複数件のデータを管理します。検索とページ分けに対応します。 | | 下書きと公開 | 保存は下書きにだけ反映されます。「公開」した時点の内容が公開版になり、過去の公開版へ戻すこともできます。 | | 素材ライブラリ | 画像・PDF・動画・音声などをサイトごとに保管し、公開URLで配信できます。 | | 公開API/SDK | 認証なしで公開版を読み取れます。読み込みを許可するサイトの接続元(Origin)を登録します。 | | データの受け渡し | サイトのデータを `.magichtml.zip` で書き出し、別のサイトや対応アプリケーションに取り込めます。 | フォームの受信は扱いません。お問い合わせフォームなどは、別製品の Magic Form Cloud をご利用ください。 ## 利用の流れ 1. **招待からログインする** Magic CMS Cloud は招待制です。一般公開の新規登録はありません。サービス管理者から届いた招待URLを開き、お名前・メールアドレス・パスワード(英字と数字を含む12文字以上)を設定します。招待URLは1回だけ使え、有効期限は24時間です。以降はメールアドレスとパスワードでログインします。パスワードの再設定はサービス管理者へご連絡ください。 2. **サイトを作成する** ログイン後のサイト一覧(`https://cms.magichtml.dev/app`)で「+ サイトを作成」を押し、サイト名を入力します。サイトは、静的サイト1つ分のデータのまとまりです。 3. **コンテンツ/コレクションを作成する** サイト画面の「+ 新規作成」で種類・名前・識別キー(例:`news`)を決めます。識別キーは公開APIのURLやSDKで使う名前です。詳しくは [コンテンツとコレクション](/docs/resources) をご覧ください。 4. **項目と値を下書き保存する** 「項目・設定」タブで項目(タイトル・本文・日付など)を定義し、「データ」タブで値を入力して保存します。どちらも下書きとして保存され、公開中の内容は変わりません。 5. **公開する** 「保存済みの下書きを公開」を押すと、その時点の下書きが新しい公開版になり、公開APIから取得できるようになります。 6. **接続元(Origin)を登録する** サイト画面の「サイト設定・接続元」に、静的サイトのURL(例:`https://example.com`)を1行に1件登録します。ブラウザから公開APIを読み込むには、この登録が必要です。 7. **サイトから読み込む** 静的サイトに CMS SDK を読み込み、公開版のデータを表示します。 ## 下書きと公開版 | | 下書き | 公開版 | |---|---|---| | 作られるとき | 項目や値を保存したとき | 「保存済みの下書きを公開」を押したとき | | 公開APIでの取得 | できません | できます(公開項目のみ) | | 変更 | 何度でも上書きできます | 変更できません。公開のたびに新しい版が作られます | - 公開後に下書きを編集しても、再度公開するまで静的サイトの表示は変わりません。 - リソース画面の「接続・公開履歴」タブに公開履歴(新しい順に最大20件)が表示されます。過去の版の「この版を公開」を押すと、公開版をその版に切り替えられます(ロールバック)。下書きは変更されません。 - 「公開停止」を押すと公開APIから取得できなくなります。下書きと公開履歴は残ります。 ## 最小構成の例 次の HTML は、識別キー `about` のコンテンツを読み込み、`title` と `body` を表示します。`SITE_ID` はサイトのIDに置き換えてください。サイトIDは、サイト画面の「静的サイトとの接続」にある公開接続先URL(`https://cms.magichtml.dev/api/public/v1/sites/<サイトID>`)や、リソース画面の「接続・公開履歴」タブの接続サンプルで確認できます。 ```html