仕様・API

LP定義JSON v0.1

スキーマ正本 — ステップ・CTA・ホットスポット。

LP定義スキーマ v0.1(確定)

方針

  • 単一JSONが編集画面・プレビュー・埋め込みランタイム・ZIPの正本。schemaVersion で互換を管理する。
  • メディアは 相対パス(ZIP・静的配信)を正とし、CDN絶対URLは将来オプションで拡張。
  • 分析用の step.id は公開後も不変(並べ替えしてもIDは維持。削除したIDは再利用しない)。

ルート

フィールド必須説明
schemaVersionstringこの文書では "0.1" 固定。
idstringLPの公開用ID(埋め込み・計測で使用)。ULID推奨。
revisionstring定義の更新を識別。最初は 1。以降は整数増加またはコンテンツハッシュ。
metaobject下記。
swipeobject下記。
stepsarray1件以上。順序は配列順。

meta

フィールド必須説明
titlestring管理・OG等に使用。
localestringBCP47。省略時は ja-JP
descriptionstring任意。
faviconobjectブラウザタブ用アイコン。src 必須。
popupCtaobject全スライド共通のフローティング CTA。下記。

meta.favicon

フィールド必須説明
srcstring相対パス(ZIP)または管理メディア URL
width / heightnumber任意
objectKeystring管理用。配布時は除去してよい

ロゴはスライド内のクリエイティブ(AI 生成・画像アップロード)で表現する。全スライド固定の左上オーバーレイは採用しない。

meta.popupCta

ステップCTAとは別に、全スライドに重ねるフローティングボタン。viewer が host 上に固定表示する。

フィールド必須説明
labelstringボタン文言。
hrefstring遷移先URL。
targetstring_self | _blank
variantstringステップCTAと同じプリセット。省略時 pill
appearanceobjectステップCTAと同じ任意上書き。
showAfterStepIndexnumber0始まり。このステップを表示したあとから POPUP を出す。省略時は 0(最初から)。

swipe

フィールド必須説明
directionstringvertical | horizontal
viewportstringdefault | fullscreen(ノッチ等はランタイムでセーフエリア対応)
desktopFramestringletterbox | none。広いビューポート(PC等)でコンテンツを中央寄せ+左右に帯で見せるかの既定。省略時は letterboxnone を選ぶと従来どおり全幅で描画。
desktopMaxWidthnumberdesktopFrame: letterbox 時のコンテンツ最大幅(CSS px、2402000)。省略時は 420

埋め込み・ホスト型公開URL・ZIPのいずれの配信先でも、PC ブラウザでこの定義どおりの見え方になる。プレビューや埋め込みでは data 属性・mount オプションで個別に上書きできる(embed-and-zip-v0.1 を参照)。

ランタイム(閲覧): steps が 2 件以上のとき、最終スライド以外の各ステップ右下に控えめなスワイプヒント(ダークグラス調の小さなカード・連なるシェブロンの微アニメ・「続きを見る」+「下へ/右へスワイプ」)を約 3 秒表示する。同じスライドに滞在している間は、操作で消えたあと 約 12 秒ごとに再表示する。ステップ移動のたびにも短い遅延のあと表示。スクロール・タッチ・ホイールで一旦非表示。最終スライドでは出さない。次スライドのチラ見せ(peek)は行わない。

ステップ steps[]

フィールド必須説明
idstringステップ固有ID。分析・ホットスポット参照に使う。ULID推奨。
typestringimage | video
mediaobject下記。
ctaobject | nullステップごとCTA。非表示は null
hotspotsarray0件可。各要素は下記。

mediatype: image

フィールド必須説明
srcstring相対パス例: assets/step-01.webp
altstringアクセシビリティ用。
widthnumber元画像の幅(任意、レイアウト最適化用)。
heightnumber元画像の高さ。
objectFitstring任意(管理UIでは未露出)。省略時はビューアが contain(切らず全体表示)。cover は JSON 直編集時のみ。PCレターボックス時は contain なら列幅を画像比に合わせて最大約720pxまで広げる。
objectPositionstring任意(管理UIでは未露出)。cover 時の基準位置(CSS object-position)。省略時は中央。

mediatype: video

フィールド必須説明
srcstring例: assets/step-01.mp4
posterstring相対パス。静止画プレビュー。
mutedboolean既定 true(自動再生との兼ね合い)。
loopboolean既定 false
playsInlineboolean既定 true
objectPositionstring任意。cover 表示時の基準位置(CSS object-position)。

cta

フィールド必須説明
labelstringボタン文言。
hrefstring遷移先URL。
targetstring_self | _blank
variantstring任意。CTAの見た目プリセット。省略時は pill。実装値: pill(白丸)・solid(角丸ダーク)・outline(白枠)・dark(半透明ダーク丸)・accent(オレンジ系)・minimal(小さめフラット)・line(LINE緑丸)。
appearanceobject任意。variant の上に インラインで上書き する色・サイズ。未指定のキーはプリセットに任せる。

cta.appearance(任意)

フィールド説明
backgroundstringCSS background にそのまま渡す(例 #fff)。
colorstring文字色。
borderColorstring枠線色。指定時は 2px solid。
fontSizePxnumberフォントサイズ(px)。実装は 10〜32 にクランプ。
paddingXPxnumber左右パディング(px)。4〜48。
paddingYPxnumber上下パディング(px)。4〜48。
borderRadiusPxnumber角丸(px)。0〜999。
fontBoldbooleantrue のとき太字(font-weight 700)。
fontPresetstringsans / rounded / mono / neue(システムフォントスタック。実装と揃える)。

hotspots[]

フィールド必須説明
idstringホットスポットID。
rectobject正規化矩形。左上原点。
rect.xnumber0〜1
rect.ynumber0〜1
rect.wnumber0〜1
rect.hnumber0〜1
hrefstring
targetstring_self | _blank
labelstring分析用ラベル(任意)。

例(最小)

{
  "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オプション

ソース: docs/spec/lp-definition-v0.1.md