🍊mikanBox 利用ヘルプ v1.0

コンセプト・特長

🍊mikanBoxは、「AI時代のパーツ組み立て型・超軽量CMS」です。数ページから数十ページ規模のWebサイトを、最速かつ安全に構築・運用するために設計されました。


設計方針

規模を限定する

🍊mikanBoxは数千ページ規模のサイトは想定していません。数ページのサイトだけど情報の更新はしたい、そんなサイトにDBを使った重いシステムを導入する必要はないのでは。あえてデータベースを使わないことで、以下の手軽さを実現しています。

柔軟な設計

ページやコンポーネントがCSSと結びついているのでわかりやすく、また、干渉を気にしなくてよい設計になっています。コンポーネントの使い方次第で、自由で柔軟なサイト設計が行えます。

AIフレンドリー

セキュリティをシンプルに

静的サイトにも対応し、攻撃面を増やさない設計です。


2つの運用スタイル

🍊mikanBoxでは、異なる寿命のページを同じ仕組みで扱えます。

長く使うコンテンツ(例:ブログ、サービス案内)

短期ページ(例:LP、イベントページ)

想定用途

数千ページの運用は想定していません。

切り捨てていること


初期設定・配布について

🍊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つのパートでサイトを構築・管理します。

descriptionページ (Pages)

サイトの「実体」となるページ自体を管理します。URL(ID)を決め、タイトルやSEO情報を設定し、本文(Markdown/HTML)を執筆します。

saveサイト (Site)

管理メモ、静的サイト生成(SSG)、サイト共通設定、言語、パスワード変更、バックアップ、AI用プロンプトなどサイト運営に関わる設定・管理機能をまとめています。

widgetsデザイン (Design)

ページ全体のデザインを設定する ページ と、共通部品を作る パーツ の2種類のコンポーネントがあります。ヘッダーやフッター、ナビゲーションなどの共通で使うものは パーツ として作成しておくことで、どこからでも利用できます。デザイン要素(コンポーネント)の管理が主な役割です。

imageメディア (Media)

画像、動画、音声などのファイルを管理します。アップロード、一覧確認、リサイズ、および貼り付け用のファイル名コピーを素早く行えます。


共通

プレビュー

サイトのトップページを開きます(新規タブ)。

ログアウト

システムからログアウトします。

(各パートの見出しの横の)ヘルプ

ヘルプページを開きます(新規タブ)。


ページ

作成済みのページを一覧で確認・管理する画面です。

add新規作成

新しいページを作成します。クリックするとページ編集エリアが開きます。

ページ一覧

編集・プレビュー 公開設定

ページごとの公開状態を切り替えるドロップダウンメニューです。変更すると即座に保存されます。

公開(HTML)のページをそれ以外の公開設定に設定すると、静的HTMLファイルは削除されます。

ID

ページのURLになる識別子(スラッグ)です。例として news と設定すると、URLは /news の形になります。

タイトル

ページのタイトルです。クリックすると編集画面へ移動します。

更新

ページ作成時に設定されます。日時は変更可能です。

表示順

ナビゲーションなどの一覧での表示優先順位です。リスト表示するNAV_LINKSNAV_CARDSのなかで、またこのページ一覧のなかで、数字が小さいほど前(上)に表示されます。0より小さいものは、リスト表示されません。

カテゴリ

ページに設定されたカテゴリが表示されます。{{NAV_LINKS:カテゴリ}} などで絞り込みに利用されます。

静的サイトビルドボタン

auto_awesome静的サイトをビルドする

ページ一覧の下部にあります。公開設定が「公開(HTML)」のページをすべて静的HTMLファイルとして書き出します。「公開(HTML)」のページを編集した際には、他のページとの矛盾が生じる場合もあるので、ここでサイト全体のビルドをしておくことをおすすめします。


ページ編集

ページの内容や設定を細かく編集する画面です。「新規作成」ボタンやページのタイトル・編集ボタンをクリックすると表示されます。

更新日

ページ作成時に設定されます。日時は変更可能です。

タイトル

ページのタイトルです。必須項目です。コンポーネント内では {{TITLE}}{{FULL_TITLE}}(「ページタイトル - サイト名」の形式)で出力できます。

公開設定

ページの公開状態をラジオボタンで選択します。

公開(HTML)のページをそれ以外の公開設定に設定すると、静的HTMLファイルは削除されます。

ID

URLになるページの識別記号(スラッグ)です。半角英数字とハイフンが使用できます。ページの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}} で出力されます。

ページ概要 (meta description)

ページの概要となる説明文を設定します。 {{DESCRIPTION}} で出力され、検索結果のタイトル下に表示される紹介文として利用されます。

本文 (Markdown or HTML)

ページのメインコンテンツを 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のメリット

出力先ディレクトリ

静的サイトをビルドする際のベースURLを設定します。例: https://example.com/ や https://yoshihiko.com/mikanbox/help_ja.html` などのフルURL出力に使用されます。

出力構成 / URL形式

生成するHTMLファイルの形式を選択します。

ディレクトリ型は、動的公開と同じURLで公開できます。切り替えてもリンク切れが起こりません。ファイル名型は、URLに拡張子が含まれ、シンプルなファイル構成で公開できます。

auto_awesome保存して静的サイトをビルド

設定を保存した上で、公開設定が「公開(HTML)」のすべてのページを静的HTMLファイルとして書き出します。

CSVインポート

CSVデータをサイト内で利用できるデータベースの形(DATAROWブロック)に変換するツールです。

ファイルを選択

CSVファイルを選択します。エンコーディング(UTF-8 / Shift-JIS)は自動判定します。

content_copy変換してコピー

1行目をフィールド名として読み込み、各行を {{DATAROW:連番}} ブロックに変換してクリップボードにコピーします。コピー後、ページ編集の本文に貼り付けて保存してください。

使い方のポイント

サイト共通設定

サイト名

サイトの名前を設定します。 {{SITE_NAME}} で出力できます。 {{FULL_TITLE}} は、「ページタイトル - サイト名」という形で表示され、ブックマークや検索時のページタイトルなどにも利用されます。

サイトの共通概要

サイトの概要を設定します。ページごとの概要が設定されていない場合は、検索時のページ概要として、この設定が利用されます。{{SITE_DESCRIPTION}} で出力されます。

共通キーワード

サイトのキーワードを設定します。ページごとのキーワードが設定されていない場合は、検索に使われるキーワードとして、この設定が利用されます。

共通OGP画像

サイト共通のOGP画像を設定します。ページごとのOGP画像が設定されていない場合は、SNSでシェアされる際に使われるOGP画像として、この設定が利用されます。{{SITE_OGP_IMAGE}} で出力されます。推奨サイズは 1200 × 630 px です。

save保存

「サイト共通設定」の内容を保存します。

MCP APIキー

ClaudeなどのAIとMCPで連携するためのAPIキーです。

APIキー

AIの設定ファイルに書き込んで、AIから利用できるようにします。

auto_awesomeAPIキーを再生成

APIキーを再生成します。

content_copyコピー

表示しているAPIキーをコピーします。Claude Codeの場合は、Claude Desktopの設定に貼り付けてください。詳しくは、AIにお聞きください。

言語

管理画面の表示言語を設定します。

以下の3つから選択できます。

save保存

言語設定を保存します。

パスワードの変更

管理画面のログインパスワードを変更します。

現在のパスワード

現在ログインに使用しているパスワードを入力します。

新しいパスワード

新しいパスワードを入力します(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は、初期設定で用意されているシステムコンポーネントです。これらを編集して使用することもできます。

' 🍊mikanBox ヘルプ - 🍊mikanBox 'には、''タグ内の共通設定が記述されていて、CSSを集約出力する''もあらかじめ含まれています。AIによる出力をそのまま利用する際には、'_ai'を、それ外は'_layout'をベースに使用するとよいでしょう。

タイプ

コンポーネントの種類を示します。

タグ名

コンポーネントを埋め込むためのタグ(例: {{COMPONENT:header}})が表示されます。クリックするとクリップボードにコピーされます。ページの本文や他のコンポーネントのHTMLに貼り付けて利用します。


デザイン編集

コンポーネントの構造(HTML・CSS)と設定を定義する画面です。

コンポーネントID

コンポーネントの識別記号です。必須項目です。半角英数字とアンダースコアが使用できます。テンプレート内で {{COMPONENT:ID}} として呼び出せます。

HTML

コンポーネントの内容をHTMLで記述します。ここで使える独自のタグは、編集画面下部のガイドを参照してください。他のコンポーネントを入れ子にして読み込むこともできます。

CSS (この部品専用のスタイル)

このコンポーネントのなかだけに適用したいスタイルを記述します。CSSのなかでも独自のタグが使えます。

CSSをスコープ化する (他の部品への影響を防止)

チェックボックスです。通常はONを推奨します。CSSで記述した内容が、他の部分に影響することを防ぎます。サイト全体に適用したいグローバルなリセットCSSや <head> 用の部品を作る場合のみチェックをはずします。

ページコンポーネントとして使用する

ページ全体をレイアウトするコンポーネントにする場合にチェックします。チェックするとデザイン一覧で ページ として表示され、ページ編集画面の「デザインコンポーネント」で選択できるようになります。チェックしない場合は パーツ コンポーネントとして、ページや他のコンポーネントに埋め込んで使うことができます。

ページコンポーネント(Wrapper)では以下のタグが追加で利用できます:

save保存

コンポーネントを保存します。

arrow_back一覧へ戻る

「デザイン」管理画面に戻ります。未保存の内容は失われますのでご注意ください。

delete削除

コンポーネントを完全に削除します。削除後は元に戻せません。

編集画面下部には、利用可能なタグ一覧(タグガイド)が折りたたまれた状態で表示されます。クリックで展開できます。


メディア

画像・音声・動画ファイルのアップロードと管理を行う画面です。

アップロードエリア

ファイル選択

「ファイルを選択」をクリックしてアップロードするファイルを選択します。このウィンドウにファイルをドラッグ&ドロップすると、ドロップした段階でアップロードできます。

uploadアップロード

選択したファイルをアップロードします。

対応形式・制限

jpg, png, gif, webp, svg, mp3, m4a, mp4 に対応しています。最大ファイルサイズはサーバーの設定に依存します。

アップロードされたファイルは media ディレクトリに保存されます。Markdown や HTML での参照方法:

メディア一覧

プレビュー

画像はサムネイルが表示されます。動画・音声ファイルはアイコンが表示されます。

ファイル名(クリックでコピー)

ファイル名をクリックするとクリップボードにコピーされます。ページの本文へ貼り付けて使用します。

形式・サイズ表示

ファイルの形式(例: 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 h1h6 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>

メディアの利用

画像を表示する際には、 ![画像の説明](filename) でページに埋め込むことができます。[ ] のなかには、画像の説明を入れ、 <img src="画像のURL" alt="画像の説明"> の形で出力されます。メディア管理でアップロードした画像は、ファイル名を指定するだけで利用できます。また、独自タグの {{IMAGE:ファイル名}} の形でも同様に利用できます。メディア管理で管理している音声や映像ファイルは、 {{AUDIO:ファイル名}} {{VIDEO:ファイル名}} で利用することができます。

Markdown:![画像の説明](filename) 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 |

指定なし左寄せ中央右寄せ
ABCD
### クラス・IDの指定(Markdown拡張)

Markdownの行末に {.className} {#idName} を追加すると、その行のブロック要素にCSSの classid を指定できます。

重要: {.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コンポーネントにあらかじめ挿入されています。
※ 今年の年号(Copyright用 など)を表示したい場合は、JavaScriptでの記述を推奨します(例: ``)。これにより、サーバー側の処理を介さず常に最新の年号を表示できます。

初期コンポーネント一覧

インストール時に同梱されているコンポーネントの一覧です。デザイ ン管理画面で確認・編集できます。

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の読み込み

他のページを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}}の形式に変換できます。大きめなデータを扱うにも、手間はいりません。

エクセルから書き出したCSV形式のファイルを選択し、 content_copy変換してコピー をクリックして、データをコピーします。ページ内の本文にペーストして利用してください。

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」に設定すると、「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}}はページの設定から自動で取得します。

利用可能なデータはサービスによって異なります。

ポッドキャスト配信の手順

  1. 🍊mikanBoxでポッドキャストエピソードページを作る(カテゴリ「podcast」)
  2. https://yoursite.com/podcast.xml が自動で生成される
  3. そのURLを各プラットフォームに登録する
登録先:
プラットフォーム登録場所
Apple Podcastspodcastsconnect.apple.com
Spotifypodcasters.spotify.com
Google Podcastsgoogle.com/podcasts/publish
Amazon Musicmusic.amazon.com/podcasts
一度登録すれば、あとは新しいエピソードページを追加するたびに自動で各プラットフォームが `podcast.xml` を取りに来て更新されます。

音声ファイルは🍊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で作る場合

AIにデザインを依頼するプロンプトには以下の一文を加えてください。

CSS・JSも含めて1つのHTMLファイルとして出力して。画像は images/ファイル名 または media/ファイル名 で

ページを生成したら、以下の手順で配置します。

  1. 「ページ編集」画面で、デザインコンポーネントに _ai を選択します。
  2. 生成したHTMLのすべての内容を「本文」にペーストします。
  3. 「Raw HTML」チェックボックスをONにして保存してください。

複数ページで共通のヘッダー・フッターを使う場合

同じヘッダーやフッターを複数のページで共有したい場合は、カスタムラッパーコンポーネントを作成します。

手順:

  1. 「デザイン」→「新規作成」でコンポーネントを作成します(ID例: mysite_layout)。
  2. 「ページコンポーネントとして使用する」をONにします(スコープCSSはOFFを推奨)。
  3. _ai コンポーネントのHTMLをベースにして、<body> 内にヘッダーとフッターを追加します。ページ本文を挿入したい位置に {{CONTENT}} を置きます。
  4. このコンポーネントの「CSS」欄に、複数ページで共通して使うCSSを記述します。
  5. このラッパーを使う各ページの「デザインコンポーネント」で mysite_layout を選択します。
  6. 各ページの「本文」には <main><article> の中身だけを書きます(Markdown可)。

ポイント: _ai コンポーネントを直接編集するとすべてのページに影響します。サイト専用のラッパーを別途作成すると、_ai を安全に保ちながら管理できます。


MCPでAIと連携する

🍊mikanBoxはMCP(Model Context Protocol)に対応しています。ClaudeなどのAIをサイト編集スタッフとして活用できます。

MCPとは

MCP(Model Context Protocol)は、AIが外部のサービスやデータを操作するための標準プロトコルです。AIに話しかけるだけでサイトを直接操作できるようになります。

AIに頼めること

セットアップ(ローカル環境)

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 を実行することで生成することも可能です。

auto_awesomeAPIキーを再生成

新しい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活用・社内広報・デザイン教育・コンテンツ制作などの分野でお困りのことがあれば、お気軽にご相談ください。

著書:『デザインの教室』『デザインの授業』『フラットデザインの基本ルール』

http://yoshihiko.com


ライセンス

MIT License

Copyright (c) 2026 yoshihiko.com

以下に定める条件に従い、本ソフトウェアおよび関連文書のファイルを無償で利用する権利を許諾します。商用利用、修正、配布、再許諾を含みますが、これらに限定されません。

条件: 上記の著作権表示および本許諾表示を、本ソフトウェアのすべての複製または重要な部分に記載するものとします。

免責事項: 本ソフトウェアは「現状のまま」提供され、明示または黙示を問わず、いかなる保証もありません。作者または著作権者は、契約、不法行為、またはその他に起因するいかなる請求、損害、またはその他の責任についても一切の責任を負わないものとします。