オレンジメール販売サイト リプレイス 技術構成 最終決定書
1. 決定サマリー(技術スタック)
| レイヤー | 採用 | 概要 |
|---|
| 静的サイト生成(SSG) | Astro | md/YAML → 静的HTML/CSS生成。LP表現力と拡張性 |
| コンテンツ設計 | 2層設計 | LP=YAML+固定コンポーネント/記事=MDX(§4) |
| CMS | Sveltia CMS | 無料・Git直結・サーバー不要。必要時TinaCMSへ差し替え可 |
| ホスティング | Cloudflare Pages | 無料・商用可・帯域無制限・国内POP(東京/大阪/福岡) |
| DNS | Cloudflare DNS | orange-cloud7.net ゾーン移管(メール系レコードは精密移植) |
| CI/CD | GitHub+Pages Git連携 | push→自動ビルド→数分で本番反映。ブランチ毎プレビューURL |
| リダイレクト | Cloudflare Redirect Rules | 既存301群・ホスト正規化を移植 |
| 構造化データ | JSON-LD 自作コンポーネント | @graph+@id で全スキーマ連結(§6.1) |
| サイトマップ | @astrojs/sitemap | robots.txt に絶対パス明記+GSC送信 |
| AI対策(GEO) | llms.txt+md版公開 | AIボット明示許可、一次データのFAQ化 |
全体フロー:編集(Sveltia の /admin または Git 直接)→ GitHub へ commit → Cloudflare Pages が自動ビルド → エッジ配信(1〜3分で本番反映)
2. 背景と目的
現状課題(WordPress の限界)
- 修正箇所の特定に時間がかかる(文言が DB 内に分散し、探索コストが高い)
- 表示速度が遅い(PHP+DB の動的生成)
- セキュリティリスクが高い(管理画面・プラグインが常時攻撃面)
- プラグイン更新など運用負担が大きい
目的
- 非エンジニアがテンプレートに沿って文字・画像・動画を差し替えられる運用
- 販売サイトとしての表現性の確保
- SEO 1位獲得、AI検索(GEO)対応
静的化による課題解消
| 課題 | 解消方法 |
|---|
| 修正箇所が分からない | ファイル構造=サイト構造。content/lp/houjin.yaml を開けば法人LPの全文言がそこにある |
| 遅い | 完全静的で DB/PHP 排除。Core Web Vitals に直撃 |
| セキュリティ | 本番に管理画面も DB も存在せず、攻撃面ほぼゼロ |
| 更新負担 | プラグイン更新から解放。依存は Astro 等のビルド時のみ |
3. 確定済みの前提条件
- ConoHa WING は廃止する(決定済み。これにより配信先の制約が消滅し、Cloudflare Pages 採用が可能になった)
- URL は orange-cloud7.net/mail/ を完全維持。直近完了した301正規化(mail.os7.biz / mail.orange-cloud7.net → /mail/)の資産を守る。URL の再変更・フリップは行わない
- コンテンツは全量 Git 管理。Claude Code 等での一括編集・リライトを可能にする(SaaS 型 CMS を不採用とした決定理由)
4. コンテンツ設計:2層設計(本構成の肝)
第1層:LP(YAML+固定コンポーネント)
対象:企業向けLP/個人・メルマガ発行者向けLP/到達率解説ページ
- レイアウトはエンジニアが Astro コンポーネントとして固定
- 文言・画像・数値・CTA先URL は YAML に外出し
- 非エンジニアはフィールド差し替えのみ → レイアウト破壊が構造的に不可能
hero:
headline: "届かないメールは、存在しないのと同じ"
open_rate: "59.2%"
cta_label: "無料で試す"
cta_url: "https://…" # 決済・申込導線もここで管理
image: /images/hero-btob.png
第2層:記事・教育コンテンツ(MDX)
対象:到達率の教育コンテンツ、FAQ、ノウハウ記事
- md 本文で自由に執筆
- 比較表・図解は
<CompareTable /> 等のコンポーネント差し込みで表現力を担保
5. 各レイヤーの選定理由
5.1 SSG:Astro
- 静的出力が第一級。LP の表現力(コンポーネント)と MDX 対応を両立
- 対抗案:Hugo(ビルドは速いが LP 表現力・拡張性で劣後)、Next.js(販売サイトには過剰。SSR 不要)
5.2 CMS:Sveltia CMS(→必要時 TinaCMS)
- 無料・OSS・サーバー不要・Git 直結・日本語UI対応(Decap CMS 後継)
- 編集フロー:ブラウザで /admin → フォーム感覚で編集 → 保存=GitHub へ commit → 自動ビルド → 1〜3分で本番反映。編集者は Git も HTML も触らない
- ライブプレビューが必須になった時点で TinaCMS へ差し替え(Tina Cloud 無料枠は編集者2名程度、超過で課金)。md/YAML 構造は共通のため乗り換えは容易
- microCMS 不採用理由:コンテンツが Git 外に出る(Claude Code での一括編集が不可)+SaaS費が発生
5.3 ホスティング:Cloudflare Pages
- 無料で商用可・帯域無制限。国内POP(東京・大阪・福岡)で国内向け静的配信は十分高速
- ブランチごとのプレビューURL自動発行 → v2 コピーのレビューにそのまま活用
- Vercel 落選理由:Hobby プランは商用利用不可。販売サイトは Pro($20/席/月〜)が必須。静的配信性能は CF Pages とほぼ互角で、片方だけ有料にする理由がない
- 補足:Cloudflare は新規プロジェクトを Workers(静的アセット)へ統合中。Pages で開始して問題なく、将来の移行も軽微。実装者から「Pages は古い」と指摘があっても構成変更は不要
5.4 DNS:Cloudflare DNS
WING 廃止に伴い、orange-cloud7.net ゾーンを Cloudflare へ移管。ホスティング・リダイレクト・DNS を同一基盤に一元化する。
メール配信事業者としての厳守事項:
- MX / SPF / DKIM / DMARC / トラッキング系レコードを1本残らず移植
- メール関連ホストは必ず**プロキシOFF(DNS-only)**に設定
- TTL を下げてから NS 切替
- 切替前後で SPF/DKIM/DMARC の検証(実配信テスト)を実施
5.5 リダイレクト:Cloudflare Redirect Rules
- 現 .htaccess の301群を移植
- mail.orange-cloud7.net → 同ゾーン内の Redirect Rules で即解決
- mail.os7.biz → os7.biz ゾーンも Cloudflare に載せ、サーバー無しで301を維持
- 本数が多い場合は Bulk Redirects を利用
- 直近完了した301正規化をここで切らさないこと
6. SEO・GEO 実装仕様
6.1 JSON-LD 構造化データ
- 実装:自作 Astro コンポーネント(型は schema-dts を利用)。astro-seo-schema は薄いラッパのため依存追加せず(実装者が習熟していれば利用も許容)
- データ源:YAML/フロントマターから動的生成
- @graph 配列+安定した @id 参照で全スキーマを連結(各 WebPage → WebSite → Organization の帰属を明示)
| スキーマ | 用途 |
|---|
| Organization / WebSite | サイト全体の権威性・ナレッジグラフの起点 |
| WebPage / BreadcrumbList | ページ帰属・階層構造 |
| Product / Offer | 料金・機能・提供形態の明示(販売サイトの要) |
| FAQPage / Question | AI回答エンジンへの引用獲得 |
| Article | 教育コンテンツ・記事 |
6.2 FAQ の位置づけ(現実確認)
- Google の FAQ リッチリザルト表示は 2023年8月以降、政府・医療系サイトにほぼ限定 → SERP 上の見た目の即効性は期待しない
- 価値の在り処:①AI回答エンジン(ChatGPT / Claude / Perplexity / AI Overviews)への引用、②可視 Q&A コンテンツ自体のロングテール流入
- マークアップと画面表示の一致が必須(不一致はスパムポリシー抵触リスク)
- 「メール到達率の業界通説を覆す」コンテンツ+一次データ(開封率 59.2%・n=292)を FAQ・構造化データ化し、AI引用を獲得しに行く
6.3 サイトマップ・robots.txt
- @astrojs/sitemap で自動生成
- robots.txt にサイトマップの絶対パスを明記(例:
Sitemap: https://orange-cloud7.net/sitemap-index.xml)
- ホスト正規化(www の有無等)を Redirect Rules で単一化
- GSC へ送信。「取得できませんでした」表示は GSC 側の遅延の場合もあるため、上記を満たしていれば静観してよい
- 注意:robots.txt・サイトマップはドメイン直下に1枚 → ドメイン全体の配信設計(§8)とセットで確定する
6.4 AI対策(GEO)
- llms.txt+各ページの md 版を自動生成・公開(ソースが md/YAML なので低コストで実現)
- robots.txt で GPTBot / ClaudeBot / PerplexityBot 等を明示許可
- 一次データ・独自調査を構造化して提示(AI引用の獲得源)
7. 既存機能の移行方針
| 機能 | 現状 | 移行方針 |
|---|
| 問い合わせフォーム | オレンジフォーム | 埋め込みスニペット/リンクをそのまま移植。フォーム処理は先方サーバーで完結 |
| サイト内検索 | 独自FAQ検索(スニペット貼付型) | クライアントサイド動作のため続投。レイアウトに一度組み込み全ページ適用。※プレビュー環境でのドメイン制限は要確認(§12) |
| 決済誘導 | 決済ページへのリンク | 静的CTAリンクで完結。URL は YAML 管理とし、料率改定・キャンペーン時も非エンジニアが編集画面から差し替え可。※動的パラメータ生成の有無は要確認(§12) |
サーバーサイド処理はゼロ → 完全静的化が成立する。
8. WING 廃止に伴う必須タスク
- ドメイン全体の棚卸し:DNS 切替後は orange-cloud7.net の全パスが Cloudflare から配信される。/mail/ 以外(ルート含む)の全コンテンツの行き先を決定する
- 配信設計:単一 Pages プロジェクトでドメイン全体を配信し、Astro 内に /mail/ 配下を含める構成が最も素直(robots.txt・サイトマップもルートで一元化できる)
- WING 上の他サイト:一覧化し、WING 解約日から逆算した移行計画を別途策定(本プロジェクトのスコープ外だが、解約期限は連動する)
- DNS ゾーン移管:§5.4 の厳守事項に従い実施
- 旧URL 301 の継続:§5.5 の通り、正規化を切らさない
9. 移行ステップ
| フェーズ | 内容 | 完了基準 |
|---|
| 1 | URL棚卸し+301マップ作成(GSCエクスポート+全ページクロール) | 全URLの行き先が確定 |
| 2 | Astro骨格+3系統テンプレート構築、v2コピー流し込み | 3ページ完成・表現性と編集フローの検証OK |
| 3 | WP既存記事 → md 一括変換(変換ツール+目視チェック) | 全記事md化・表示確認済み |
| 4 | CMS設定+編集マニュアル1枚 | 非エンジニアが独力で「修正→公開」に成功 |
| 5 | DNSゾーン移管 → 本番切替(静的配置・301・sitemap再送信) | 全301疎通・メール認証レコード検証OK |
| 6 | GSC監視(2〜4週) | インデックス・順位の維持を確認 |
目安工数:実働2〜4週間(記事本数に依存)+DNS移管作業
10. 移行後の運用フロー
- 非エンジニア:/admin(Sveltia)でフォーム編集 → 保存 → 1〜3分で本番反映
- エンジニア/Claude Code:Git リポジトリを直接編集(一括リライト・テンプレート改修・v2コピー反映)
- レビュー:ブランチ作成でプレビューURL自動発行 → 確認後マージで本番反映
11. コスト
| 項目 | 費用 |
|---|
| Cloudflare Pages / DNS | 無料 |
| GitHub | 無料枠内 |
| Sveltia CMS | 無料(OSS) |
| ランニング増分 | ほぼゼロ(ドメイン維持費のみ) |
| WING 解約 | コスト削減(他サイト移行完了後) |
12. 未確定事項(着工前の宿題)
- orange-cloud7.net の /mail/ 以外(ルート含む)のコンテンツ一覧+WING上の他サイト一覧 → ドメイン全体の配信設計と移行工数の確定に必須。着工トリガー
- 現WPの決済誘導が URL パラメータを動的生成しているか(単純リンクなら追加作業なし。動的生成でもクライアントサイド JS で再現可)
- FAQ検索スニペットのドメイン制限の有無(プレビュー環境で動作しない可能性。本番は問題なし)
13. 不採用案一覧(決定記録)
| 案 | 不採用理由 |
|---|
| Vercel | Hobby プラン商用不可 → Pro 課金必須。CF Pages と性能互角で費用だけ発生 |
| microCMS | コンテンツが Git 外に出る → Claude Code 一括編集不可+SaaS費 |
| WP温存+静的書き出しプラグイン | WP保守と「どこを直すか問題」が残存し、根治しない |
| Hugo | LP表現力・拡張性で Astro に劣後 |
| Next.js | 販売サイトには過剰(SSR不要) |
| ConoHa WING配信+GitHub Actions rsync | WING廃止決定により失効(旧案) |
| mail.orange-cloud7.net への回帰 | URL再変更は SEO 最悪シグナル。301正規化資産を毀損 |