auto_awesomeClaude Design! オフ会
TODAY'S GOAL 今日のゴール

自分のWebページを
インターネット
公開する!

完璧じゃなくてOK!まず公開してみようrocket_launch

SCROLL keyboard_arrow_down
route全体フロー

実行する順番

まず全体像を確認して、今どの工程にいるか迷わず進めます。8ステップで制作から公開まで完走!

smart_toyChatGPT

世界観と画像を固める

ChatGPTで「テキスト設計 → チラシ画像 → FV画像 → サービス説明画像」を順番に作り、LP全体の視覚的土台を固めます。最初にテキスト設計を確定してから画像生成に進むことで、ブレずに進められます。

STEP01

ChatGPTでチラシの設計をテキスト出力

テキスト設計プロンプト

目的:LP全体の世界観・コピー・配色・トンマナを テキストで先に 確定する

出力:Markdownブロックのテキスト報告(画像はまだ生成しない)

priority_high大切なポイント

この Step では 画像を生成しません

テキスト設計だけを先に出させて、その後の Step 02 で画像生成します。

こうすることで、設計を見直してから画像生成に進めるので、貴重な画像生成枠を無駄打ちしません。

中身を見る
⚠️ このターンで絶対にやってはいけないこと
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
画像を生成しない。画像生成ツールを起動しない。
このターンはテキスト出力のみ。
画像は次の Step 02 で生成します。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# 役割
あなたは受賞歴のある日本のグラフィックデザイナー兼アートディレクター兼コピーライターです。最小情報から購買行動を喚起するチラシ「の設計書」をテキストで作成してください。

---

# 入力情報

下の <<< >>> 部分にあなたが記入してください(必須3項目、任意3項目)。
未記入の任意項目は、業界の定石・ターゲット心理・購買行動を踏まえてプロとして自動補完してください。

## ★ 必須(あなたが記入)

- 業種/サービス内容: <<< ここに記入 >>>
- サービス名/屋号: <<< ここに記入 >>>
- 最終アクション/訴求したいキャンペーン: <<< ここに記入 >>>

## ☆ 任意(空欄なら自動補完)

- ターゲット: <<< 任意・空欄可 >>>
- 強み・実績・価格など特記事項: <<< 任意・空欄可 >>>
- 連絡先表記: <<< 任意・空欄可。空欄なら「詳しくは店頭または公式サイトへ」に自動補完 >>>

---

# あなたが決めること(優先度順)

【コピー】
1. メインコピー: 初見3秒でベネフィットが伝わる短い一文
2. サブコピー: メインコピーの意味を補強する1〜2文
3. CTA: 最終アクションを促す動詞ベースの一言

【訴求】
4. USP 3つ: 競合に埋もれない切り口

【ビジュアル】
5. カラーパレット(HEX): メイン/アクセント/ベースの3色
6. トンマナ: 信頼/躍動/親しみ/高級/清潔 など1語で
7. キービジュアル方針: 写真/イラスト/抽象 のどれを軸にするか

【レイアウト】
8. A4縦の3分割レイアウト意図(上部=つかみ/中部=訴求/下部=CTA)

【LP用 画像方針(後工程で重要)】
9. FV画像用ビジュアル指示: LP最上部の主役画像
10. サービス画像用ビジュアル指示: LP中段の補助画像

---

# ⚠️ 必須: FV画像とサービス画像は「明確に違う絵」として設計する

LPで使う2枚の画像は、役割と構図を必ず変えてください。
同じような絵が並ぶと退屈なLPになります。

## FV画像(LP最上部)
- 役割: 共感/憧れ/世界観の提示(感情を動かす)
- 距離感: ロングショット〜ミドルショット(引きの構図、空間を見せる)
- 縦横比: 16:9 または 3:2 横長
- 構図: 余白多め、メインコピーを乗せる空間あり

## サービス画像(LP中段)
- 役割: 具体/説明/USPの裏付け(理性に訴える)
- 距離感: クローズアップ〜ミドル(寄りの構図、ディテールを見せる)
- 縦横比: 4:3 または 1:1 正方形寄り
- 構図: 主役を中央〜やや寄せ、ディテール重視

## 業種別の差別化パターン(参考、12業種)

| 業種 | FV画像(引き) | サービス画像(寄り) |
|---|---|---|
| 飲食店 | 店内の雰囲気・客の笑顔 | 料理のアップ |
| 美容/エステ | 施術後の雰囲気・モデル | 施術の手元・素材 |
| IT/SaaS | 働く人・未来感 | 画面UI・ダッシュボード |
| 教室/塾 | 生徒の表情・教室全景 | 教材・手元の作業 |
| ジム/スポーツ | トレーニング中の躍動 | 器具・食事・数値 |
| 士業/医療 | 面談シーン・外観 | 書類・設備・手元 |
| 不動産 | 街並み・物件外観 | 内装ディテール・素材 |
| 建築/工務店 | 完成住宅・施工シーン | 木材・施工技術 |
| 修理/メンテ | 作業中の職人・現場 | 工具・修理部位 |
| 小売/ECショップ | 店舗外観・購買シーン | 商品アップ・素材感 |
| 運送/物流 | 配送車・拠点・人 | 梱包・荷物・地図 |
| 美容医療 | 施術空間・モデル | 機器・薬剤・手技 |

---

# 出力フォーマット(下のMarkdownブロックをそのまま埋めて出力)

```markdown
## ▼Step1 テキスト報告(これをコピーして保存)

### 基本情報
- サービス名:
- 業種/サービス内容:
- ターゲット:

### コピー
- メインコピー:
- サブコピー:
- CTA:

### USP(競合と差別化される強み3つ)
- USP1:
- USP2:
- USP3:

### ビジュアル
- カラーパレット
  - メイン: #XXXXXX
  - アクセント: #XXXXXX
  - ベース: #XXXXXX
- トンマナ:
- キービジュアル方針(チラシ用):

### レイアウト
- 上部/中部/下部の意図:

### FV画像用ビジュアル指示(LP最上部・横長16:9または3:2)
- 役割: 共感/憧れ/世界観
- 距離感:
- 被写体:
- 構図のポイント:

### サービス画像用ビジュアル指示(LP中段・正方形寄り4:3または1:1)
- 役割: 具体/説明/USP裏付け
- 距離感:
- 被写体:
- 構図のポイント:

### 2枚の差別化ポイント
- FV と サービス画像で「何が決定的に違うか」を1行で:
```

---

⚠️ 再確認: このターンは画像を絶対に生成しないでください。テキスト出力のみです。
save完了後にやること

テキスト報告のMarkdownブロックをコピーして、メモ帳/Notion/スマホメモに必ず保存してください。

Step 02〜05で使います。

もし設計がしっくりこなければ、追加で「もっと若い層向けに」「もっと信頼感を強く」など指示して修正してOKです。

次: チラシ画像生成 arrow_forward
STEP02

ChatGPTでチラシ画像を生成

チラシ画像生成プロンプト

目的:Step 01で確定した設計を元に、A4縦のチラシ画像を生成する

出力:A4縦チラシ画像 1枚

arrow_forward進め方

Step 01 と 同じチャットに続けて、下のプロンプトを送ります。

Step 01で確定した設計を元に画像が生成されます。

中身を見る
先ほどのテキスト設計を元に、A4縦のチラシ画像を1枚生成してください。

# 引き継ぎ
このターンの直前(Step 01)で出力したテキスト報告の「メインコピー」「サブコピー」「USP」「カラーパレット」「トンマナ」「キービジュアル方針」を、この画像にすべて反映してください。

---

# ⚠️ 必須仕様
- A4縦・aspect ratio 1:1.414
- 商業印刷品質・高解像感
- 1枚完結
- 余白十分(外周マージンを確保)
- 複数案比較/4分割/モックアップ/掲示風合成は禁止

---

# レイアウト構成
- 上部 1/3: キービジュアル + メインコピー
- 中部 1/3: サブコピー + USP 3つ
- 下部 1/3: 最終アクション + サービス名 + 連絡先 + QR差し替え用の四角余白

---

# 💡 デザインヒント(できる範囲で)
- カラーパレットのメイン/アクセント/ベース 3色を中心に構成
- 装飾は意味のあるものだけ
- 文字を詰め込みすぎない(可読性優先)

---

# ⚠️ 出力ルール
- 画像のみ出力
- テキスト解説は不要
- 1枚のみ生成
save完了後にやること

生成されたチラシ画像を右クリックでPC保存。

Step 03〜05で使います。

次: FV画像生成 arrow_forward
STEP03

ChatGPTでFV(ファーストビュー)画像を生成

FV画像生成プロンプト

目的:LP最上部の主役画像を生成する/チラシと世界観を統一する

出力:横長(16:9または3:2)のFV用画像1枚

attach_file添付するもの(任意)

Step 02 で生成したチラシ画像を添付するとより世界観が揃いますが、添付しなくても動作します。

ChatGPT の添付枠(無料版は1日2枚目安)を節約したい場合は省略OK。

中身を見る
# 役割
あなたは超一流のWebアートディレクター兼LPビジュアル設計者です。LP最上部(ファーストビュー)で使う主役画像を1枚生成してください。

---

# 引き継ぎ
このChat内の Step 01 で出力した「FV画像用ビジュアル指示」セクションを、絶対の正として参照してください。
そこに書かれた距離感・被写体・構図のポイント・縦横比をそのまま反映します。

(Step 01 のテキスト報告がまだ会話に残っているはずです。残っていなければ、ユーザーは追加で報告内容を貼り付けます)

---

# 添付画像(任意)
このターンに添付されたチラシ画像があれば、世界観・配色・トンマナの参考にしてください。
※チラシ添付がなくても、Step 01 の指示があれば動作可能です。

---

# ⚠️ 必須ルール
- 縦横比: 16:9 または 3:2 横長
- 距離感: ロングショット〜ミドルショット(引きの構図)
- 文字は入れない(コピーはHTML側で重ねる)
- 1枚のみ生成
- メインコピーが乗る余白を残す
- 共感/憧れ/世界観を喚起する感情寄りの絵

---

# ⚠️ 次のStep 04で「サービス画像」を作るので差別化を意識
本画像は引きの構図・雰囲気優先・空間多めにしてください。
次ステップで作るサービス画像はクローズアップ・ディテール優先の別物です。

---

# ⚠️ 出力ルール
- 画像のみ出力
- テキスト解説は不要
save完了後にやること

生成されたFV画像を右クリックでPC保存(例: fv.png)。

Step 04 と Step 06 で使います。

次: サービス説明画像 arrow_forward
STEP04

ChatGPTでサービス説明画像を生成

サービス説明画像生成プロンプト

目的:サービス内容を視覚的に伝える補助画像をもう1枚作る

出力:4:3 または 1:1 のサービス説明画像1枚

priority_high注意 ★Step 03 のFV画像を添付

ChatGPT に Step 03 で生成した FV画像を添付してから貼り付けてください。

FV画像を見せることで、ChatGPT が「FVと違う絵を作ろう」と意識し、似た画像を量産しません。

💡 旧版ではチラシ画像も再添付させていましたが、ChatGPT 無料版のアップロード枠(1日2枚目安)を節約するため、FV画像のみで動作する設計に変更しています。

中身を見る
# 役割
あなたは超一流のWebアートディレクター兼LPビジュアル設計者です。LP中段の「サービス説明」セクションで使う補助画像を1枚生成してください。

---

# 引き継ぎ
このChat内の Step 01 で出力した「サービス画像用ビジュアル指示」セクションを、絶対の正として参照してください。
そこに書かれた距離感・被写体・構図のポイント・縦横比をそのまま反映します。

---

# 添付画像
このターンには Step 03 で生成した FV画像 を添付してください(必須)。
その画像と「決定的に違う絵」を作るのが本ステップの最重要ミッションです。

---

# ⚠️ 必須: 添付した FV画像とは「決定的に違う絵」にする

以下を **すべて満たす** 形で差別化してください(1つだけではダメ):

1. 距離感を変える: FV が引きならサービス画像はアップ(または逆)
2. 被写体タイプを変える: FV が人物中心ならサービス画像はモノ・道具・素材中心(または逆)
3. 「2枚並べたとき明らかに違う情報を伝えている」状態を目指す

同じシーンの似た構図は絶対に避けてください。

---

# ⚠️ 必須ルール
- 縦横比: 4:3 または 1:1 正方形寄り
- 距離感: クローズアップ〜ミドル(寄りの構図)
- 文字は入れない
- 1枚のみ生成
- USP3つのうち1つを視覚的に表現
- チラシ(Step 02)と配色・トンマナは統一
- 商業利用に耐える品質

---

# ⚠️ 出力ルール
- 画像のみ出力
- テキスト解説は不要
save完了後にやること

画像を保存(例: service.png)。

これでChatGPTの画像生成は終わり。

Step 05 は ChatGPT のまま続きます。

次: 設計書を一括生成 arrow_forward
smart_toyChatGPT

設計書を一括で生成する

Step 01〜04で集めた情報を元に、ChatGPTにLP構成・フォント・アイコン・カラー設計を一気に出させます。1回のメッセージで完結します。

STEP05

ChatGPTで設計書を一括生成

LP設計プロンプト(自動選定ロジック込み)

目的:LP構成・採用フォント・採用アイコン・カラー変数を一括で決定する

出力:typography-spec / icons-spec / カラー変数 / セクション構成(ChatGPTの応答内)

smart_toy進め方

Step 01〜04 と 同じチャットの続きで、下のプロンプトをそのまま送ります。

添付ファイル不要(これまでの会話履歴とテキスト報告から自動で参照されます)。

中身を見る
⚠️ このターンで絶対にやってはいけないこと
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 画像を生成しない(画像生成ツールを起動しない)
2. 応答を途中で切らない(1メッセージで完結させる)
3. プレースホルダーを残さない([Step01から記入]等は全て具体値に展開)
4. 「以下省略」「同様に」等の省略を使わない
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# 役割
あなたはWebアートディレクターのプロンプトエンジニアです。
これまでの会話(Step 01〜04)を元に、Claude Design に貼り付けるだけで完成形LPが生成される「LP実装プロンプト」を1つ作成してください。

---

# このターンの最終ゴール

最終ゴールは、ユーザーがコピペで Claude Design に渡せる「**完成された実装プロンプト**」を出力すること。
設計書ではなく、**そのまま貼って動くプロンプト**を作るのがミッションです。

---

# 参照する情報(全てこのChat内の履歴を参照)

- Step 01 のテキスト報告(サービス情報・コピー・カラー・トンマナ・FV/サービス画像のビジュアル指示)
- Step 02 のチラシ画像(トンマナ参照)
- Step 03 のFV画像、Step 04 のサービス画像(LP に使用)

※添付ファイル不要。会話履歴から読み取ること。

---

# 内部処理(あなたが頭の中で行う作業)

## 1. トンマナ判定

Step 01 の業種・トンマナ記述から、以下6カテゴリの1つに判定:

| ID | トンマナ | キーワード例 |
|---|---|---|
| A | 信頼感・上品 | 士業/医療/高級/老舗/フォーマル |
| B | 親しみ・柔らかい | 飲食/教室/サロン/子育て/アットホーム |
| C | モダン・テック | IT/SaaS/D2C/シンプル/革新 |
| D | 力強い・スポーティ | ジム/格闘技/挑戦/結果 |
| E | ポップ・賑やか | キャンペーン/セール/エンタメ |
| F | ミニマル・洗練 | ブランド/美容/アート/静謐 |

## 2. フォント選定(判定IDに応じて)

| 判定 | 見出し | 本文 | アクセント |
|---|---|---|---|
| A | Noto Serif JP wght 900 | Noto Sans JP wght 400 | Cormorant Garamond wght 600 |
| B | Zen Maru Gothic wght 700 | Noto Sans JP wght 400 | Caveat wght 600 |
| C | Zen Kaku Gothic New wght 900 | Noto Sans JP wght 400 | Space Grotesk wght 600 |
| D | RocknRoll One | Noto Sans JP wght 500 | Bebas Neue |
| E | Reggae One | Kosugi Maru | M PLUS 1p wght 800 |
| F | Noto Serif JP wght 400 | Noto Sans JP wght 300 | Inter wght 600 |

## 3. Material Symbols スタイル選定

| 判定 | スタイル |
|---|---|
| A | Sharp |
| B | Rounded |
| C | Outlined |
| D | Outlined (FILL=1) |
| E | Rounded (FILL=1) |
| F | Outlined (wght=300) |

## 4. アイコン割当(全業種共通)

- FV CTA: arrow_forward
- USP1/2/3: bolt / verified / favorite
- 利用フロー1/2/3: counter_1 / counter_2 / counter_3
- お客様の声: format_quote, star
- FAQ: expand_more
- 連絡: call, mail, location_on, schedule
- 業種特化(該当業種があれば): 飲食=restaurant / 美容=spa / ジム=fitness_center / 教室=school / 医療=medical_services / 小売=storefront / 不動産=home / 建築=construction / 修理=build / 運送=local_shipping / 美容医療=health_and_safety

## 5. ヒーローアニメーション選定(判定IDに応じて1つ)

判定IDに対応する以下のアニメーションセットを採用:

- A: 文字フェードイン(0.6s) + 背景1.05倍ズーム(8秒) / パーティクル禁止
- B: 文字フェード+バウンス / CTAボタン呼吸アニメ(2秒周期) / 円形グラデ浮遊
- C: パララックス(背景0.4倍速) + マウス追従光 + パーティクル8〜12個 + マグネットCTA
- D: 文字スライドイン(split-text 1文字ずつ) + 背景ズームアウト + CTA赤発光パルス
- E: 文字バウンスイン + 紙吹雪パーティクル + キラキラSVG + CTA常時バウンス + 色相変化
- F: 文字フェード(0.8s) + ノイズグレイン(SVG filter) / 派手な動き禁止

---

# あなたの応答フォーマット(厳守)

応答は以下の3パートで構成します。

## 【パート1】 判定結果(短く報告)

判定: [A〜F] [トンマナ名]
根拠: [1行で]

採用フォント: 見出し[ ] / 本文[ ] / アクセント[ ]
Material Symbols: [スタイル名]
ヒーローアニメーション: [採用パターンの1行サマリー]

## 【パート2】 Claude Design 用 LP実装プロンプト

以下からプロンプト本体です。
ユーザーは「ここから ✂︎」と「✂︎ ここまで」の間を全選択コピーして、Claude Design に貼り付けます。
コードブロック(```)で囲まずに出力すること(ネスト回避のため)。

ここから ✂︎ ────────────────────────────

# LP実装プロンプト(Claude Design用)

あなたは超一流のフロントエンドエンジニア兼Webデザイナーです。
以下の仕様に厳密に従って、商用クオリティのランディングページを1ファイルのHTMLで実装してください。

## 0. 画像最適化(最重要・最初に守る・絶対に省略しない)

⚠️ このセクションは Cloudflare Pages 公開のための死活的な仕様です。絶対に守ってください。

- 画像は **WebP形式・幅1200px以下・各500KB以下** に圧縮
- 可能なら **画像を HTML に base64 で埋め込み(1ファイル完結)**
  - 理由: ユーザーは公開時に「フォルダごとアップロード」ではなく「HTMLファイル1個だけアップロード」したい
  - base64 埋め込みなら index.html 1ファイルだけで完結する
- base64 化が難しい場合は別ファイル参照でもOK
  - その場合は相対パス(./fv.webp 等)で参照
- **全体ファイルサイズ 25MB以下を厳守**(Cloudflare Pages の1ファイル上限)
- base64 化するとデータ量が約1.33倍に膨張する点を考慮

## 1. 基本情報
- サービス名: [Step01から具体値で展開]
- 業種: [Step01から具体値で展開]
- ターゲット: [Step01から具体値で展開]
- 採用トンマナ: [A〜Fの名称]

## 2. メインコピー・サブコピー・CTA
- メインコピー: [Step01から具体値]
- サブコピー: [Step01から具体値]
- CTAテキスト: [Step01から具体値]

## 3. 使用画像(2枚のみ・別途アップロード)
- FV画像(横長16:9または3:2): ヒーロー背景に全画面で使用
- サービス説明画像(4:3または1:1): サービス詳細セクションに使用
- 装飾用画像は絶対に追加しないこと。装飾は Material Symbols + CSS で実装

## 4. カラーパレット(CSS変数で実装)

[判定結果のカラーHEXを以下に具体値で展開]

  :root {
    --color-main: #XXXXXX;
    --color-sub: #XXXXXX;
    --color-base: #XXXXXX;
    --color-ink: #1a1424;
    --color-ink-2: #4a3f5c;
    --color-muted: #8a7f96;
  }

## 5. タイポグラフィ

[判定結果のフォントを以下に具体値で展開。Google Fonts URLの family= は実際のフォント名でURLエンコード済みの形にすること]

  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=[実際のフォント名]&display=swap" rel="stylesheet">

  :root {
    --font-heading: '[判定見出しフォント]', sans-serif;
    --font-body: '[判定本文フォント]', sans-serif;
    --font-accent: '[判定アクセントフォント]', serif;
  }

## 6. アイコン(Material Symbols)

  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+[判定スタイル]:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />

アイコン割当:
- FV CTA: arrow_forward
- USP1: bolt / USP2: verified / USP3: favorite
- 利用フロー: counter_1, counter_2, counter_3
- お客様の声: format_quote, star
- FAQ: expand_more
- 連絡: call, mail, location_on, schedule
- 業種特化: [該当業種のアイコン名を1つ採用]

## 7. セクション構成(9セクション)

### ① ヒーロー
- 全画面 FV画像背景
- 左側(モバイル中央)にメインコピー + サブコピー + CTAボタン
- メインコピー: [具体値]
- サブコピー: [具体値]
- CTAテキスト: [具体値]

### ② 共感セクション
- 見出し: [業界の課題に共感する1行を生成]
- 本文: [課題→共感→解決示唆 を2〜3文で生成]
- 装飾はアイコンのみ、画像なし

### ③ USP(3カラム)
- USP1見出し: [Step01から具体値] / 本文: [具体値] / アイコン: bolt
- USP2見出し: [Step01から具体値] / 本文: [具体値] / アイコン: verified
- USP3見出し: [Step01から具体値] / 本文: [具体値] / アイコン: favorite

### ④ サービス詳細
- サービス説明画像を右または背景に配置
- サービス一覧(箇条書き+Material Symbols)
- サービス項目: [Step01の業種から想定して5〜7個を生成]

### ⑤ 利用フロー(3STEP横並び)
- STEP1: お問い合わせ / counter_1
- STEP2: 現地確認・ご提案 / counter_2
- STEP3: [業種に応じた最終ステップ名] / counter_3

### ⑥ お客様の声(カード2〜3件)
- format_quote / star
- 実装例コピー: [業種に合った想定声を2〜3個生成]

### ⑦ FAQ(アコーディオン)
- expand_more
- 質問例: [業種に合ったFAQを3〜5個生成]

### ⑧ 最終CTA
- メインカラー系グラデーション背景
- CTAボタン + 連絡アイコン(call, mail, location_on, schedule)

### ⑨ フッター
- 会社名・電話番号・対応エリア・営業時間・プライバシーポリシー
- 白背景 + 細罫線

## 8. ヒーローセクション可読性の5層防御(必須・省略禁止)

  /* 1. 背景画像にダークオーバーレイ */
  .hero::before {
    content: "";
    position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0.25) 50%, rgba(0,0,0,0.55) 100%);
    z-index: 1;
    pointer-events: none;
  }

  /* 2. ヘッダー半透明背景+backdrop-filter */
  header {
    background: rgba(0,0,0,0.35);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }

  /* 3. テキストにtext-shadow */
  .logo, header nav a, .hero h1, .hero p {
    text-shadow: 0 2px 12px rgba(0,0,0,0.65);
  }

  /* 4. スクロール100px超で不透明ヘッダー */
  header.scrolled {
    background: rgba(255,255,255,0.96);
  }
  header.scrolled .logo, header.scrolled nav a {
    color: var(--color-ink);
    text-shadow: none;
  }
  /* JS: window.scrollY > 100 のとき .scrolled を付与 */

  /* 5. WCAGコントラスト比 4.5:1 確保 */
  /* 暗背景上は #fff、明背景上は #1a1424。中間色のグレーはヒーロー上で禁止 */

## 9. ヒーローアニメーション(判定[A〜F]・必須実装)

⚠️ 実装必須・省略禁止 ⚠️
このセクションは Claude Design への「絶対に実装すべき」指示です。
ここに書かれたCSS/JSコードを、生成するHTMLに必ず含めてください。
「シンプルな静的ページ」では不十分です。動きが必須です。

[ChatGPTへの内部指示: 判定したID(A〜F)に対応する以下のブロックだけを完全展開し、他のブロックは削除すること。展開するブロックは「実装手順 + CSS全文 + JS全文」の3点セットで構成する]

[判定がAの場合の実装ブロック]
=== A: 信頼・上品 ===

実装ステップ(必須):
1. メインコピー .hero h1 に CSS animation を適用
2. サブコピー .hero p に 0.2s 遅延で同アニメーション
3. CTAボタン .hero .cta に 0.4s 遅延で同アニメーション
4. 背景画像 .hero-bg にゆっくりズームイン(8秒)

CSS(<style>内に追加):

  @keyframes heroFadeUp {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes heroBgZoom {
    from { transform: scale(1.0); }
    to   { transform: scale(1.05); }
  }
  .hero h1     { opacity: 0; animation: heroFadeUp 0.6s ease-out 0.0s forwards; }
  .hero p      { opacity: 0; animation: heroFadeUp 0.6s ease-out 0.2s forwards; }
  .hero .cta   { opacity: 0; animation: heroFadeUp 0.6s ease-out 0.4s forwards; }
  .hero-bg     { animation: heroBgZoom 8s ease-out forwards; }

  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta, .hero-bg {
      animation: none; opacity: 1;
    }
  }

JS は不要(CSSのみで完結)


[判定がBの場合の実装ブロック]
=== B: 親しみ・柔らかい ===

実装ステップ(必須):
1. .hero h1, .hero p, .hero .cta にバウンスイージングのフェードアップ
2. CTAボタンに常時呼吸アニメーション(2秒周期)
3. 背景に円形グラデーション2〜3個を絶対配置し、ゆっくり浮遊させる

CSS(<style>内に追加):

  @keyframes heroBounceUp {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes ctaBreath {
    0%, 100% { transform: scale(1.0); }
    50%      { transform: scale(1.03); }
  }
  @keyframes blobFloat {
    0%, 100% { transform: translate(0, 0); }
    50%      { transform: translate(20px, -20px); }
  }

  .hero h1   { opacity: 0; animation: heroBounceUp 0.7s cubic-bezier(.34,1.56,.64,1) 0.0s forwards; }
  .hero p    { opacity: 0; animation: heroBounceUp 0.7s cubic-bezier(.34,1.56,.64,1) 0.15s forwards; }
  .hero .cta { opacity: 0; animation: heroBounceUp 0.7s cubic-bezier(.34,1.56,.64,1) 0.3s forwards, ctaBreath 2s ease-in-out 1s infinite; }

  .hero-blob {
    position: absolute; border-radius: 50%; filter: blur(40px); opacity: 0.4;
    pointer-events: none;
  }
  .hero-blob-1 { width: 200px; height: 200px; background: var(--color-main); top: 20%; left: 10%; animation: blobFloat 12s ease-in-out infinite; }
  .hero-blob-2 { width: 150px; height: 150px; background: var(--color-sub); bottom: 20%; right: 15%; animation: blobFloat 14s ease-in-out -3s infinite; }

  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta, .hero-blob { animation: none; opacity: 1; }
  }

HTML追加(ヒーロー内に):

  <div class="hero-blob hero-blob-1"></div>
  <div class="hero-blob hero-blob-2"></div>


[判定がCの場合の実装ブロック]
=== C: モダン・テック ===

実装ステップ(必須):
1. .hero h1, .hero p, .hero .cta にフェードアップ
2. 背景画像 .hero-bg にパララックス(scrollY × 0.4)
3. マウス追従の光 .hero-cursor-light を JS で動かす
4. パーティクル8〜12個を div で配置
5. CTAボタンにマグネット効果(マウス近接で引き寄せ)

CSS(<style>内に追加):

  @keyframes heroFadeUp {
    from { opacity: 0; transform: translateY(12px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  .hero h1   { opacity: 0; animation: heroFadeUp 0.5s ease-out 0.0s forwards; }
  .hero p    { opacity: 0; animation: heroFadeUp 0.5s ease-out 0.2s forwards; }
  .hero .cta { opacity: 0; animation: heroFadeUp 0.5s ease-out 0.4s forwards; }

  .hero-cursor-light {
    position: absolute; width: 120px; height: 120px; border-radius: 50%;
    background: radial-gradient(circle, rgba(255,255,255,0.3), transparent);
    pointer-events: none; transition: left 0.1s ease-out, top 0.1s ease-out;
    mix-blend-mode: screen; z-index: 2;
  }
  .hero-particle {
    position: absolute; width: 4px; height: 4px; border-radius: 50%;
    background: rgba(255,255,255,0.6); pointer-events: none;
    animation: particleFloat linear infinite;
  }
  @keyframes particleFloat {
    from { transform: translateY(100vh) translateX(0); opacity: 0; }
    10%  { opacity: 1; }
    90%  { opacity: 1; }
    to   { transform: translateY(-100px) translateX(50px); opacity: 0; }
  }

  @media (max-width: 768px) {
    .hero-cursor-light { display: none; }
    .hero-particle:nth-child(n+6) { display: none; }
  }
  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta { animation: none; opacity: 1; }
    .hero-particle, .hero-cursor-light { display: none; }
  }

JS(<script>内に追加):

  // パララックス
  window.addEventListener('scroll', () => {
    const bg = document.querySelector('.hero-bg');
    if (bg) bg.style.transform = `translateY(${window.scrollY * 0.4}px)`;
  });

  // マウス追従の光(PC のみ)
  if (window.matchMedia('(hover: hover)').matches) {
    const light = document.querySelector('.hero-cursor-light');
    document.querySelector('.hero')?.addEventListener('mousemove', (e) => {
      if (light) {
        light.style.left = (e.offsetX - 60) + 'px';
        light.style.top  = (e.offsetY - 60) + 'px';
      }
    });

    // マグネットCTA
    const cta = document.querySelector('.hero .cta');
    cta?.addEventListener('mousemove', (e) => {
      const r = cta.getBoundingClientRect();
      const x = e.clientX - r.left - r.width/2;
      const y = e.clientY - r.top - r.height/2;
      cta.style.transform = `translate(${x*0.15}px, ${y*0.15}px)`;
    });
    cta?.addEventListener('mouseleave', () => cta.style.transform = '');
  }

  // パーティクル生成(モバイル半減)
  const heroEl = document.querySelector('.hero');
  if (heroEl && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const count = window.innerWidth < 768 ? 5 : 10;
    for (let i = 0; i < count; i++) {
      const p = document.createElement('div');
      p.className = 'hero-particle';
      p.style.left = Math.random() * 100 + '%';
      p.style.animationDuration = (15 + Math.random() * 10) + 's';
      p.style.animationDelay = -Math.random() * 15 + 's';
      heroEl.appendChild(p);
    }
  }

HTML追加(ヒーロー内に):

  <div class="hero-cursor-light"></div>


[判定がDの場合の実装ブロック]
=== D: 力強い・スポーティ ===

実装ステップ(必須):
1. メインコピーを <span> で1文字ずつ分割
2. 各 <span> に左からスライドインアニメーション(0.05s ディレイずらし)
3. 背景画像 .hero-bg を拡大→1.0倍ズームアウト(2秒)
4. CTAボタンに赤系発光パルス

CSS(<style>内に追加):

  @keyframes heroSlideIn {
    from { opacity: 0; transform: translateX(-40px); }
    to   { opacity: 1; transform: translateX(0); }
  }
  @keyframes heroBgZoomOut {
    from { transform: scale(1.2); }
    to   { transform: scale(1.0); }
  }
  @keyframes ctaGlow {
    0%, 100% { box-shadow: 0 0 0 0 rgba(220,40,40, 0.4); }
    50%      { box-shadow: 0 0 0 12px rgba(220,40,40, 0); }
  }

  .hero h1 span {
    display: inline-block; opacity: 0;
    animation: heroSlideIn 0.5s cubic-bezier(.6,.04,.98,.34) forwards;
  }
  .hero p    { opacity: 0; animation: heroSlideIn 0.5s ease-out 0.6s forwards; }
  .hero .cta { opacity: 0; animation: heroSlideIn 0.5s ease-out 0.8s forwards, ctaGlow 2s ease-in-out 2s infinite; }
  .hero-bg   { animation: heroBgZoomOut 2s ease-out forwards; }

  @media (prefers-reduced-motion: reduce) {
    .hero h1 span, .hero p, .hero .cta, .hero-bg { animation: none; opacity: 1; }
  }

JS(<script>内に追加):

  // メインコピーを1文字ずつ <span> で分割
  const h1 = document.querySelector('.hero h1');
  if (h1 && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const text = h1.textContent;
    h1.innerHTML = '';
    [...text].forEach((char, i) => {
      const s = document.createElement('span');
      s.textContent = char === ' ' ? ' ' : char;
      s.style.animationDelay = (i * 0.05) + 's';
      h1.appendChild(s);
    });
  }


[判定がEの場合の実装ブロック]
=== E: ポップ・賑やか ===

実装ステップ(必須):
1. メインコピーを <span> で1文字ずつ分割しバウンスイン
2. 背景に紙吹雪パーティクル(5〜10個)を div で配置
3. キラキラSVGを3〜5個ランダム点滅
4. CTAボタンに常時バウンス
5. 背景グラデーションを色相変化(10秒周期)

CSS(<style>内に追加):

  @keyframes heroBounceIn {
    0%   { opacity: 0; transform: translateY(40px) scale(0.5); }
    60%  { opacity: 1; transform: translateY(-10px) scale(1.05); }
    100% { opacity: 1; transform: translateY(0) scale(1); }
  }
  @keyframes ctaBounce {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-4px); }
  }
  @keyframes confettiFall {
    from { transform: translateY(-20px) rotate(0); opacity: 1; }
    to   { transform: translateY(110vh) rotate(720deg); opacity: 0; }
  }
  @keyframes sparkleTwinkle {
    0%, 100% { opacity: 0; transform: scale(0.5); }
    50%      { opacity: 1; transform: scale(1.2); }
  }
  @keyframes hueRotate {
    from { filter: hue-rotate(0deg); }
    to   { filter: hue-rotate(360deg); }
  }

  .hero h1 span {
    display: inline-block; opacity: 0;
    animation: heroBounceIn 0.6s cubic-bezier(.68,-0.55,.27,1.55) forwards;
  }
  .hero p    { opacity: 0; animation: heroBounceIn 0.6s cubic-bezier(.68,-0.55,.27,1.55) 0.5s forwards; }
  .hero .cta { opacity: 0; animation: heroBounceIn 0.6s cubic-bezier(.68,-0.55,.27,1.55) 0.7s forwards, ctaBounce 2s ease-in-out 1.5s infinite; }

  .hero-bg { animation: hueRotate 10s linear infinite; }

  .confetti {
    position: absolute; width: 10px; height: 10px; top: -20px;
    pointer-events: none; animation: confettiFall linear infinite;
  }
  .sparkle {
    position: absolute; font-size: 24px; pointer-events: none;
    animation: sparkleTwinkle 1.5s ease-in-out infinite;
  }

  @media (max-width: 768px) {
    .confetti:nth-child(n+4) { display: none; }
  }
  @media (prefers-reduced-motion: reduce) {
    .hero h1 span, .hero p, .hero .cta, .hero-bg, .confetti, .sparkle {
      animation: none; opacity: 1;
    }
  }

JS(<script>内に追加):

  // メインコピーを1文字ずつ <span>
  const h1 = document.querySelector('.hero h1');
  if (h1 && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const text = h1.textContent;
    h1.innerHTML = '';
    [...text].forEach((char, i) => {
      const s = document.createElement('span');
      s.textContent = char === ' ' ? ' ' : char;
      s.style.animationDelay = (i * 0.06) + 's';
      h1.appendChild(s);
    });
  }

  // 紙吹雪
  const heroEl = document.querySelector('.hero');
  if (heroEl && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const colors = ['#ff4d8d','#ffd23f','#06d6a0','#9d4edd','#4361ee'];
    const count = window.innerWidth < 768 ? 5 : 8;
    for (let i = 0; i < count; i++) {
      const c = document.createElement('div');
      c.className = 'confetti';
      c.style.left = Math.random() * 100 + '%';
      c.style.background = colors[i % colors.length];
      c.style.animationDuration = (5 + Math.random() * 3) + 's';
      c.style.animationDelay = -Math.random() * 5 + 's';
      heroEl.appendChild(c);
    }

    // キラキラ
    const sparkles = ['✦','✧','★'];
    for (let i = 0; i < 4; i++) {
      const s = document.createElement('span');
      s.className = 'sparkle';
      s.textContent = sparkles[i % sparkles.length];
      s.style.left = Math.random() * 90 + '%';
      s.style.top  = Math.random() * 60 + '%';
      s.style.animationDelay = -Math.random() * 1.5 + 's';
      heroEl.appendChild(s);
    }
  }


[判定がFの場合の実装ブロック]
=== F: ミニマル・洗練 ===

実装ステップ(必須):
1. .hero h1, .hero p, .hero .cta に静かなフェードイン(0.8s、ゆっくり順次)
2. 背景にうっすらノイズグレイン(SVG turbulence filter, opacity 0.05)
3. それ以外の装飾は一切ナシ

CSS(<style>内に追加):

  @keyframes heroFadeOnly {
    from { opacity: 0; }
    to   { opacity: 1; }
  }
  .hero h1   { opacity: 0; animation: heroFadeOnly 0.8s ease-out 0.0s forwards; }
  .hero p    { opacity: 0; animation: heroFadeOnly 0.8s ease-out 0.3s forwards; }
  .hero .cta { opacity: 0; animation: heroFadeOnly 0.8s ease-out 0.6s forwards; }

  .hero-noise {
    position: absolute; inset: 0; pointer-events: none;
    opacity: 0.05; mix-blend-mode: multiply; z-index: 2;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  }

  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta { animation: none; opacity: 1; }
  }

HTML追加(ヒーロー内に):

  <div class="hero-noise"></div>

JS は不要

## 10. 共通必須仕様

- 全アニメーションは prefers-reduced-motion: reduce で停止
- GSAP / Lottie / 重いライブラリ禁止
- CSS animations + Web Animations API + IntersectionObserver のみで実装
- スマホではパーティクル半減、マウス追従系は無効化(HAS_HOVER判定)
- 1st paint時点で文字が読めること(JS失敗時のフォールバック)
- レスポンシブ(スマホファースト)
- OGP / meta / JSON-LD あり
- アクセシビリティ(alt, aria)配慮
- ホバーインタラクション(CTAボタンの矢印が右に動く等)

---

以上の仕様に従って、1ファイル完結のHTMLでLPを実装してください。
画像2枚(FV / サービス説明)はこの後アップロードします。

✂︎ ここまで ────────────────────────────

## 【パート3】 使い方

1. 上の「ここから ✂︎」〜「✂︎ ここまで」の間を全選択コピー
2. claude.ai/design を新しいタブで開く
3. コピーしたプロンプトを貼り付け
4. FV画像 と サービス説明画像 の2枚を添付して送信
5. 応答が途中で切れた場合は「続きを出して」と再送

---

# ⚠️ あなたへの最終確認事項

- [Step01から具体値で展開] と書かれた箇所は **すべて実際の値で埋める**
- [判定見出しフォント] のようなプレースホルダーは **実際のフォント名・URL・IDで展開**
- [判定がAの場合の実装ブロック]〜[判定がFの場合の実装ブロック]の中から **判定したIDの実装ブロックだけ採用** し、他は完全削除
- ⚠️【最重要】「## 0. 画像最適化」セクションは絶対に省略しない。これが無いと公開時に致命的トラブルが発生します。応答冒頭に必ず書ききること。
- ⚠️【最重要】「## 9. ヒーローアニメーション」セクションでは、判定IDに対応する **CSS全文 + JS全文 + HTML追加 + 実装ステップ** を完全展開する。「アニメ仕様の説明文だけ」で終わらせない。コードを必ず書く
- ⚠️【最重要】「## 10. 共通必須仕様」セクションも省略しない。応答末尾まで書き切ること
- 「ここから ✂︎」「✂︎ ここまで」の囲みは **そのまま残す**(ユーザーがコピー範囲を視認するため)
- 出力は1メッセージで完結。途中で切らない
- もし応答が長くなる場合は、各セクションを「コンパクトに、ただし完全に」書く。省略はしない

# ✅ セクション漏れチェック(応答前に自分で必ず確認)
出力に以下11セクションがすべて含まれていることを確認してください:
- [ ] ## 0. 画像最適化 ← これが無いとアウト
- [ ] ## 1. 基本情報
- [ ] ## 2. メインコピー・サブコピー・CTA
- [ ] ## 3. 使用画像
- [ ] ## 4. カラーパレット
- [ ] ## 5. タイポグラフィ
- [ ] ## 6. アイコン
- [ ] ## 7. セクション構成
- [ ] ## 8. ヒーローセクション可読性の5層防御
- [ ] ## 9. ヒーローアニメーション(具体CSS/JSコード)
- [ ] ## 10. 共通必須仕様
check_circle完了後にやること(超重要)

ChatGPTの応答には 3つのパート があります。

  • パート1: 判定結果(確認用)
  • パート2: LP実装プロンプト本体 ← これが本番
  • パート3: 使い方の案内

パート2 の中の 「ここから ✂︎」〜「✂︎ ここまで」の間 を全選択コピーしてください。

これを Step 06 で claude.ai/design にそのまま貼り付けます。

画像2枚(FV / サービス説明)は Step 06 で Claude Design に直接アップロードします。

infoもしプロンプトの内容が気に入らない場合

パート2 を見て「もっと柔らかい印象にして」「色を青系に変更して」など、追加で指示してOKです。

ChatGPT が修正版のプロンプトを再出力します。

supportもし応答が途中で切れた場合

ChatGPT に「続きを出して」とだけ送ってください。

残りのプロンプトが出てきます。

それでも上限に達した場合は、Step 05 だけを Claude に振り替えるルートがあります。

ページ下部の 🆘 困ったときのプランB を参照してください。

次: Claude Design実装 arrow_forward
paletteClaude Design

Claude DesignでHTML化する

Step 05で出力された「LP実装プロンプト」を Claude Design に貼り付けるだけ。コピペ1発でLPが出来上がります。

STEP06

Claude DesignでHTMLを実装

目的:Step 05で出力された「LP実装プロンプト」を使い、Claude Design に貼り付けて HTML を生成する

出力:完成形LP(standalone HTML、エクスポート可能)

check_circleこのステップは超シンプルです

Step 05 で ChatGPT が出力した Part 2 のコードブロック内のプロンプト を、Claude Design にそのまま貼り付けます。

あなたが書くものは何もありません。

ChatGPT が代わりに完成プロンプトを書いてくれています。

手順

1
Step 05 の応答内「ここから ✂︎」〜「✂︎ ここまで」を全選択コピー

ChatGPT の応答のパート2 に ここから ✂︎ ─────✂︎ ここまで ───── で囲まれた範囲があります。その間を全選択してコピーしてください。

2
claude.ai/design を新しいタブで開く

初めて Claude Design を使う場合、Claude Pro契約が必要です。

3
プロンプトを貼り付け + FV画像 + サービス画像を添付して送信

Step 03 で保存した FV画像 と Step 04 で保存したサービス説明画像の 2枚を添付 してから送信します。

Claude Design が HTML を生成し、プレビューが表示されます。

4
プレビューで確認、必要なら修正指示

例: 「ヒーロー画像をもっと大きく」「CTAボタンを赤にして」など、Claude Design に直接日本語で指示すればOKです。

tips_and_updatesうまくいかないときは

Step 05 で生成されたプロンプトの中に「[Step01から記入]」のようなプレースホルダーが残っている場合があります。

その場合は ChatGPT に「プレースホルダーを全部具体値に展開して再出力して」と送ってください。

次: フォーム作成 arrow_forward
dynamic_formGoogle フォーム

予約・申込の受け口を作る

Googleフォームを作り、LPのCTAボタンと連携させます。

STEP07

Googleフォームを作成してLPに組み込む

目的:LPの予約/申込/問い合わせの受け口を作り、CTAボタンに連携させる

出力:Googleフォーム + 短縮URL + Claude Designへの埋め込み

① 質問項目をChatGPTに考えてもらう

Step 01〜06と同じChatGPTの会話に続けて、以下を送ります。

中身を見る
Step 06で実装したLPに合うGoogleフォームの質問項目を、10項目以内で提案してください。

【目的】 [予約/参加確認/申込/アンケート など、サービスに合わせて記入]
【最低限聞きたいこと】 名前 / 連絡先 / 希望日時 など

【出力形式】
1. 質問文
   - 入力タイプ(記述式/段落/ラジオボタン/チェックボックス/プルダウン/日付/時刻)
   - 必須(はい/いいえ)
   - 補足説明(必要に応じて)

【ルール】
- 質問の順番は短い・選択肢式 → 重い・記述式 の順
- 個人情報の質問は最後にまとめる
- 任意質問は明示する

② Googleフォームを作る

1
forms.google.com を開き、ChatGPTが提案した質問項目を入力
2
右上「送信」→ リンクアイコン → 「URLを短縮」にチェック → コピー

https://forms.gle/xxxxx 形式の短縮URLがクリップボードに入ります。

3
シークレットウィンドウでフォームが開くか動作確認

Chrome: Ctrl+Shift+N / Mac: ⌘+Shift+N。ログイン中アカウントと挙動が違うことがあるので必ずシークレットで確認。

③ Claude Design に URL を組み込む指示

Claude Designで開いているLPに、以下を追加指示します。

中身を見る
以下のGoogleフォーム短縮URLを、LP内の「予約ボタン」「申込ボタン」のリンク先に設定してください。

【フォームURL】
https://forms.gle/xxxxx

【埋め込み方針】
- ヒーローセクションの大きなCTAボタン
- ページ中段の予約セクションのボタン
- 最終CTAセクションのボタン
- 上記すべて同じフォームURLに統一

【ボタン仕様】
- target="_blank" で別タブ開き
- rel="noopener noreferrer" を付与(セキュリティ対策)
- aria-label に「予約フォームを開く」を設定
- ホバー時に背景色が変化
- スマホでは横幅ほぼ100%(タップしやすさ優先)

【テキスト案】
- 「今すぐ予約する」「無料で申し込む」「お問い合わせはこちら」等

【最終確認】
- ボタンクリックでフォームが開くか動作確認してから完成としてください

④ Claude Designで動作確認

プレビュー画面で各ボタンを実際にクリックし、Googleフォームが別タブで開くことを確認します。

tips_and_updates後からフォームを差し替えたくなったら

新しいフォームを作って差し替えるのではなく、古いフォームの編集を続けて質問だけ変更するのが安全。

URLが変わらないので公開済みLPの修正が不要になります。

次: Cloudflare公開 arrow_forward
cloudCloudflare Pages

インターネットに公開する

完成したHTMLをCloudflare Pagesに公開して、世界中からアクセスできるWebページにします。

STEP08

index.html化してCloudflare Pagesに公開

目的:作ったWebページをインターネットに無料公開する

出力:https://○○.pages.dev 形式の公開URL

① Claude DesignからHTMLをダウンロード

完成したら、画面右上の「Share」を押して「Export as standalone HTML」を選択します。

準備ができると左側に Download landing page のような黒いバーボタンが出ます(表示まで5〜10分かかる場合あり)。クリックでHTMLファイルが1つダウンロードされます。

infoダウンロードされるファイル名に注意

sample.html」「design-export.html」など、Claude Designが自動で付けた名前になっています。

次の②で名前を変えます。

tips_and_updatesエクスポート前に出しておくと困らない指示
infoStep 06 の段階で1ファイル完結(base64埋め込み)になっていれば

Step 05 の新方式で Claude Design に「base64埋め込み・25MB以下」を最初から指示しているため、たいていの場合は何もせずエクスポートできます。

以下の prompt は 「Claude Designが対応していなかった場合の保険」 として用意しています。

エクスポート前に念のため Claude Design に送ると安全です。

中身を見る
HTMLをエクスポートする前に、以下を確認してください。
・画像はWebP形式(品質80)、幅1200px以下、500KB以下に圧縮
・画像はHTMLに埋め込み(base64)でも、別ファイルでもOK
・全体のファイルサイズは25MB以下

② ファイル名を「index.html」に変える ★最重要

priority_highここはよく忘れる。飛ばすと真っ白!

ファイル名が違うと、Cloudflareで公開しても真っ白なページになります。

必ずindex.htmlにしてから次へ進んでください。

1
デスクトップに新しいフォルダを作る

名前は何でもOK。例: sakura-cafe

2
ダウンロードしたHTMLファイルをそのフォルダに移動
3
右クリック→「名前の変更」→ index.html に変える

.html 拡張子は消さないこと。

check_circle正しい状態
sakura-cafe/ ← デスクトップに作ったフォルダ
└── index.html ← この名前が必須
cancelNGな例
sakura-cafe/
└── sample.html ← ✗ ダウンロード時の名前のままだと表示されない

sakura-cafe/
└── design-export.html ← ✗ これも表示されない
desktop_windowsWindowsで拡張子が見えないとき

Windowsの初期設定では、ファイル名の「.html」が見えていないことがあります。

その状態で「index」と打つと、実際のファイル名はindex.html.htmlになってしまい表示されません。

エクスプローラーの「表示」→「ファイル名拡張子」にチェックを入れてから名前変更してください。

laptop_macMacで名前変更するとき

Finderでファイルをクリック→もう一度ファイル名のところをクリックすると編集モードに。.htmlを消さないように、ファイル名部分だけ書き換えてください。

③ Cloudflare Pagesにアップロードして公開

一見手順が多そうに見えますが、初回登録さえ済めば2回目以降の公開は楽になります。

person_add初回のみ: Cloudflareのアカウントを作る
1
cloudflare で検索 → 「無料で始める」をクリック
2
右上の言語切り替えで「日本語」を選択
3
「Googleで続行」が一番ラク

普段使っているGoogleアカウントを選ぶだけ。Apple ID / GitHub / メールアドレスでも可。

4
初回アンケートは右下「スキップ」で進む
5
メール認証(届く英文メールの「Verify your email」をクリック)
cloud_uploadアップロード(毎回の手順)
1
ダッシュボード → 「Workers と Pages」→ 「構築を開始する」
2
「Pagesを導入しようとお考えですか? 始める」をクリック
3
「ファイルをドラッグアンドドロップする」の「始める」を選択
4
プロジェクト名を半角英数字で入力(例: sakura-cafe)→「プロジェクトの作成」

日本語不可・大文字不可・人気の名前は既に取られてることがあります。入れた名前がそのままhttps://sakura-cafe.pages.devのURLになります。

5
②で作った index.html入りフォルダを丸ごとドラッグ

中央のドラッグ&ドロップエリアに放り込みます。確認ダイアログが出たら「アップロード」をクリック。

6
緑のバナーで完了確認 → 右下「サイトをデプロイ」をクリック
7
30秒〜1分待つ → 成功画面 → 「プロジェクトに進む」
8
「ドメイン」のリンクが公開URL。クリックで自分のページが開く
celebration表示されれば作成完了! このURLをLINE / X / Instagram / 名刺 / チラシなどで共有すれば、誰でもこのページにアクセスできます。
build後から修正・更新したいとき
  • デプロイタブ: 履歴一覧。右上「デプロイを作成する」から新しいファイルをアップロードできます。URLは変わりません。
  • カスタムドメインタブ: 独自ドメイン(例: sakura-cafe.com)を設定するときに使用。
  • 設定タブ: プロジェクト名やビルド設定の変更。
warningトラブル対処法

ページが真っ白: ファイル名がindex.htmlか再確認(sample.htmlのままだと真っ白)。Windowsで拡張子表示OFFだとindex.html.htmlになっていることも。

アップロードでエラー: ファイルサイズオーバーの可能性。Cloudflare Pagesは1ファイル25MB上限。HTMLが大きい場合は以下を Claude Design に貼り付けて再エクスポート。

中身を見る
これから HTML としてエクスポートします。

Cloudflare Pages にデプロイするため、
HTMLファイル が25 MB 未満に収まるよう、以下を厳守してください。

【画像最適化】
- 画像を減らさない
- 画像は抜け漏れなく全てを出力
- 写真は WebP(品質80)または JPEG(品質80)、幅 1200px 以下
- アイコン・図はSVG、なければ PNG(256色以下に減色)
- 1画像あたり 500KB 以下を目標

修正したい: Claude Designで該当プロジェクトを開いて修正指示 → 再エクスポート → Cloudflare Pagesの管理画面「デプロイを作成する」で再アップロード。URL変わらず内容だけ更新されます。

英語のエラーメッセージ: そのままコピーしてChatGPTかClaudeに「これ何?」と聞いてください。日本語で原因と対処法を教えてくれます。

celebration 完了セクションへ
quizFAQ

よくある質問

オフ会参加者からよく出る質問をまとめました。詰まったらここを確認してみてください。

Q ChatGPT の無料版でもできますか? expand_more

はい、このガイドは ChatGPT 無料版を前提に設計されています。ただし無料版には画像生成が 1日3枚・画像アップロード 1日2回 の制限があります。Step 02〜04 でその枚数をぴったり使い切る設計になっているので、余計な画像は生成しないようにしましょう。

Q Claude Pro が必要ですか? expand_more

Step 06 の Claude Design を使うには Claude Pro(月額約 $20)が必要です。オフ会では Pro ユーザーが同席しているはずなので、画面を見ながら一緒に進めてください。

まず ChatGPT の Step 01〜05 だけ先に完成させておくと、Claude Pro ユーザーの時間を効率よく使えます。

Q 公開したページは後から修正できますか? expand_more

はい。Claude Design で修正したあと、再度 HTML をエクスポートし、Cloudflare Pages 管理画面の 「デプロイを作成する」から新しいファイルをアップロードするだけです。URL は変わらず内容だけ更新されます。

Q ページが真っ白になってしまいます expand_more

ファイル名が index.html になっていない可能性が高いです。Windows では拡張子が隠れていることがあり、「index」と入力すると index.html.html になることがあります。

エクスプローラーの「表示」→「ファイル名拡張子」にチェックを入れてから確認してください。

Q スマホだけで作業できますか? expand_more

ChatGPT の Step 01〜05 はスマホでも可能ですが、Step 06 の HTML ダウンロードと Cloudflare Pages へのアップロードは パソコン(Mac / Windows)での作業を強くお勧めします。ファイル管理が複雑になるためです。

Q Cloudflare のアカウントは有料ですか? expand_more

完全無料です。Cloudflare Pages の無料プランで今回のすべての手順が完結します。月500件以上のデプロイや高度なビルド設定が必要になるまで、課金は不要です。

support困ったときのプランB

ChatGPTの上限で詰まったら 🆘

通常は ChatGPT だけで Step 05 まで完走できますが、メッセージ枠の上限に当たることがあります。そのときは Step 05 だけ Claude に振り替える 救済ルートを用意しています。

Step 05 を Claude に振り替える

目的:ChatGPT のメッセージ枠が尽きた場合、Step 05(設計書生成)だけ Claude に移して進める

必要なもの:Claude Pro(Step 06 の Claude Design でどのみち必要なので追加課金ゼロ)

helpこのルートを使うべきタイミング
  • ChatGPT で「メッセージ送信制限に達しました」が出た
  • ChatGPT の応答が極端に遅くなった・止まった
  • そもそも残り枠を Step 06-07 の修正に温存したい

① 移行前に ChatGPT 側でやること

ChatGPT で Step 01〜04 の結果をテキストでまとめておきます。具体的には以下をメモ帳/Notion等にコピーして保存:

  • Step 01 のテキスト報告(Markdown ブロック全体)
  • Step 02 で生成したチラシ画像(PCに保存済みのもの)
  • Step 03 で生成した FV 画像(同上)
  • Step 04 で生成したサービス説明画像(同上)

② Claude に新規 Project を作成して切り替え

1
claude.ai を開いて新規 Project を作成

名前は何でも OK(例: LP制作 - サービス名)

2
新規会話を開始し、チラシ画像を1枚だけ添付

世界観の参照用です。FV画像とサービス画像は Step 06 で Claude Design に渡すので、ここでは添付不要。

3
下のプロンプトを貼り付けて送信

③ Claude 用 Step 05 プロンプト

中身を見る
⚠️ このターンで絶対にやってはいけないこと
━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1. 応答を途中で切らない(1メッセージで完結させる)
2. プレースホルダーを残さない([Step01から記入]等は全て具体値に展開)
3. 「以下省略」「同様に」等の省略を使わない
━━━━━━━━━━━━━━━━━━━━━━━━━━━━

# 役割
あなたはWebアートディレクターのプロンプトエンジニアです。
これは ChatGPT で行う予定だった Step 05 を Claude に振り替えるフォールバックです。
ユーザーが用意した素材を元に、Claude Design に貼り付けるだけで完成形LPが生成される「LP実装プロンプト」を1つ作成してください。

---

# このターンの最終ゴール

最終ゴールは、ユーザーがコピペで Claude Design に渡せる「**完成された実装プロンプト**」を出力すること。
設計書ではなく、**そのまま貼って動くプロンプト**を作るのがミッションです。

---

# 入力情報

## 添付画像(任意)
- チラシ画像(ChatGPT Step 02で生成済み): トンマナ参照用

## テキスト報告(ChatGPT Step 01の出力)

下の <<< >>> 部分にあなた(ユーザー)が記入してください:

<<< ChatGPT Step 01 のテキスト報告 Markdown ブロック全体をここに貼り付け >>>

## 既に生成済みの素材画像(ChatGPTで作成済み)
- FV画像: 1枚(横長16:9または3:2)
- サービス説明画像: 1枚(4:3または1:1)

※これら2枚は後で Claude Design に直接アップロードします。

---

# 内部処理(あなたが頭の中で行う作業)

## 1. トンマナ判定

テキスト報告の業種・トンマナ記述から、以下6カテゴリの1つに判定:

| ID | トンマナ | キーワード例 |
|---|---|---|
| A | 信頼感・上品 | 士業/医療/高級/老舗/フォーマル |
| B | 親しみ・柔らかい | 飲食/教室/サロン/子育て/アットホーム |
| C | モダン・テック | IT/SaaS/D2C/シンプル/革新 |
| D | 力強い・スポーティ | ジム/格闘技/挑戦/結果 |
| E | ポップ・賑やか | キャンペーン/セール/エンタメ |
| F | ミニマル・洗練 | ブランド/美容/アート/静謐 |

## 2. フォント選定

| 判定 | 見出し | 本文 | アクセント |
|---|---|---|---|
| A | Noto Serif JP wght 900 | Noto Sans JP wght 400 | Cormorant Garamond wght 600 |
| B | Zen Maru Gothic wght 700 | Noto Sans JP wght 400 | Caveat wght 600 |
| C | Zen Kaku Gothic New wght 900 | Noto Sans JP wght 400 | Space Grotesk wght 600 |
| D | RocknRoll One | Noto Sans JP wght 500 | Bebas Neue |
| E | Reggae One | Kosugi Maru | M PLUS 1p wght 800 |
| F | Noto Serif JP wght 400 | Noto Sans JP wght 300 | Inter wght 600 |

## 3. Material Symbols スタイル

| 判定 | スタイル |
|---|---|
| A | Sharp |
| B | Rounded |
| C | Outlined |
| D | Outlined (FILL=1) |
| E | Rounded (FILL=1) |
| F | Outlined (wght=300) |

## 4. アイコン割当(共通)

- FV CTA: arrow_forward
- USP1/2/3: bolt / verified / favorite
- 利用フロー1/2/3: counter_1 / counter_2 / counter_3
- お客様の声: format_quote, star
- FAQ: expand_more
- 連絡: call, mail, location_on, schedule
- 業種特化: 飲食=restaurant / 美容=spa / ジム=fitness_center / 教室=school / 医療=medical_services / 小売=storefront / 不動産=home / 建築=construction / 修理=build / 運送=local_shipping / 美容医療=health_and_safety

## 5. ヒーローアニメーション選定

- A: 文字フェード(0.6s) + 背景1.05倍ズーム(8秒) / パーティクル禁止
- B: 文字フェード+バウンス / CTA呼吸アニメ / 円形グラデ浮遊
- C: パララックス + マウス追従光 + パーティクル + マグネットCTA
- D: 文字スライドイン(split-text) + ズームアウト + 赤発光パルス
- E: 文字バウンスイン + 紙吹雪 + キラキラSVG + 色相変化
- F: 文字フェード(0.8s) + ノイズグレイン / 派手な動き禁止

---

# あなたの応答フォーマット(厳守)

## 【パート1】 判定結果(短く報告)

判定: [A〜F] [トンマナ名]
根拠: [1行で]

採用フォント: 見出し[ ] / 本文[ ] / アクセント[ ]
Material Symbols: [スタイル名]
ヒーローアニメーション: [採用パターンの1行サマリー]

## 【パート2】 Claude Design 用 LP実装プロンプト

ユーザーは「ここから ✂︎」と「✂︎ ここまで」の間を全選択コピーして Claude Design に貼り付けます。

ここから ✂︎ ────────────────────────────

# LP実装プロンプト(Claude Design用)

あなたは超一流のフロントエンドエンジニア兼Webデザイナーです。
以下の仕様に厳密に従って、商用クオリティのランディングページを1ファイルのHTMLで実装してください。

## 0. 画像最適化(最重要・最初に守る・絶対に省略しない)

⚠️ このセクションは Cloudflare Pages 公開のための死活的な仕様です。絶対に守ってください。

- 画像は **WebP形式・幅1200px以下・各500KB以下** に圧縮
- 可能なら **画像を HTML に base64 で埋め込み(1ファイル完結)**
- base64 化が難しい場合は別ファイル参照でもOK(相対パス)
- **全体ファイルサイズ 25MB以下を厳守**

## 1. 基本情報
- サービス名: [テキスト報告から具体値]
- 業種: [具体値]
- ターゲット: [具体値]
- 採用トンマナ: [判定IDの名称]

## 2. メインコピー・サブコピー・CTA
- メインコピー: [具体値]
- サブコピー: [具体値]
- CTAテキスト: [具体値]

## 3. 使用画像(2枚のみ・別途アップロード)
- FV画像(横長16:9または3:2): ヒーロー背景に使用
- サービス説明画像(4:3または1:1): サービス詳細セクションに使用
- 装飾用画像は絶対に追加しない

## 4. カラーパレット(CSS変数で実装)

  :root {
    --color-main: #XXXXXX;  /* テキスト報告のメイン色 */
    --color-sub: #XXXXXX;   /* テキスト報告のアクセント色 */
    --color-base: #XXXXXX;  /* テキスト報告のベース色 */
    --color-ink: #1a1424;
    --color-ink-2: #4a3f5c;
    --color-muted: #8a7f96;
  }

## 5. タイポグラフィ

  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=[実際のフォント名]&display=swap" rel="stylesheet">

  :root {
    --font-heading: '[判定見出しフォント]', sans-serif;
    --font-body: '[判定本文フォント]', sans-serif;
    --font-accent: '[判定アクセントフォント]', serif;
  }

## 6. アイコン(Material Symbols)

  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Material+Symbols+[判定スタイル]:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" />

## 7. セクション構成(9セクション)

### ① ヒーロー
- 全画面 FV画像背景
- 左側にメインコピー + サブコピー + CTAボタン
- メインコピー: [具体値]
- サブコピー: [具体値]
- CTAテキスト: [具体値]

### ② 共感セクション
- 見出しと本文を業界に合わせて生成

### ③ USP(3カラム)
- USP1〜3を具体値で記入、アイコンは bolt / verified / favorite

### ④ サービス詳細
- サービス説明画像を配置
- サービス一覧を業種から想定して5〜7個生成

### ⑤ 利用フロー(3STEP)
- counter_1, counter_2, counter_3 を使用

### ⑥ お客様の声(2〜3件)
- format_quote, star を使用

### ⑦ FAQ(アコーディオン)
- 業種に合った質問3〜5個

### ⑧ 最終CTA
- メインカラー系グラデーション背景
- 連絡アイコン(call, mail, location_on, schedule)

### ⑨ フッター
- 会社名・電話・対応エリア・営業時間・プライバシーポリシー

## 8. ヒーローセクション可読性の5層防御(省略禁止)

  /* 1. 背景画像にダークオーバーレイ */
  .hero::before {
    content: ""; position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(0,0,0,0.45) 0%, rgba(0,0,0,0.25) 50%, rgba(0,0,0,0.55) 100%);
    z-index: 1; pointer-events: none;
  }

  /* 2. ヘッダー半透明背景+backdrop-filter */
  header {
    background: rgba(0,0,0,0.35);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }

  /* 3. テキストにtext-shadow */
  .logo, header nav a, .hero h1, .hero p {
    text-shadow: 0 2px 12px rgba(0,0,0,0.65);
  }

  /* 4. スクロール100px超で不透明ヘッダー */
  header.scrolled { background: rgba(255,255,255,0.96); }
  header.scrolled .logo, header.scrolled nav a {
    color: var(--color-ink); text-shadow: none;
  }

  /* 5. WCAGコントラスト比 4.5:1 確保 */

## 9. ヒーローアニメーション(判定[A〜F]・必須実装)

⚠️ 実装必須・省略禁止 ⚠️
判定IDに対応する以下のブロックの「実装ステップ + CSS全文 + JS全文 + HTML追加」を完全展開すること。
仕様文だけで終わらせない。コードを必ず書く。

[判定がAの場合]
=== A: 信頼・上品 ===
CSS:
  @keyframes heroFadeUp {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes heroBgZoom {
    from { transform: scale(1.0); }
    to   { transform: scale(1.05); }
  }
  .hero h1   { opacity: 0; animation: heroFadeUp 0.6s ease-out 0.0s forwards; }
  .hero p    { opacity: 0; animation: heroFadeUp 0.6s ease-out 0.2s forwards; }
  .hero .cta { opacity: 0; animation: heroFadeUp 0.6s ease-out 0.4s forwards; }
  .hero-bg   { animation: heroBgZoom 8s ease-out forwards; }
  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta, .hero-bg { animation: none; opacity: 1; }
  }
JS: 不要

[判定がBの場合]
=== B: 親しみ・柔らかい ===
CSS:
  @keyframes heroBounceUp {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
  }
  @keyframes ctaBreath {
    0%,100% { transform: scale(1.0); } 50% { transform: scale(1.03); }
  }
  @keyframes blobFloat {
    0%,100% { transform: translate(0,0); } 50% { transform: translate(20px,-20px); }
  }
  .hero h1   { opacity:0; animation: heroBounceUp 0.7s cubic-bezier(.34,1.56,.64,1) 0s forwards; }
  .hero p    { opacity:0; animation: heroBounceUp 0.7s cubic-bezier(.34,1.56,.64,1) 0.15s forwards; }
  .hero .cta { opacity:0; animation: heroBounceUp 0.7s cubic-bezier(.34,1.56,.64,1) 0.3s forwards, ctaBreath 2s ease-in-out 1s infinite; }
  .hero-blob { position:absolute; border-radius:50%; filter:blur(40px); opacity:0.4; pointer-events:none; }
  .hero-blob-1 { width:200px; height:200px; background:var(--color-main); top:20%; left:10%; animation: blobFloat 12s ease-in-out infinite; }
  .hero-blob-2 { width:150px; height:150px; background:var(--color-sub); bottom:20%; right:15%; animation: blobFloat 14s ease-in-out -3s infinite; }
  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta, .hero-blob { animation: none; opacity: 1; }
  }
HTML追加(.hero 内): <div class="hero-blob hero-blob-1"></div><div class="hero-blob hero-blob-2"></div>

[判定がCの場合]
=== C: モダン・テック ===
CSS:
  @keyframes heroFadeUp {
    from { opacity:0; transform: translateY(12px); }
    to { opacity:1; transform: translateY(0); }
  }
  .hero h1 { opacity:0; animation: heroFadeUp 0.5s ease-out 0s forwards; }
  .hero p { opacity:0; animation: heroFadeUp 0.5s ease-out 0.2s forwards; }
  .hero .cta { opacity:0; animation: heroFadeUp 0.5s ease-out 0.4s forwards; }
  .hero-cursor-light {
    position:absolute; width:120px; height:120px; border-radius:50%;
    background: radial-gradient(circle, rgba(255,255,255,0.3), transparent);
    pointer-events:none; transition: left 0.1s, top 0.1s;
    mix-blend-mode: screen; z-index:2;
  }
  .hero-particle {
    position:absolute; width:4px; height:4px; border-radius:50%;
    background: rgba(255,255,255,0.6); pointer-events:none;
    animation: particleFloat linear infinite;
  }
  @keyframes particleFloat {
    from { transform: translateY(100vh) translateX(0); opacity:0; }
    10%,90% { opacity:1; }
    to { transform: translateY(-100px) translateX(50px); opacity:0; }
  }
  @media (max-width:768px) { .hero-cursor-light{display:none;} .hero-particle:nth-child(n+6){display:none;} }
  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta { animation: none; opacity: 1; }
    .hero-particle, .hero-cursor-light { display: none; }
  }
JS:
  window.addEventListener('scroll', () => {
    const bg = document.querySelector('.hero-bg');
    if (bg) bg.style.transform = `translateY(${window.scrollY * 0.4}px)`;
  });
  if (window.matchMedia('(hover: hover)').matches) {
    const light = document.querySelector('.hero-cursor-light');
    document.querySelector('.hero')?.addEventListener('mousemove', (e) => {
      if (light) { light.style.left = (e.offsetX-60)+'px'; light.style.top = (e.offsetY-60)+'px'; }
    });
    const cta = document.querySelector('.hero .cta');
    cta?.addEventListener('mousemove', (e) => {
      const r = cta.getBoundingClientRect();
      const x = e.clientX - r.left - r.width/2;
      const y = e.clientY - r.top - r.height/2;
      cta.style.transform = `translate(${x*0.15}px, ${y*0.15}px)`;
    });
    cta?.addEventListener('mouseleave', () => cta.style.transform = '');
  }
  const heroEl = document.querySelector('.hero');
  if (heroEl && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const count = window.innerWidth < 768 ? 5 : 10;
    for (let i=0; i<count; i++) {
      const p = document.createElement('div');
      p.className = 'hero-particle';
      p.style.left = Math.random()*100 + '%';
      p.style.animationDuration = (15 + Math.random()*10) + 's';
      p.style.animationDelay = -Math.random()*15 + 's';
      heroEl.appendChild(p);
    }
  }
HTML追加(.hero 内): <div class="hero-cursor-light"></div>

[判定がDの場合]
=== D: 力強い・スポーティ ===
CSS:
  @keyframes heroSlideIn {
    from { opacity:0; transform: translateX(-40px); }
    to { opacity:1; transform: translateX(0); }
  }
  @keyframes heroBgZoomOut {
    from { transform: scale(1.2); } to { transform: scale(1.0); }
  }
  @keyframes ctaGlow {
    0%,100% { box-shadow: 0 0 0 0 rgba(220,40,40,0.4); }
    50% { box-shadow: 0 0 0 12px rgba(220,40,40,0); }
  }
  .hero h1 span { display:inline-block; opacity:0; animation: heroSlideIn 0.5s cubic-bezier(.6,.04,.98,.34) forwards; }
  .hero p    { opacity:0; animation: heroSlideIn 0.5s ease-out 0.6s forwards; }
  .hero .cta { opacity:0; animation: heroSlideIn 0.5s ease-out 0.8s forwards, ctaGlow 2s ease-in-out 2s infinite; }
  .hero-bg   { animation: heroBgZoomOut 2s ease-out forwards; }
  @media (prefers-reduced-motion: reduce) {
    .hero h1 span, .hero p, .hero .cta, .hero-bg { animation: none; opacity: 1; }
  }
JS:
  const h1 = document.querySelector('.hero h1');
  if (h1 && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const text = h1.textContent; h1.innerHTML = '';
    [...text].forEach((char, i) => {
      const s = document.createElement('span');
      s.textContent = char === ' ' ? ' ' : char;
      s.style.animationDelay = (i * 0.05) + 's';
      h1.appendChild(s);
    });
  }

[判定がEの場合]
=== E: ポップ・賑やか ===
CSS:
  @keyframes heroBounceIn {
    0% { opacity:0; transform: translateY(40px) scale(0.5); }
    60% { opacity:1; transform: translateY(-10px) scale(1.05); }
    100% { opacity:1; transform: translateY(0) scale(1); }
  }
  @keyframes ctaBounce { 0%,100%{transform:translateY(0);} 50%{transform:translateY(-4px);} }
  @keyframes confettiFall {
    from { transform: translateY(-20px) rotate(0); opacity:1; }
    to { transform: translateY(110vh) rotate(720deg); opacity:0; }
  }
  @keyframes sparkleTwinkle { 0%,100%{opacity:0; transform:scale(0.5);} 50%{opacity:1; transform:scale(1.2);} }
  @keyframes hueRotate { from{filter:hue-rotate(0deg);} to{filter:hue-rotate(360deg);} }
  .hero h1 span { display:inline-block; opacity:0; animation: heroBounceIn 0.6s cubic-bezier(.68,-0.55,.27,1.55) forwards; }
  .hero p    { opacity:0; animation: heroBounceIn 0.6s cubic-bezier(.68,-0.55,.27,1.55) 0.5s forwards; }
  .hero .cta { opacity:0; animation: heroBounceIn 0.6s cubic-bezier(.68,-0.55,.27,1.55) 0.7s forwards, ctaBounce 2s ease-in-out 1.5s infinite; }
  .hero-bg { animation: hueRotate 10s linear infinite; }
  .confetti { position:absolute; width:10px; height:10px; top:-20px; pointer-events:none; animation: confettiFall linear infinite; }
  .sparkle { position:absolute; font-size:24px; pointer-events:none; animation: sparkleTwinkle 1.5s ease-in-out infinite; }
  @media (max-width:768px) { .confetti:nth-child(n+4){display:none;} }
  @media (prefers-reduced-motion: reduce) {
    .hero h1 span, .hero p, .hero .cta, .hero-bg, .confetti, .sparkle { animation: none; opacity: 1; }
  }
JS:
  const h1 = document.querySelector('.hero h1');
  if (h1 && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const text = h1.textContent; h1.innerHTML = '';
    [...text].forEach((char, i) => {
      const s = document.createElement('span');
      s.textContent = char === ' ' ? ' ' : char;
      s.style.animationDelay = (i * 0.06) + 's';
      h1.appendChild(s);
    });
  }
  const heroEl = document.querySelector('.hero');
  if (heroEl && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
    const colors = ['#ff4d8d','#ffd23f','#06d6a0','#9d4edd','#4361ee'];
    const count = window.innerWidth < 768 ? 5 : 8;
    for (let i=0; i<count; i++) {
      const c = document.createElement('div'); c.className = 'confetti';
      c.style.left = Math.random()*100 + '%';
      c.style.background = colors[i % colors.length];
      c.style.animationDuration = (5 + Math.random()*3) + 's';
      c.style.animationDelay = -Math.random()*5 + 's';
      heroEl.appendChild(c);
    }
    const sparkles = ['✦','✧','★'];
    for (let i=0; i<4; i++) {
      const s = document.createElement('span'); s.className = 'sparkle';
      s.textContent = sparkles[i % sparkles.length];
      s.style.left = Math.random()*90 + '%';
      s.style.top = Math.random()*60 + '%';
      s.style.animationDelay = -Math.random()*1.5 + 's';
      heroEl.appendChild(s);
    }
  }

[判定がFの場合]
=== F: ミニマル・洗練 ===
CSS:
  @keyframes heroFadeOnly { from{opacity:0;} to{opacity:1;} }
  .hero h1   { opacity:0; animation: heroFadeOnly 0.8s ease-out 0.0s forwards; }
  .hero p    { opacity:0; animation: heroFadeOnly 0.8s ease-out 0.3s forwards; }
  .hero .cta { opacity:0; animation: heroFadeOnly 0.8s ease-out 0.6s forwards; }
  .hero-noise {
    position:absolute; inset:0; pointer-events:none; opacity:0.05; mix-blend-mode:multiply; z-index:2;
    background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
  }
  @media (prefers-reduced-motion: reduce) {
    .hero h1, .hero p, .hero .cta { animation: none; opacity: 1; }
  }
HTML追加(.hero 内): <div class="hero-noise"></div>
JS: 不要

## 10. 共通必須仕様

- prefers-reduced-motion: reduce で全アニメ停止
- GSAP/Lottie禁止、CSS+WAA+IntersectionObserverのみ
- スマホでパーティクル半減、マウス追従無効
- 1st paint時点で文字が読めること
- レスポンシブ(スマホファースト)
- OGP/meta/JSON-LD あり、アクセシビリティ(alt, aria)配慮

---

以上の仕様に従って、1ファイル完結のHTMLでLPを実装してください。
画像2枚(FV / サービス説明)はこの後アップロードします。

✂︎ ここまで ────────────────────────────

## 【パート3】 使い方

1. 「ここから ✂︎」〜「✂︎ ここまで」を全選択コピー
2. claude.ai/design を新しいタブで開く
3. プロンプトを貼り付け
4. FV画像 と サービス説明画像 の2枚を添付して送信
5. 応答が途中で切れたら「続きを出して」と再送

---

# ⚠️ 最終確認
- [具体値] や [判定見出しフォント] のようなプレースホルダーは **すべて実際の値に展開**
- [判定がAの場合]〜[判定がFの場合]は判定したIDだけ採用、他は削除
- ⚠️【最重要】「## 0. 画像最適化」セクションは絶対に省略しない。応答冒頭に必ず書ききる
- ⚠️【最重要】「## 9. ヒーローアニメーション」の判定IDブロックは、CSS全文 + JS全文 + HTML追加を**完全展開**する。仕様文だけで終わらせない
- ⚠️【最重要】「## 10. 共通必須仕様」セクションも省略しない。応答末尾まで書き切る
- 「ここから ✂︎」「✂︎ ここまで」の囲みはそのまま残す
- 1メッセージで完結、途中で切らない
- 応答が長くなる場合は、各セクションを「コンパクトに、ただし完全に」書く。省略はしない

# ✅ セクション漏れチェック(応答前に自分で必ず確認)
出力に以下11セクションがすべて含まれていることを確認してください:
- [ ] ## 0. 画像最適化 ← これが無いとアウト
- [ ] ## 1. 基本情報
- [ ] ## 2. メインコピー・サブコピー・CTA
- [ ] ## 3. 使用画像
- [ ] ## 4. カラーパレット
- [ ] ## 5. タイポグラフィ
- [ ] ## 6. アイコン
- [ ] ## 7. セクション構成
- [ ] ## 8. ヒーローセクション可読性の5層防御
- [ ] ## 9. ヒーローアニメーション(具体CSS/JSコード)
- [ ] ## 10. 共通必須仕様

④ Step 06 への戻り方

Claude が設計書を出力したら、そのまま同じ Claude の会話の続き で Step 06 に進めます。本編 Step 06 のプロンプトをそのままコピーして送るだけ。

check_circleこのルートのメリット
  • ChatGPT の残り枠を Step 07(フォーム質問項目生成)用に温存できる
  • Step 06 で Claude を使うので、Claude 側に Step 05 の文脈があると Step 06 がスムーズ
  • 追加課金ゼロ(Claude Pro は Step 06 でどのみち必要)
priority_high注意点

Claude のフリーアカウントでも Step 05 だけは動きますが、その場合 Step 06 の Claude Design は使えません。

このフォールバックを使うなら Claude Pro 契約があるか、これから契約する想定の方のみ 推奨です。

workspace_premium
starCOMPLETEstar

完了です!
お疲れさまでした

ここまで進めば、自分のWebページを公開する準備は完了です。

最後に表示を確認したら、公開URLをみんなに共有してみましょう!

military_tech 8 / 8 完了!すべてのステップを走り切りました
1 NOWChatGPT
task_altコピーしました!
0/8 完了