LP定義スキーマ v0.1(確定)
方針
- 単一JSONが編集画面・プレビュー・埋め込みランタイム・ZIPの正本。
schemaVersion で互換を管理する。
- メディアは 相対パス(ZIP・静的配信)を正とし、CDN絶対URLは将来オプションで拡張。
- 分析用の
step.id は公開後も不変(並べ替えしてもIDは維持。削除したIDは再利用しない)。
ルート
| フィールド | 型 | 必須 | 説明 |
|---|
schemaVersion | string | ✓ | この文書では "0.1" 固定。 |
id | string | ✓ | LPの公開用ID(埋め込み・計測で使用)。ULID推奨。 |
revision | string | ✓ | 定義の更新を識別。最初は 1。以降は整数増加またはコンテンツハッシュ。 |
meta | object | ✓ | 下記。 |
swipe | object | ✓ | 下記。 |
steps | array | ✓ | 1件以上。順序は配列順。 |
meta
| フィールド | 型 | 必須 | 説明 |
|---|
title | string | ✓ | 管理・OG等に使用。 |
locale | string | | BCP47。省略時は ja-JP。 |
description | string | | 任意。 |
favicon | object | | ブラウザタブ用アイコン。src 必須。 |
popupCta | object | | 全スライド共通のフローティング CTA。下記。 |
meta.favicon
| フィールド | 型 | 必須 | 説明 |
|---|
src | string | ✓ | 相対パス(ZIP)または管理メディア URL |
width / height | number | | 任意 |
objectKey | string | | 管理用。配布時は除去してよい |
ロゴはスライド内のクリエイティブ(AI 生成・画像アップロード)で表現する。全スライド固定の左上オーバーレイは採用しない。
meta.popupCta
ステップCTAとは別に、全スライドに重ねるフローティングボタン。viewer が host 上に固定表示する。
| フィールド | 型 | 必須 | 説明 |
|---|
label | string | ✓ | ボタン文言。 |
href | string | ✓ | 遷移先URL。 |
target | string | ✓ | _self | _blank |
variant | string | | ステップCTAと同じプリセット。省略時 pill。 |
appearance | object | | ステップCTAと同じ任意上書き。 |
showAfterStepIndex | number | | 0始まり。このステップを表示したあとから POPUP を出す。省略時は 0(最初から)。 |
swipe
| フィールド | 型 | 必須 | 説明 |
|---|
direction | string | ✓ | vertical | horizontal |
viewport | string | ✓ | default | fullscreen(ノッチ等はランタイムでセーフエリア対応) |
desktopFrame | string | | letterbox | none。広いビューポート(PC等)でコンテンツを中央寄せ+左右に帯で見せるかの既定。省略時は letterbox。none を選ぶと従来どおり全幅で描画。 |
desktopMaxWidth | number | | desktopFrame: letterbox 時のコンテンツ最大幅(CSS px、240〜2000)。省略時は 420。 |
埋め込み・ホスト型公開URL・ZIPのいずれの配信先でも、PC ブラウザでこの定義どおりの見え方になる。プレビューや埋め込みでは data 属性・mount オプションで個別に上書きできる(embed-and-zip-v0.1 を参照)。
ランタイム(閲覧): steps が 2 件以上のとき、最終スライド以外の各ステップ右下に控えめなスワイプヒント(ダークグラス調の小さなカード・連なるシェブロンの微アニメ・「続きを見る」+「下へ/右へスワイプ」)を約 3 秒表示する。同じスライドに滞在している間は、操作で消えたあと 約 12 秒ごとに再表示する。ステップ移動のたびにも短い遅延のあと表示。スクロール・タッチ・ホイールで一旦非表示。最終スライドでは出さない。次スライドのチラ見せ(peek)は行わない。
ステップ steps[]
| フィールド | 型 | 必須 | 説明 |
|---|
id | string | ✓ | ステップ固有ID。分析・ホットスポット参照に使う。ULID推奨。 |
type | string | ✓ | image | video |
media | object | ✓ | 下記。 |
cta | object | null | ✓ | ステップごとCTA。非表示は null。 |
hotspots | array | ✓ | 0件可。各要素は下記。 |
media(type: image)
| フィールド | 型 | 必須 | 説明 |
|---|
src | string | ✓ | 相対パス例: assets/step-01.webp |
alt | string | | アクセシビリティ用。 |
width | number | | 元画像の幅(任意、レイアウト最適化用)。 |
height | number | | 元画像の高さ。 |
objectFit | string | | 任意(管理UIでは未露出)。省略時はビューアが contain(切らず全体表示)。cover は JSON 直編集時のみ。PCレターボックス時は contain なら列幅を画像比に合わせて最大約720pxまで広げる。 |
objectPosition | string | | 任意(管理UIでは未露出)。cover 時の基準位置(CSS object-position)。省略時は中央。 |
media(type: video)
| フィールド | 型 | 必須 | 説明 |
|---|
src | string | ✓ | 例: assets/step-01.mp4 |
poster | string | | 相対パス。静止画プレビュー。 |
muted | boolean | | 既定 true(自動再生との兼ね合い)。 |
loop | boolean | | 既定 false。 |
playsInline | boolean | | 既定 true。 |
objectPosition | string | | 任意。cover 表示時の基準位置(CSS object-position)。 |
cta
| フィールド | 型 | 必須 | 説明 |
|---|
label | string | ✓ | ボタン文言。 |
href | string | ✓ | 遷移先URL。 |
target | string | ✓ | _self | _blank |
variant | string | | 任意。CTAの見た目プリセット。省略時は pill。実装値: pill(白丸)・solid(角丸ダーク)・outline(白枠)・dark(半透明ダーク丸)・accent(オレンジ系)・minimal(小さめフラット)・line(LINE緑丸)。 |
appearance | object | | 任意。variant の上に インラインで上書き する色・サイズ。未指定のキーはプリセットに任せる。 |
cta.appearance(任意)
| フィールド | 型 | 説明 |
|---|
background | string | CSS background にそのまま渡す(例 #fff)。 |
color | string | 文字色。 |
borderColor | string | 枠線色。指定時は 2px solid。 |
fontSizePx | number | フォントサイズ(px)。実装は 10〜32 にクランプ。 |
paddingXPx | number | 左右パディング(px)。4〜48。 |
paddingYPx | number | 上下パディング(px)。4〜48。 |
borderRadiusPx | number | 角丸(px)。0〜999。 |
fontBold | boolean | true のとき太字(font-weight 700)。 |
fontPreset | string | sans / rounded / mono / neue(システムフォントスタック。実装と揃える)。 |
hotspots[]
| フィールド | 型 | 必須 | 説明 |
|---|
id | string | ✓ | ホットスポットID。 |
rect | object | ✓ | 正規化矩形。左上原点。 |
rect.x | number | ✓ | 0〜1 |
rect.y | number | ✓ | 0〜1 |
rect.w | number | ✓ | 0〜1 |
rect.h | number | ✓ | 0〜1 |
href | string | ✓ | |
target | string | ✓ | _self | _blank |
label | string | | 分析用ラベル(任意)。 |
例(最小)
{
"schemaVersion": "0.1",
"id": "01JRQEXAMPLELPID00",
"revision": "1",
"meta": {
"title": "サンプルLP",
"locale": "ja-JP"
},
"swipe": {
"direction": "vertical",
"viewport": "default"
},
"steps": [
{
"id": "01JRQEXAMPLESTEP01",
"type": "image",
"media": {
"src": "assets/01.webp",
"alt": "1枚目"
},
"cta": {
"label": "詳しく見る",
"href": "https://example.com/offer",
"target": "_blank"
},
"hotspots": [
{
"id": "01JRQEXAMPLEHS001",
"rect": { "x": 0.1, "y": 0.2, "w": 0.8, "h": 0.1 },
"href": "https://example.com/promo",
"target": "_self",
"label": "バナー"
}
]
}
]
}
v0.2 以降で検討する拡張(今は持たない)
meta.favicon(実装済・v0.1 定義への後方互換追加)
meta.popupCta(実装済・v0.1 定義への後方互換追加)
- グローバルCTAテーマ、
cta の複数ボタン
- ステップ単位の
transition アニメーション
- メディアの絶対URLオプション