🍊mikanBox 利用ヘルプ v1.0
コンセプト・特長
🍊mikanBoxは、「AI時代のパーツ組み立て型・超軽量CMS」です。数ページから数十ページ規模のWebサイトを、最速かつ安全に構築・運用するために設計されました。
- ファイルベース(JSON) — データベース不要。PHPの動くサーバーに置くだけ
- モードレスUI — ページ遷移なし、1画面で全作業完結。軽快な操作感
- Markdown対応 — コンテンツを簡単に編集・再利用
- コンポーネント構造 — 再利用・並び替えが可能
- コンポーネント単位のCSS管理 — 小さい範囲でCSSが書けて、干渉を気にしなくてよい
- AI生成コードを直接配置可能 — 手作業でのデザイン不要
- 静的(SSG)も、動的も、それらの混在も — レスポンスの速い静的サイトにもできる
- DB Less DB — ページにデータを埋め込んでAPIで出力し、ヘッドレスCMSにも
- MCPでAI対応 — MCPでAIとつながることで、記事の作成などを自動運用できる
- ポッドキャスト — RSSを自動生成して、ポッドキャスト配信も
設計方針
規模を限定する
🍊mikanBoxは数千ページ規模のサイトは想定していません。数ページのサイトだけど情報の更新はしたい、そんなサイトにDBを使った重いシステムを導入する必要はないのでは。あえてデータベースを使わないことで、以下の手軽さを実現しています。
- 設置が簡単
- 構造がシンプルで覚えやすい
- バックアップ・サーバー移設が簡単
柔軟な設計
ページやコンポーネントがCSSと結びついているのでわかりやすく、また、干渉を気にしなくてよい設計になっています。コンポーネントの使い方次第で、自由で柔軟なサイト設計が行えます。
- ページやコンポーネントがCSSを持てる
- CSSをスコープ化して、干渉を防止
- コンポーネントの入れ子が可能
- 画像などのメディアファイルのパスも自動で解決
- ページにデータを簡単に埋め込める
- 他ページ、他サイトのデータを読み込んで利用できる
- データの持ち方が多様で、工夫次第で様々使い方ができる
AIフレンドリー
- AIで生成したページをそのまま貼り込んで使いやすい。凝ったデザインも、少ない作業でそのまま公開
- コードがコンパクトでシンプル。AIが理解しやすいので、専用のデータ構造にあわせて、ページ制作、デザインしてもらうことも簡単
- GitHubなど外部のMarkdownファイルをソースにできる
{{EXT_MD:url}}タグを活用することで、管理画面を開かなくても「AIエージェントに指示してレポジトリを更新してもらう」だけでWebサイトが更新される運用スタイルも可能 - コードが小さく、AIが理解しやすいので、機能追加はプラグインではなく、AIでソースを書き換える
- MCPに対応し、AIとの連動も簡単。記事作成の自動化もできる
セキュリティをシンプルに
静的サイトにも対応し、攻撃面を増やさない設計です。
- データベースなし(SQL攻撃面なし)
- コードベースが小さい
- プラグインなど複雑な依存関係なし
- 大規模CMS特有の攻撃対象になりにくい
2つの運用スタイル
🍊mikanBoxでは、異なる寿命のページを同じ仕組みで扱えます。
長く使うコンテンツ(例:ブログ、サービス案内)
- Markdownで簡単に記述
- 画像もパスを気にせず、ファイル名の指定だけ
- コンテンツを再利用しやすい構造
- 継続的な更新に向いている
短期ページ(例:LP、イベントページ)
- AI生成HTML/CSS/JSをそのまま配置
- AIで作れば、手作業のデザインは不要
- すぐ公開できる
想定用途
数千ページの運用は想定していません。
- 個人サイト
- 小規模店舗サイト
- 小規模法人サイト
- 数十ページ規模のWebサイト
切り捨てていること
- 検索機能
- ページャー
- ユーザー管理
- メールフォーム(Googleフォームで対応したほうがよいのでは)
初期設定・配布について
🍊mikanBoxは、PHPが動作するサーバーにアップロードするだけですぐに利用可能です。
インストール
index.php と同じディレクトリに mikanBox フォルダをアップロードします。このフォルダ名は変更可能です。変更したほうが、管理画面の場所( admin.php の場所)が推測されにくくなるため、セキュリティの観点から推奨されます。変更した場合は、 index.php の冒頭部分の $core_dir を修正してください。以下の説明では mikanBox ディレクトリとして説明します。
初回パスワード設定
導入後、最初に admin.php にアクセスした人が管理用パスワードを設定します。このとき、サーバー上の mikanBox/data/settings.json にパスワードのハッシュ値(暗号化されたデータ)が保存されます。
自作したデザインやコンテンツを含めて誰かに配布(納品)する場合は、 mikanBox/data/settings.json ファイル内の "password_hash" の値を空にしてください。これにより、受け取った人が自分の環境で最初にアクセスした際に、新しく独自のパスワードを設定できるようになります。
admin.php 以外のファイル( data フォルダ内のJSONファイルなど)は、ブラウザから直接アクセスできないようになっています( .htaccess 等による制限)。
全体像
🍊mikanBoxは、以下の4つのパートでサイトを構築・管理します。
ページ (Pages)
サイトの「実体」となるページ自体を管理します。URL(ID)を決め、タイトルやSEO情報を設定し、本文(Markdown/HTML)を執筆します。
サイト (Site)
管理メモ、静的サイト生成(SSG)、サイト共通設定、言語、パスワード変更、バックアップ、AI用プロンプトなどサイト運営に関わる設定・管理機能をまとめています。
デザイン (Design)
ページ全体のデザインを設定する ページ と、共通部品を作る パーツ の2種類のコンポーネントがあります。ヘッダーやフッター、ナビゲーションなどの共通で使うものは パーツ として作成しておくことで、どこからでも利用できます。デザイン要素(コンポーネント)の管理が主な役割です。
メディア (Media)
画像、動画、音声などのファイルを管理します。アップロード、一覧確認、リサイズ、および貼り付け用のファイル名コピーを素早く行えます。
共通
プレビューサイトのトップページを開きます(新規タブ)。
ログアウトシステムからログアウトします。
(各パートの見出しの横の)ヘルプヘルプページを開きます(新規タブ)。
ページ
作成済みのページを一覧で確認・管理する画面です。
add新規作成新しいページを作成します。クリックするとページ編集エリアが開きます。
ページ一覧
編集・プレビュー- edit編集 — クリックすると、そのページの編集画面へ移動します。
- open_in_new — クリックすると、公開設定に応じたURLでページを新しいタブで開きます。
ページごとの公開状態を切り替えるドロップダウンメニューです。変更すると即座に保存されます。
- 下書き — 非公開。管理者以外はアクセスできません。
- 公開(動的) — PHPで動的に表示します。
- 公開(HTML) — サイト画面の静的サイト生成 (SSG)の設定に従ったディレクトリ、ファイル設定で静的HTMLファイルとして公開します。
- DB — ページとしては非公開になり、
{{DATAROW}}のデータが、サイトURL/api/ページIDのアドレスのAPIとして読み取れるようになります。
公開(HTML)のページをそれ以外の公開設定に設定すると、静的HTMLファイルは削除されます。
IDページのURLになる識別子(スラッグ)です。例として news と設定すると、URLは /news の形になります。
ページのタイトルです。クリックすると編集画面へ移動します。
更新ページ作成時に設定されます。日時は変更可能です。
表示順ナビゲーションなどの一覧での表示優先順位です。リスト表示するNAV_LINKSNAV_CARDSのなかで、またこのページ一覧のなかで、数字が小さいほど前(上)に表示されます。0より小さいものは、リスト表示されません。
ページに設定されたカテゴリが表示されます。{{NAV_LINKS:カテゴリ}} などで絞り込みに利用されます。
静的サイトビルドボタン
auto_awesome静的サイトをビルドするページ一覧の下部にあります。公開設定が「公開(HTML)」のページをすべて静的HTMLファイルとして書き出します。「公開(HTML)」のページを編集した際には、他のページとの矛盾が生じる場合もあるので、ここでサイト全体のビルドをしておくことをおすすめします。
ページ編集
ページの内容や設定を細かく編集する画面です。「新規作成」ボタンやページのタイトル・編集ボタンをクリックすると表示されます。
更新日ページ作成時に設定されます。日時は変更可能です。
タイトルページのタイトルです。必須項目です。コンポーネント内では {{TITLE}} や {{FULL_TITLE}}(「ページタイトル - サイト名」の形式)で出力できます。
ページの公開状態をラジオボタンで選択します。
- 下書き — 非公開。管理者以外はアクセスできません。
- 公開(動的) — PHPで動的に表示します。
- 公開(HTML) — サイト画面の静的サイト生成 (SSG)の設定に従ったディレクトリ、ファイル設定で静的HTMLファイルとして公開します。
- DB — ページとしては非公開になり、
{{DATAROW}}のデータが、サイトURL/api/ページIDのアドレスのAPIとして読み取れるようになります。
公開(HTML)のページをそれ以外の公開設定に設定すると、静的HTMLファイルは削除されます。
IDURLになるページの識別記号(スラッグ)です。半角英数字とハイフンが使用できます。ページのURLは サイトのURL/ID の形になります。既存のIDと同じものを指定して保存すると、その内容で上書きされますのでご注意ください。indexページのIDは変更できません。ID自体に「/」を使用することもできます。静的サイトの際、IDに「/」が含まれていると、その部分がディレクトリとして扱われます。また、動的サイトの場合も擬似的にディレクトリ構造が作られます。例えば、news/2024 のようなIDを設定すると、サイトのURL/news/2024 のようなURLになります。
このページのレイアウトに使用するページコンポーネントを選択します。「デザイン」メニューで「ページコンポーネントとして使用する」にチェックを入れたコンポーネントが選択肢として表示されます。
カテゴリ(カンマ区切り)ページを分類するカテゴリをカンマ区切りで自由に入力します。入力欄の下に現在使用中のカテゴリが表示されます。カテゴリの一覧ページは自動では作成されません。必要な場合は、ページを作成し、{{NAV_LINKS:カテゴリ}} や {{NAV_CARDS:カテゴリ:コンポーネントID}} を配置してください。
ナビゲーションなどでの並び順を指定できます。数字の小さい順に並びます。0より小さいものは、リスト表示されません。
サムネール・OGP画像SNSでシェアされた際や、カード一覧などで表示される画像ファイル名(例: ogp.jpg)を指定します。meta タグの og:image として出力されます。コンポーネント内では {{OGP_IMAGE}} で利用できます。
ページの検索用キーワード(meta keywords)をカンマ区切りで入力します。コンポーネント内では {{KEYWORDS}} で出力されます。
ページの概要となる説明文を設定します。 {{DESCRIPTION}} で出力され、検索結果のタイトル下に表示される紹介文として利用されます。
ページのメインコンテンツを Markdown 記法やHTMLで記述します。MarkdownとHTMLは混在できます。AIが生成した複雑なHTMLをそのまま貼り付けても正常に動作します。利用できるMarkdown記法と独自タグは編集画面下部のガイドを参照してください。詳しくは Markdown・コンポーネント(タグ) の項目を参照してください。
Raw HTML(Markdownを無効化)本文エリアの上部にあるチェックボックスです。チェックを入れると、本文全体をMarkdown処理せずそのままHTMLとして出力します。AIが生成した複雑なHTMLレイアウトで、通常のHTML+Markdown混在モードではレイアウトが崩れる場合の最終手段として使用します。通常はHTML+Markdown混在(空白行で区切る)で対応できます。
ページ専用CSSこのページだけに適用したいスタイルを記述します。自動的にスコープ化されるため、他のページや本文以外の部分へ影響を与えません。CSSのなかでも独自のタグが使えます。
save保存ページの内容をすべて保存します。
open_in_newプレビュー (編集時のみ表示)現在の公開設定に応じたURLでページを新しいタブで開き、表示を確認します。
arrow_back一覧へ戻るページ一覧へ戻ります。未保存の内容は失われますのでご注意ください。
delete削除 (indexページ以外に表示)ページを完全に削除します。削除後は元に戻せません。
編集画面下部には、Markdown記法の簡易ガイドと、利用可能なタグ一覧(タグガイド)が折りたたまれた状態で表示されます。クリックで展開できます。
サイト
サイト運営に関わる設定・管理機能をまとめたメニューです。各項目はアコーディオン形式で折りたたまれています(管理メモを除く)。
管理メモ
サイト上部に常時表示される、管理者だけが見られるメモ欄です。引き継ぎ事項や作業メモなどを自由に入力できます。
save保存メモの内容を保存します。
バージョン情報
現在インストールされているmikanBoxのバージョンと、GitHubで公開されている最新バージョンを表示します。最新バージョンの取得は自動で行われ、6時間ごとにキャッシュされます。アップデートがある場合は「アップデートあり」と表示されます。
静的サイト生成 (SSG)
🍊mikanBoxは、PHPで動的にページを表示するだけでなく、サイト全体を「静的なHTMLファイル」として書き出す機能(SSG: Static Site Generation)を備えていて、混在することも可能です。
SSGのメリット
- 超高速な表示 — サーバーがPHPを実行する必要がないため、高速に表示されます。
- 高セキュリティ — 公開領域にPHPファイルやデータ(JSON)を置かない構成にできるため、改ざんリスクを極限まで減らせます。
静的サイトをビルドする際のベースURLを設定します。例: https://example.com/ や https://yoshihiko.com/mikanbox/help_ja.html` などのフルURL出力に使用されます。
生成するHTMLファイルの形式を選択します。
- ディレクトリ型 (folder/index.html):
ページID/index.htmlの形で書き出します。URLは/ページID/となります。 - ファイル名型 (filename.html):
ページID.htmlの形で書き出します。URLは/ページID.htmlとなります。
ディレクトリ型は、動的公開と同じURLで公開できます。切り替えてもリンク切れが起こりません。ファイル名型は、URLに拡張子が含まれ、シンプルなファイル構成で公開できます。
auto_awesome保存して静的サイトをビルド設定を保存した上で、公開設定が「公開(HTML)」のすべてのページを静的HTMLファイルとして書き出します。
CSVインポート
CSVデータをサイト内で利用できるデータベースの形(DATAROWブロック)に変換するツールです。
ファイルを選択CSVファイルを選択します。エンコーディング(UTF-8 / Shift-JIS)は自動判定します。
content_copy変換してコピー1行目をフィールド名として読み込み、各行を {{DATAROW:連番}} ブロックに変換してクリップボードにコピーします。コピー後、ページ編集の本文に貼り付けて保存してください。
使い方のポイント
- フィールド名(1行目)は英数字で記述してください。
- 価格の位取りカンマ(例:
1,000)はExcelが自動的にクォートするため正しく読み込めます。 - データ専用ページは下書きにしておくことを推奨します。訪問者には見えませんが、
{{POST_MD:pageID#rowID:FIELD}}や{{NAV_CARDS}}からは参照できます。 - 公開設定をDBにすると、ページとしては非公開になり、
{{DATAROW}}のデータが、サイトURL/api/ページIDのアドレスのAPIとして読み取れるようになります。
サイト共通設定
サイト名サイトの名前を設定します。 {{SITE_NAME}} で出力できます。 {{FULL_TITLE}} は、「ページタイトル - サイト名」という形で表示され、ブックマークや検索時のページタイトルなどにも利用されます。
サイトの概要を設定します。ページごとの概要が設定されていない場合は、検索時のページ概要として、この設定が利用されます。{{SITE_DESCRIPTION}} で出力されます。
サイトのキーワードを設定します。ページごとのキーワードが設定されていない場合は、検索に使われるキーワードとして、この設定が利用されます。
共通OGP画像サイト共通のOGP画像を設定します。ページごとのOGP画像が設定されていない場合は、SNSでシェアされる際に使われるOGP画像として、この設定が利用されます。{{SITE_OGP_IMAGE}} で出力されます。推奨サイズは 1200 × 630 px です。
「サイト共通設定」の内容を保存します。
MCP APIキー
ClaudeなどのAIとMCPで連携するためのAPIキーです。
APIキーAIの設定ファイルに書き込んで、AIから利用できるようにします。
auto_awesomeAPIキーを再生成APIキーを再生成します。
content_copyコピー表示しているAPIキーをコピーします。Claude Codeの場合は、Claude Desktopの設定に貼り付けてください。詳しくは、AIにお聞きください。
言語
管理画面の表示言語を設定します。
以下の3つから選択できます。
- ブラウザの設定に合わせる — お使いのブラウザの言語設定に合わせて自動的に日本語または英語に切り替わります。
- 日本語
- English
言語設定を保存します。
パスワードの変更
管理画面のログインパスワードを変更します。
現在のパスワード現在ログインに使用しているパスワードを入力します。
新しいパスワード新しいパスワードを入力します(4文字以上)。
save保存パスワードを変更して保存します。
パスワードを忘れた場合: FTPやファイルマネージャー等でサーバー上の mikanBox/data/settings.json ファイルを編集し、 password_hash の値を空にしてください。次回アクセス時に初回パスワード設定画面が表示されます。
バックアップ
サイトの全データ(JSON)と、アップロードしたメディアファイル(jpg, svgなど)をZIPでダウンロードします。定期的な保存を推奨します。
downloadデータ一括ダウンロード (JSON)記事、デザイン、設定などのすべてのテキストデータをJSONファイルとして書き出してダウンロードします。
downloadメディア一括ダウンロード (files)アップロード済みの画像などのファイルを一つのZIPにまとめてダウンロードします。
AI用プロンプト
AIにページ制作を依頼する際に、🍊mikanBoxの仕様を正しく理解させるためのベースとなる「命令文」を保存・コピーできます。必要に応じて編集して保存・コピーしてください。
AI用プロンプトAIへの命令文を入力・編集します。🍊mikanBoxの構造・タグ仕様などをAIに伝える基本プロンプトが自動入力されています。追記して使用することもできます。
saveプロンプトを保存「AI用プロンプト」をサイト内で保存します。
content_copyプロンプトをコピー「AI用プロンプト」をクリップボードにコピーして、AIチャットなどに貼り付けて使用します。
デザイン
ページ全体のデザインを作る ページ と、共通部品を作る パーツ のコンポーネントを管理します。
add新規作成新しいコンポーネントを作成します。クリックするとデザイン編集エリアが開きます。
コンポーネント一覧
編集 edit編集 ボタンをクリックすると、そのコンポーネントの編集画面へ移動します。 コンポーネントIDコンポーネントの識別記号です。クリックしても編集画面へ移動します。「_」で始まるIDは、初期設定で用意されているシステムコンポーネントです。これらを編集して使用することもできます。
'
コンポーネントの種類を示します。
- ページ — 「ページコンポーネントとして使用する」にチェックが入ったコンポーネントです。ページ編集の「デザインコンポーネント」で選択できます。
- パーツ — ページや他のコンポーネントに埋め込む部品です。
コンポーネントを埋め込むためのタグ(例: {{COMPONENT:header}})が表示されます。クリックするとクリップボードにコピーされます。ページの本文や他のコンポーネントのHTMLに貼り付けて利用します。
デザイン編集
コンポーネントの構造(HTML・CSS)と設定を定義する画面です。
コンポーネントIDコンポーネントの識別記号です。必須項目です。半角英数字とアンダースコアが使用できます。テンプレート内で {{COMPONENT:ID}} として呼び出せます。
コンポーネントの内容をHTMLで記述します。ここで使える独自のタグは、編集画面下部のガイドを参照してください。他のコンポーネントを入れ子にして読み込むこともできます。
CSS (この部品専用のスタイル)このコンポーネントのなかだけに適用したいスタイルを記述します。CSSのなかでも独自のタグが使えます。
CSSをスコープ化する (他の部品への影響を防止)チェックボックスです。通常はONを推奨します。CSSで記述した内容が、他の部分に影響することを防ぎます。サイト全体に適用したいグローバルなリセットCSSや <head> 用の部品を作る場合のみチェックをはずします。
ページ全体をレイアウトするコンポーネントにする場合にチェックします。チェックするとデザイン一覧で ページ として表示され、ページ編集画面の「デザインコンポーネント」で選択できるようになります。チェックしない場合は パーツ コンポーネントとして、ページや他のコンポーネントに埋め込んで使うことができます。
ページコンポーネント(Wrapper)では以下のタグが追加で利用できます:
{{CONTENT}}— ページの本文が出力される位置に挿入します。— ページとコンポーネントのCSSを集約して挿入します。このタグがないとスタイルが適用されません。
コンポーネントを保存します。
arrow_back一覧へ戻る「デザイン」管理画面に戻ります。未保存の内容は失われますのでご注意ください。
delete削除コンポーネントを完全に削除します。削除後は元に戻せません。
編集画面下部には、利用可能なタグ一覧(タグガイド)が折りたたまれた状態で表示されます。クリックで展開できます。
メディア
画像・音声・動画ファイルのアップロードと管理を行う画面です。
アップロードエリア
ファイル選択「ファイルを選択」をクリックしてアップロードするファイルを選択します。このウィンドウにファイルをドラッグ&ドロップすると、ドロップした段階でアップロードできます。
uploadアップロード選択したファイルをアップロードします。
対応形式・制限jpg, png, gif, webp, svg, mp3, m4a, mp4 に対応しています。最大ファイルサイズはサーバーの設定に依存します。
アップロードされたファイルは media ディレクトリに保存されます。Markdown や HTML での参照方法:
- Markdown:
または{{IMAGE:ファイル名}}({{AUDIO:ファイル名}}、{{VIDEO:ファイル名}}) - HTML:
<img src="ファイル名">、<img src="images/ファイル名">、<img src="media/ファイル名">のいずれでも表示できます。
メディア一覧
プレビュー画像はサムネイルが表示されます。動画・音声ファイルはアイコンが表示されます。
ファイル名(クリックでコピー)ファイル名をクリックするとクリップボードにコピーされます。ページの本文へ貼り付けて使用します。
形式・サイズ表示ファイルの形式(例: JPG)と、画像の場合は解像度(幅×高さ)が表示されます。
delete削除メディアファイルを削除します。削除後は元に戻せません。
リサイズ...「リサイズ...」をクリックすると展開します。幅(W)または高さ(H)のどちらか一方を入力して save を押すと、縦横比を維持したままリサイズされます(jpg, png, gif, webp のみ対応)。
Markdown
ページの本文では、標準的なMarkdown記法を使うことができます。MarkdownとHTMLは混在できます。本文は基本的にMarkdownとして扱われますが、HTMLタグから始まる行はHTMLコードとして扱われます。HTMLタグの前後には改行しなくても構いません。改行しても表示に違いはありません。
Markdown記法については、ページ編集画面の下部に使用できる記法についてのガイドがあります。
MarkdownとHTML
MarkdownとHTMLは混在できます。以下のHTMLタグから始まる行はHTMLコードとして扱われます。
html head body div section article aside header footer main nav form p h1〜h6 ul ol li dl dt dd table thead tbody tr th td blockquote pre figure figcaption details summary dialog a span button select video audio script style link meta <!-- (コメント) など
開始タグ・終了タグ(</div>・</a> など)どちらも対象。
MarkdownとHTMLの混在で対応できない複雑なレイアウトの場合は、ページ編集画面の 「Raw HTML」チェックボックス をONにすると、Markdown処理を完全にオフにしてHTMLをそのまま出力できます。
段落
前後に空行をいれることで、HTMLタグやMarkdown記法の記号がなければ、段落として扱われ <p>内容</p> のようにタグで囲まれます。段落のなかで改行すると <br> タグが挿入されます(HTMLタグの直前・直後には挿入されません)。また、段落のなかで、HTMLタグを挿入することも可能です。
見出し
行頭で ## 見出し のように使うと見出しとして扱われ、 <h2>見出し</h2> の形で出力されます。通常、# で示される <h1> タグはページタイトルに使用されるので、本文内では、 ## 見出し ### 小見出し を利用するのが良いでしょう。# 記号の後にスペースを入れる必要があります。
Markdown:## 見出し
HTML:<h2>見出し</h2>
その他のブロック要素
リスト、番号付きリスト、引用、水平線、インラインコードについては、行頭で使用することで、それぞれのHTMLに置き換えられます。
Markdown:- リスト項目
HTML:<ul><li>リスト項目</li></ul>
Markdown:* リスト項目
HTML:<ul><li>リスト項目</li></ul>
番号付きリスト 1.:<ol><li>
Markdown:1. 番号付きリスト項目
HTML:<ol><li>番号付きリスト項目</li></ol>
リスト項目は-または*どちらも使えます。これらは、記号の後にスペースを入れる必要があります。
Markdown:> 引用
HTML:<blockquote>引用</blockquote>
記号の後にスペースはあってもなくても構いません。
Markdown:---
HTML:<hr>
文中で使用できるインライン要素
Markdown:**太字**
HTML:<strong>太字</strong>
Markdown:*斜体*
HTML:<em>斜体</em>
リンク
リンクは [リンクしたい文字](URL) の形で指定できます。 <a href="URL">リンクしたい文字</a> の形で出力されます。
Markdown:[リンクしたい文字](URL)
HTML:<a href="URL">リンクしたい文字</a>
メディアの利用
画像を表示する際には、  でページに埋め込むことができます。[ ] のなかには、画像の説明を入れ、 <img src="画像のURL" alt="画像の説明"> の形で出力されます。メディア管理でアップロードした画像は、ファイル名を指定するだけで利用できます。また、独自タグの {{IMAGE:ファイル名}} の形でも同様に利用できます。メディア管理で管理している音声や映像ファイルは、 {{AUDIO:ファイル名}} {{VIDEO:ファイル名}} で利用することができます。
Markdown:
HTML:<img src="画像のURL" alt="画像の説明">
独自タグ:{{IMAGE:ファイル名}}
HTML:<img src="画像のURL">
独自タグ:{{AUDIO:ファイル名}}
HTML:<audio src="音声のURL" controls></audio>
独自タグ:{{VIDEO:ファイル名}}
HTML:<video src="映像のURL" controls></video>
テーブルの表示
テーブルは、セルを | で区切って表示します。 |---| の行を入れることがテーブルとして必須です。1行目が見出し行 <th> 、3行目以降がデータ行 <td> となります。|:---|:---:|---:| のようにコロンを入れることで、表示位置を指定できます。
| 指定なし | 左寄せ | 中央 | 右寄せ |
|---|:---|:---:|---:|
| A | B | C | D |
| 指定なし | 左寄せ | 中央 | 右寄せ |
|---|---|---|---|
| A | B | C | D |
Markdownの行末に {.className} {#idName} を追加すると、その行のブロック要素にCSSの class や id を指定できます。
重要: {.className} は対象テキストと同じ行の末尾に書いてください。別の行に書いても適用されません。複数行にわたる段落では、最後の行の末尾に書くと段落全体にクラスが適用されます。
Markdown:## 見出し{.highlight}
HTML:<h2 class="highlight">見出し</h2>
Markdown:段落テキスト{.note #intro}
HTML:<p class="note" id="intro">段落テキスト</p>
インラインのテキストに対しては [text]{.className} の記法でクラス・IDを付与した <span> を出力できます。複数クラスやIDとの組み合わせも可能です。
Markdown:[赤いテキスト]{.red}
HTML:<span class="red">赤いテキスト</span>
Markdown:[**太字**で強調]{.highlight .bold}
HTML:<span class="highlight bold"><strong>太字</strong>で強調</span>
Markdown:[アンカー]{#my-id .note}
HTML:<span id="my-id" class="note">アンカー</span>
これらの記法は🍊mikanBox独自のMarkdown拡張です。他のMarkdownレンダラー(GitHub等)では動作しません。
コンポーネント(独自タグ)
タグの利用
ページの本文・CSS、コンポーネントの本文・CSSのなかには、 {{TITLE}} などの用意されたタグを使用できます。利用可能なタグは、ページ編集画面・デザイン編集画面の下部にガイドがあります。
コンポーネントの利用
デザイン管理で作成したコンポーネントは、 {{COMPONENT:ID}} の形で、ページや他のコンポーネントに埋め込むことができます。
画像・音声・映像
画像・音声・映像は、 {{IMAGE:ファイル名}} {{AUDIO:ファイル名}} {{VIDEO:ファイル名}} の形で埋め込むことができます。
{{IMAGE:ファイル名}} → <img src="media/ファイル名">
{{AUDIO:ファイル名}} → <audio src="media/ファイル名" controls></audio>
{{VIDEO:ファイル名}} → <video src="media/ファイル名" controls></video>
ナビゲーション
リンクの一覧は {{NAV_LINKS:カテゴリ}} はリスト形式 <li> で出力されます。
画像付きのカードなどで出力したい場合は、 {{NAV_CARDS:カテゴリ:コンポーネントID}} で出力できます。カードのデザインは、コンポーネントで定義できます。コンポーネントIDを省略すると、標準的なデザイン(_nav_cardコンポーネント)で出力されます。
リストやカードの順番はページの「表示順」で指定できます。表示順が0より小さい場合は、表示されません。
どちらも、カテゴリを「all」にすると全ページのリスト、未設定にするとカテゴリのないページのリストが出力されます。ページのカテゴリは複数設定できるので、カテゴリを適切に設定することで、多様な形でのナビゲーションを設定することができます。
他のページの埋め込み
他のページの内容は、 {{POST_MD:ID}} の形で埋め込むことができます。AIで作成した複雑なページのなかの一部だけ(お知らせなど)を、簡単に編集できるようにするには、Markdownで作ったページを埋め込むようにすると便利です。埋め込まれる側のページは「下書き」にしておくことで、単独では見えない設定にすることもできます。
他のサイトのMarkdown文書の埋め込み
GitHubなど、他のサイトに設置したMarkdown文書を {{EXT_MD:url}} の形で埋め込むことができます。GitHub上で直接編集できるのはもちろん、AIエージェントにGitHub上のファイルを書き換えてもらうだけでサイトを更新できる「AIフレンドリー」な運用が可能です。
ページコンポーネント
ページ全体をレイアウトするコンポーネントは、本文を出力する {{CONTENT}} と、CSSを出力する {{`HEAD_CSS`}} を挿入してください。 がないと、スタイルが適用されません。基本的な構成は、初期コンポーネントの _layout を参照してください。
利用可能なタグ一覧
| タグ | 説明 |
|---|---|
{{ TITLE }} | ページタイトル |
{{ FULL_TITLE }} | ページタイトル - サイト名 |
{{ UPDATE_DATE }} | ページ更新日(YYYY-MM-DD) |
{{ UPDATE_DATE:JP }} | ページ更新日(YYYY年MM月DD日) |
{{ UPDATE_DATE:SLASH }} | ページ更新日(YYYY/MM/DD) |
{{ IS_NEW:N }} | N日以内の更新なら「new」、それ以外は空欄 |
{{ DESCRIPTION }} | ページ概要(空欄ならサイト共通説明) |
{{ KEYWORDS }} | ページのキーワード |
{{ OGP_IMAGE }} | ページサムネール・OGP画像URL |
{{ PAGE_URL }} | ページURL |
{{ SITE_URL }} | サイトURL |
{{ SITE_NAME }} | サイトのタイトル |
{{ SITE_DESCRIPTION }} | サイトの共通説明 |
{{ SITE_OGP_IMAGE }} | サイトの共通OGP画像URL |
{{ COMPONENT:ID }} | コンポーネントを埋め込む |
{{ IMAGE:ファイル名 }} | 静止画を表示 |
{{ AUDIO:ファイル名 }} | 音声モジュールを挿入 |
{{ VIDEO:ファイル名 }} | 動画を表示 |
{{ NAV_LINKS:カテゴリ }} | 指定したカテゴリのページをリンクとして表示 |
{{ NAV_LINKS:all }} | すべてのページをリンクとして表示 |
{{ NAV_LINKS:未設定 }} | カテゴリのないページをリンクとして表示 |
{{ NAV_CARDS:カテゴリ:コンポーネントID(省略可)}} | 指定したカテゴリのページをカード形式で表示 |
{{ NAV_CARDS:all:コンポーネントID(省略可)}} | すべてのページをカード形式で表示 |
{{ NAV_CARDS:未設定:コンポーネントID(省略可)}} | カテゴリのないページをカード形式で表示 |
{{ POST_MD:ID }} | 指定したIDのページをMarkdownとして埋め込む |
{{ EXT_MD:url }} | 指定したURLのMarkdownを埋め込む |
{{DATA:key}}値{{/DATA}} | データを定義(表示)。key(大文字小文字を区別しない)は半角英数字・アンダースコアのみ。値は日本語可。 |
{{DATA:key:GHOST}}値{{/DATA}} | データ定義(非表示)。keyは半角英数字と「_」 |
{{DATAROW:rowID}} {{DATA:key}}値{{/DATA}} {{/DATAROW}} | テーブル形式のデータ定義。key,rowIDは半角英数字と「_」 |
{{ POST_MD::key }} | ページ内のデータを表示 |
{{ POST_MD::pageID:key }} | IDページのデータを表示 |
{{ EXT_MD:url:key }} | 外部ページのデータを表示 |
{{ POST_MD::#rowID:key }} | ページ内のテーブル形式のデータを表示 |
{{ POST_MD:pageID#rowID:key }} | IDページのテーブル形式のデータを表示 |
{{ EXT_MD:url#rowID:key }} | 外部ページのテーブル形式のデータを表示 |
{{ CONTENT }} | ページWrapper専用: 本文を挿入 |
{{ `HEAD_CSS `}} | ページWrapper専用:CSSを集約して挿入。初期設定では、_global_headコンポーネントにあらかじめ挿入されています。 |
初期コンポーネント一覧
インストール時に同梱されているコンポーネントの一覧です。デザイ ン管理画面で確認・編集できます。
| ID | タイプ | 役割・内容 |
|---|---|---|
_layout | ページ | 標準的な共通レイアウト。{{COMPONENT:_global_head}} {{COMPONENT:_header}} {{CONTENT}} {{COMPONENT:_footer}} を組み合わせた基本構成です。通常のMarkdownページはこれを選択します。 |
_ai | ページ | AI生成HTML用のシンプルなページコンポーネント。{{CONTENT}}のみで構成されており、AIが生成した完全なHTMLをそのままページの本文に貼り付けて使うために設計されています。 |
_error | ページ | エラーページ用のレイアウト。 |
_global_head | パーツ | HTMLの<head>セクション内に挿入する共通タグ集。Google AnalyticsやWebフォントの読み込みなど、全ページ共通のheadタグをここに記述します。初期設定では、{{`HEAD_CSS`}}が配置されていますので、基本的にページコンポーネントには必ず入れた方がよいです。CSSスコープ化は無効(グローバル)。 |
_header | パーツ | サイト共通のヘッダー。サイト名・ナビゲーションリンクを含む標準的なヘッダーコンポーネントです。 |
_footer | パーツ | サイト共通のフッター。コピーライト・フッターナビゲーション等を含む標準的なフッターコンポーネントです。 |
_nav_card | パーツ | カード型ナビゲーションでコンポーネントIDを省略した場合に使用される標準カードデザインです。サムネイル画像・タイトル・概要・日付を表示するカードを出力します。 |
データの埋め込み、読み込み、API
データの形式
以下の3種類の形式の情報を扱うことができます。
- Markdown: サイト内部、あるいは外部(GitHub等)のMarkdownデータ
- Data: WordPressの拡張フィールドのような、key-value形式の個別データ
- DataBase:
{{DATAROW}}を用いたテーブル形式のデータ
Markdownの読み込み
他のページをMarkdownとして読み込める
コンポーネントだけでなく、他のページ自体もMarkdownとして読み込むことができます。複雑なページを直接編集するのではなく、更新用のシンプルなページを更新するだけで、反映させられます。
他のサイトのページをMarkdownとして読み込める
GitHubなど、他のサイトのページをMarkdownとして読み込むことで、サイトに直接触らなくても更新できます。もちろん、セキュリティ上、JavaScriptは動かないようにしています。
GitHubのページをMarkdownとして出力
GitHubのmdファイルのページは以下のようにURLを変えて、Rawデータにすることで読み込むことができます。
変換前: https://github.com/yoshihik0/testData/blob/main/md-test.md
変換後: https://raw.githubusercontent.com/yoshihik0/testData/main/md-test.md
変換ルール
github.com → raw.githubusercontent.com
/blob/ → /(消す)
読み込み:
{{EXT_MD:https://raw.githubusercontent.com/yoshihik0/testData/main/md-test.md}}
GitHub以外では:
Dropbox: ?dl=1 に変える
Google Docs: 公開設定して /export?format=txt
ページへのデータの埋め込みと利用
{{DATA:key}}データ{{/DATA}}と書くだけで、WordPressの拡張フィールドのように、ページに情報を埋め込んで、ページ内や他のページから利用できます。キー(key)は、半角英数字と「_」を使うことができます。しかも{{DATA:key:GHOST}}データ{{/DATA}}のように「:GHOST」を付け加えると、ページ内では表示されなくなります。
ページ内からの利用:{{POST_MD::key}}
他のページからの利用:{{POST_MD:pageID:key}}
他のサイトでのデータの埋め込みと利用
{{DATA:key}}データ{{/DATA}}の形式は、GitHubなど、他のサイトのページからも読み込めます。サイトに直接触らなくても更新できるので、AIと相性のよいGitHubを利用すれば、自動運用もしやすいです。
他のサイトからのデータの利用:{{EXT_MD:url:key}}
DB Less DB:ページにデータベースを埋め込める
{{DATAROW:rowID}}{{DATA:key}}データ{{/DATA}}{{/DATAROW}}と書くだけで、表形式のデータを埋め込んで、ページ内や他のページから利用できます。データベースを使っていないのに、ページ自体がデータベースになれます。
ページ内のテーブル系形式のデータを表示:{{POST_MD::#rowID:key}}
IDページのテーブル系形式のデータを表示:{{POST_MD:pageID#rowID:key}}
他のサイトのデータベースも読み込める
{{DATAROW:rowID}}{{DATA:key}}データ{{/DATA}}{{/DATAROW}}の形式は、GitHubなど、他のサイトのページからも読み込める。
外部ページのテーブル系:{{EXT_MD:url#rowID:key}}
CSVデータを変換
サイト画面の「CSVインポート」で、エクセルなどのCSVデータを、{{DATAROW}}の形式に変換できます。大きめなデータを扱うにも、手間はいりません。
1行目をフィールド名として読み込み、各行を {{DATAROW:連番}} ブロックに変換してクリップボードにコピーします。コピー後、ページ編集の本文に貼り付けて保存してください。
ヘッドレスCMSにもなる
{{DATAROW}}を埋め込んだページを、公開設定「DB」で公開することで、外部からAPIで読み取ることができるようになります。
https://yoursite.com/api/pageID
例:https://yoshihiko.com/mikanbox/demo/api/sample-DB
さまざまな情報のカードが作れる
これらの情報は、カード形式の表示(レコードの一覧表示)のなかでも利用できるので、商品情報一覧なども作成できます。
| タグ | 内容 |
|---|---|
{{TITLE}} | ページタイトル |
{{UPDATE_DATE}} | 更新日 |
{{UPDATE_DATE:JP}} | 更新日・日本語 |
{{UPDATE_DATE:SLASH}} | 更新日・/区切り |
{{IS_NEW:30}} | N日以内 new、それ以外は空 |
{{DESCRIPTION}} | ページ概要) |
{{OGP_IMAGE}} | ページのOGP画像のURL |
{{PAGE_URL}} | ページのフルURL |
{{POST_MD::name}} | データの表示 |
{{POST_MD::date}} | データの表示 |
{{POST_MD::#test:book}} | データの表示ROW |
{{IS_ACTIVE}} | 現在のページなら active、それ以外は空 |
音声を張り込んだページを作成し、カテゴリを「podcast」に設定すると、「podcast」カテゴリのページのみのRSSが、以下のURLで出力され、ポッドキャストを配信できます。
https://yoursite.com/podcast.xml
おもに、以下の情報を埋め込みます。AUDIO_FILEは必須です。
{{DATA:AUDIO_FILE:GHOST}}episode01.mp3{{/DATA}}
{{DATA:DURATION:GHOST}}25:30{{/DATA}}
{{DATA:FILE_SIZE:GHOST}}24500000{{/DATA}}
ポッドキャストのページに可能なデータ
{{DATA:AUDIO_FILE:GHOST}}episode01.mp3{{/DATA}} ← 必須
{{DATA:DURATION:GHOST}}25:30{{/DATA}}
{{DATA:FILE_SIZE:GHOST}}24500000{{/DATA}}
{{DATA:EPISODE_NUM:GHOST}}1{{/DATA}}
{{DATA:SEASON:GHOST}}1{{/DATA}}
{{DATA:SUBTITLE:GHOST}}今回のテーマは...{{/DATA}}
{{DATA:EPISODE_IMAGE:GHOST}}ep01-cover.jpg{{/DATA}}
{{DATA:EPISODE_TYPE:GHOST}}full{{/DATA}}
{{DATA:EXPLICIT:GHOST}}false{{/DATA}}
タイトル{{DATA:TITLE}}と概要{{DATA:DESCRIPTION}}はページの設定から自動で取得します。
利用可能なデータはサービスによって異なります。
ポッドキャスト配信の手順
- 🍊mikanBoxでポッドキャストエピソードページを作る(カテゴリ「podcast」)
https://yoursite.com/podcast.xmlが自動で生成される- そのURLを各プラットフォームに登録する
| プラットフォーム | 登録場所 |
|---|---|
| Apple Podcasts | podcastsconnect.apple.com |
| Spotify | podcasters.spotify.com |
| Google Podcasts | google.com/podcasts/publish |
| Amazon Music | music.amazon.com/podcasts |
音声ファイルは🍊mikanBoxのメディアにアップロードしておくだけでOKです。
サイトマップ・RSS・API
サイトマップ
以下のURLでサイトマップが出力されます。
https://yoursite.com/sitemap.xml
例:https://yoshihiko.com/mikanbox/demo/sitemap.xml
RSS
以下のURLでサイトマップが出力されます。
https://yoursite.com/rss.xml
例:https://yoshihiko.com/mikanbox/demo/rss.xml
Podcast RSS
音声を張り込んで、カテゴリを「podcast」に設定すると、「podcast」カテゴリのページのみのRSSが、以下のURLで出力され、ポッドキャストを配信できます。
https://yoursite.com/podcast.xml
例:https://yoshihiko.com/mikanbox/demo/podcast.xml
API
{{DATAROW}}を埋め込んだページを、公開設定「DB」で公開することで、外部からAPIで読み取ることができるようになります。
https://yoursite.com/api/pageID
例:https://yoshihiko.com/mikanbox/demo/api/sample-DB
AIで作ったデザインをそのまま公開する方法
CSSをどこに書くか
mikanBoxでは、CSSを書く場所が用途によって決まっています。HTMLの本文やコンポーネントのHTML内に <style> タグで書くのは避けてください。
| 用途 | 書く場所 |
|---|---|
| このページだけのスタイル | ページの「ページ専用CSS」欄 |
| このコンポーネントだけのスタイル | コンポーネントの「CSS」欄 |
| サイト全体に共通するスタイル | _ai コンポーネントの「CSS」欄 |
| フォント読み込み(Google Fonts 等) | _ai の「CSS」欄に @import、または _ai の HTML の <head> 内に <link> タグ |
| 外部CSSライブラリの読み込み | _ai の HTML の <head> 内に <link> タグ |
| CSS内の画像パス(background-image等) | images/ファイル名 または media/ファイル名 — どちらも自動でフルURLに変換されます |
AIにデザインを依頼するプロンプトには以下の一文を加えてください。
CSS・JSも含めて1つのHTMLファイルとして出力して。画像は images/ファイル名 または media/ファイル名 で
ページを生成したら、以下の手順で配置します。
- 「ページ編集」画面で、デザインコンポーネントに
_aiを選択します。 - 生成したHTMLのすべての内容を「本文」にペーストします。
- 「Raw HTML」チェックボックスをONにして保存してください。
複数ページで共通のヘッダー・フッターを使う場合
同じヘッダーやフッターを複数のページで共有したい場合は、カスタムラッパーコンポーネントを作成します。
手順:
- 「デザイン」→「新規作成」でコンポーネントを作成します(ID例:
mysite_layout)。 - 「ページコンポーネントとして使用する」をONにします(スコープCSSはOFFを推奨)。
_aiコンポーネントのHTMLをベースにして、<body>内にヘッダーとフッターを追加します。ページ本文を挿入したい位置に{{CONTENT}}を置きます。- このコンポーネントの「CSS」欄に、複数ページで共通して使うCSSを記述します。
- このラッパーを使う各ページの「デザインコンポーネント」で
mysite_layoutを選択します。 - 各ページの「本文」には
<main>や<article>の中身だけを書きます(Markdown可)。
ポイント: _ai コンポーネントを直接編集するとすべてのページに影響します。サイト専用のラッパーを別途作成すると、_ai を安全に保ちながら管理できます。
MCPでAIと連携する
🍊mikanBoxはMCP(Model Context Protocol)に対応しています。ClaudeなどのAIをサイト編集スタッフとして活用できます。
MCPとは
MCP(Model Context Protocol)は、AIが外部のサービスやデータを操作するための標準プロトコルです。AIに話しかけるだけでサイトを直接操作できるようになります。
AIに頼めること
- 「このキーワードで5記事分の構成を作ってまとめてアップして」
- 「下書きを全部レビューして、完成度が高い順に公開して」
- 「この記事の英語版も作って別スラッグでアップして」
- 「全ページのメタdescriptionが抜けているものを補完して」
- スプレッドシートのデータ → 「商品ページを一括生成して」
セットアップ(ローカル環境)
1. APIキーを生成する
管理画面の「サイト」→「MCP APIキー」を開き、「APIキーを生成」ボタンをクリックします。生成されたキーをコピーします。
2. Claude Desktopの設定ファイルを編集する
~/Library/Application Support/Claude/claude_desktop_config.json に追記します。
{
"mcpServers": {
"🍊mikanBox": {
"command": "php",
"args": ["/your-path/mikanBox/mcp.php"]
}
}
}
3. Claude Desktopを再起動する
再起動後、チャットで🍊mikanBoxのツールが使えるようになります。
セットアップ(レンタルサーバー)
サーバーにアップした🍊mikanBoxをClaude Desktopとつなぐには、mcp-remote を使います。mcp-remoteは自分のMac上で動くツールで、サーバー側には追加インストール不要です。
自分のMac
Claude Desktop ↕ stdio
mcp-remote(ローカルで動作)↕ HTTPS
レンタルサーバー
mcp.php(PHPだけあればOK)
Claude Desktopの設定:
{
"mcpServers": {
"🍊mikanBox": {
"command": "npx",
"args": [
"mcp-remote",
"https://yoursite.com/mikanBox/mcp.php",
"--header",
"X-API-Key: 生成したAPIキー"
]
}
}
}
mcp-remoteの利用にはNode.js(npx)が必要です。
MCP APIキーについて
MCP APIキー管理画面の「サイト」→「MCP APIキー」で生成・確認できます。APIキーは自分で好きな文字列を設定することもできます。推測されにくいランダムな文字列が安全です。ターミナルで openssl rand -hex 24 を実行することで生成することも可能です。
新しいAPIキーをランダムに生成して保存します。再生成した場合は、Claude Desktopの設定も新しいキーに更新してください。
content_copyコピーAPIキーをクリップボードにコピーします。
複数サイトの運用
それぞれの🍊mikanBoxに別のAPIキーを設定し、Claude Desktopの設定に並べるだけです。
{
"mcpServers": {
"サイトA": {
"command": "npx",
"args": ["mcp-remote", "https://site-a.com/mikanBox/mcp.php", "--header", "X-API-Key: キーA"]
},
"サイトB": {
"command": "npx",
"args": ["mcp-remote", "https://site-b.com/mikanBox/mcp.php", "--header", "X-API-Key: キーB"]
}
}
}
使えるツール一覧
| ツール | 内容 |
|---|---|
list_pages | ページ一覧を取得 |
get_page | ページの内容を取得 |
create_page | ページを新規作成 |
update_page | ページを更新 |
delete_page | ページを削除 |
list_components | コンポーネント一覧を取得 |
get_component | コンポーネントの内容を取得 |
create_component | コンポーネントを新規作成 |
update_component | コンポーネントを更新 |
upload_media | 画像をメディアフォルダにアップロード |
get_settings | サイト設定を取得 |
build_ssg | 静的HTMLをビルド |
お知らせ
本プログラムの制作者は、本プログラムを基本としたCMSの設計・UIデザイン・構築・運用等をお受けすることができます。
また、それ以外でも、UIデザイン・情報設計・DX推進・AI活用・社内広報・デザイン教育・コンテンツ制作などの分野でお困りのことがあれば、お気軽にご相談ください。
著書:『デザインの教室』『デザインの授業』『フラットデザインの基本ルール』
ライセンス
MIT License
Copyright (c) 2026 yoshihiko.com
条件: 上記の著作権表示および本許諾表示を、本ソフトウェアのすべての複製または重要な部分に記載するものとします。
免責事項: 本ソフトウェアは「現状のまま」提供され、明示または黙示を問わず、いかなる保証もありません。作者または著作権者は、契約、不法行為、またはその他に起因するいかなる請求、損害、またはその他の責任についても一切の責任を負わないものとします。