---
id: "00_hp_index"
title: "ソライ東京 公式HP特化仕様書 (Sorai Tokyo Website & Editorial Specification)"
category: "hp"
packages:
  - "soraitokyo-cms-theme"
  - "real-estate-cms-operations"
cloud_run:
  - "sorai-auto-editorial"
  - "sorai-system-spec"
endpoints:
secrets:
  - "HUBSPOT_ACCESS_TOKEN"
  - "MLIT_API_KEY"
  - "GEMINI_API_KEY"
databases:
  - "editorial_queue"
  - "knowledge_articles"
---

# ソライ東京 公式HP特化仕様書 (Sorai Tokyo Website & Editorial Specification)

<!-- MODULE_METADATA_START -->
| 項目 | 定義・対象リソース |
| :--- | :--- |
| **対象パッケージ** | `soraitokyo-cms-theme`, `real-estate-cms-operations` |
| **Cloud Run サービス** | `sorai-auto-editorial` (Job), `sorai-system-spec` |
| **主要エンドポイント** | 公式HP URL体系 (`https://soraitokyo.jp/`, `/quote`, `/contact`, `/blog`) |
| **依存 Secret** | `HUBSPOT_ACCESS_TOKEN`, `MLIT_API_KEY`, `GEMINI_API_KEY` |
| **Firestore コレクション** | BigQuery `editorial_queue`, Firestore `knowledge_articles` |
<!-- MODULE_METADATA_END -->


本ドキュメントは、ソライ東京（Sorai Tokyo）の公式ウェブサイト（https://soraitokyo.jp/）、メディア基盤、HubSpot CMSテーマ、自律型コンテンツ執筆エンジン、多言語配信アーキテクチャ、およびSEO/AEO計測エコシステムを網羅した特化型技術仕様書です。

---

## 1. ソライ東京 公式ウェブサイト & メディア概要 (Overview & Media Mission)

ソライ東京 公式ウェブサイトは、東京都心・城東エリア（足立区・荒川区・葛飾区・台東区・千代田線沿線等）を中心とした賃貸仲介・売買コンサルティング・外国人向け居住支援を提供する次世代PropTechプラットフォームの顧客接点（フロントエンド）です。

```mermaid
graph TD
    classDef main fill:#eef6ff,stroke:#1b2a47,stroke-width:2px,color:#06152b;
    classDef feature fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#06152b;
    classDef lang fill:#faf5ff,stroke:#9333ea,stroke-width:2px,color:#06152b;
    classDef cta fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;

    SITE["ソライ東京 公式サイト<br/>https://soraitokyo.jp/"]:::main

    subgraph VALUES ["3大コアバリュー (Core Pillars)"]
        V1["① テクノロジー駆動<br/>(AI/DXによるゼロ無駄・高速対応)"]:::feature
        V2["② 外国人フレンドリー<br/>(ビザ・保証人・多言語完全支援)"]:::feature
        V3["③ カウンターレベルの信頼<br/>(おとり物件ゼロ・他社URL相見積もり)"]:::feature
    end

    subgraph ARCH ["多言語メディアアーキテクチャ (5 Locales)"]
        L_JA["日本語 (JA): 住環境・QOL・千代田線"]:::lang
        L_EN["英語 (EN): Visa・Guarantor・Tokyo Life"]:::lang
        L_VI["ベトナム語 (VI): Thuê nhà・Bảo lãnh・Chi phí"]:::lang
        L_RU["ロシア語 (RU): Аренда・Виза・Токио"]:::lang
        L_ID["インドネシア語 (ID): Sewa Rumah・Visa・Tokyo"]:::lang
    end

    subgraph CONV ["コンバージョン導線 (Inbound CTA)"]
        CTA_LINE["LINE公式アカウント<br/>(URL貼るだけ空室＆見積もり照会)"]:::cta
        CTA_QUOTE["初期費用シミュレーター (/quote)<br/>(相見積もり・リアルタイム試算)"]:::cta
        CTA_FB["Facebook Messenger<br/>(外国人向け多言語インバウンド対応)"]:::cta
    end

    SITE --> VALUES
    SITE --> ARCH
    SITE --> CONV
```

### 1.1 ミッション・ブランドビジョン (Mission & Vision)

1. **テクノロジー駆動（PropTech Automation）**:
   - 従来のアナログな不動産仲介業務をAIエージェント、OCR、Google Cloud Platform (Cloud Run / BigQuery)、HubSpot CMS連携によって徹底的に自動化。
   - 削減したオペレーションコストをお客様へ還元し、透明性の高い仲介手数料・初期費用割引を実現。

2. **外国人フレンドリー＆多言語包摂（Multilingual Inclusivity）**:
   - 日本の賃貸市場で外国籍居住者が直面する「保証人不要物件の不足」「言語障壁」「ビザステータス審査」の課題を解消。
   - 英語・ベトナム語・ロシア語・インドネシア語の5言語で独立したローカライズコンテンツを提供。

3. **高透明度・カウンターレベルの信頼（Counter-Level Trust）**:
   - 自社サイトに無駄な物件一覧（おとり広告の温床）を載せず、SUUMO・HOME'S・at home等のポータルサイトURLを送るだけで「空室確認」「最安見積もり」を提示。
   - しつこい電話営業や強引な追客を一切行わない「カウンター接客」の安心感をWeb体験として具現化。

---

## 2. サイトマップと提供機能一覧 (Sitemap & Features)

ソライ東京公式HPは、HubSpot CMS上に構築された高パフォーマンス・セマンティックなテンプレート群で構成されています。

| URLパス | ページ名・機能 | 主な役割・機能 | 対象ロケール |
| :--- | :--- | :--- | :--- |
| `/` | トップページ (Home) | ブランドビジョン、サービス紹介、千代田線エリア案内、新着ブログ、LINE/シミュレーター導線 | JA |
| `/about-us` | 会社概要 (About Us) | 代表創業ナラティブ（PV1位の真実）、4つの安心宣言、5ステップ、加盟協会、企業概要・マップ | JA, EN, VI, RU, ID |
| `/quote` | 初期費用シミュレーター | 家賃・管理費・敷金礼金等の入力から初期費用総額およびソライ割引額をリアルタイム計算 | JA, EN, VI, RU, ID |
| `/area-guide` | エリアガイド総合 | 千代田線・城東エリア（北千住・綾瀬・北綾瀬等）の家賃相場、街の魅力、治安、生活利便性 | JA, EN, VI, RU, ID |
| `/area-guide/chiyoda-line` | 千代田線特化ガイド | 千代田線全駅（代々木上原〜北綾瀬）の通勤アクセス、駅別家賃比較、住みやすさ詳細レポート | JA |
| `/plegio-kitaayase-asian` | 特選物件LP (プレジオ北綾瀬) | アジアンリゾート空間演出の新築特選物件、現地徹底取材写真、VRルームツアー、優先内見予約 | JA |
| `/blog` | ブログ一覧 (Blog Index) | 510記事以上の賃貸ノウハウ、エリア深掘り、外国人向け居住ガイド、カテゴリー・タグ検索 | JA, EN, VI, RU, ID |
| `/blog/{post-slug}` | ブログ記事詳細 | 9,000〜10,000文字の長文SEO記事、インラインSVG図解、比較表、関連記事カード、完全一致FAQ | JA, EN, VI, RU, ID |
| `/contact` | お問い合わせ (Contact) | LINE最優先CTA、相見積もり3ステップ図解、フォーム問い合わせ、電話番号案内 | JA, EN, VI, RU, ID |
| `/faqs` | よくある質問 (FAQs) | 初期費用、審査、外国人契約、内見、契約手続きに関するQ&A（FAQPage構造化データ連動） | JA, EN, VI, RU, ID |
| `/testimonials` | お客様の声 (Testimonials) | 実際にソライ東京で契約された日本人・外国人入居者のリアルな体験談・レビュー | JA, EN, VI, RU, ID |
| `/privacy-policy` | プライバシーポリシー | 個人情報保護方針、クッキーポリシー、データ取り扱い規程 | JA |

---

## 3. 多言語メディアアーキテクチャ (Multilingual Media Architecture)

ソライ東京は、単なる機械翻訳ではない「ロケール分離（Locale Isolation）」原則に基づき、5つの言語圏向けに独立した情報提供を実施しています。

```mermaid
graph LR
    classDef ja fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#06152b;
    classDef global fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;

    subgraph DOMAIN ["ドメイン階層 (Domain Structure)"]
        JA_PATH["https://soraitokyo.jp/<br/>(日本語 / デフォルト)"]:::ja
        EN_PATH["https://soraitokyo.jp/en/<br/>(英語)"]:::global
        VI_PATH["https://soraitokyo.jp/vi/<br/>(ベトナム語)"]:::global
        RU_PATH["https://soraitokyo.jp/ru/<br/>(ロシア語)"]:::global
        ID_PATH["https://soraitokyo.jp/id/<br/>(インドネシア語)"]:::global
    end

    subgraph FOCUS ["コンテンツ焦点 (Editorial Focus)"]
        F_JA["・街の住みやすさ、治安、商店街<br/>・千代田線/常磐線の混雑度・家賃相場<br/>・初期費用の賢い節約術・相見積もり"]
        F_GLOBAL["・外国人向け賃貸契約の完全マニュアル<br/>・在留資格 (Visa) 別審査攻略法<br/>・連帯保証人不要プラン・初期費用概算<br/>・バイリンガルスタッフによるLINEサポート"]
    end

    JA_PATH --> F_JA
    EN_PATH --> F_GLOBAL
    VI_PATH --> F_GLOBAL
    RU_PATH --> F_GLOBAL
    ID_PATH --> F_GLOBAL
```

### 多言語運用の特徴
1. **URLパスプレフィックス方式**: HubSpotの多言語CMS機能により、同一管理体系内で各言語の独立スラッグとhreflangタグを完全同期。
2. **完全静的生成＆ゼロコスト運用**: Claude/Gemini LLMチャットクォータを活用し、高品質なローカライズ記事・HTMLアセットを完全ゼロコストで静的ビルド。
3. **ネイティブ表現・文化適応**: 各国の住宅文化や賃貸用語（例: ベトナムの "Tiền đặt cọc", ロシアの "Залог", インドネシアの "Uang jaminan"）に最適化した用語体系を採用。


---
id: "01_site_architecture"
title: "1. サイト構造・多言語・ロケール分離 (Site Architecture & Locale Isolation)"
category: "hp"
packages:
  - "soraitokyo-cms-theme"
cloud_run:
endpoints:
secrets:
  - "HUBSPOT_ACCESS_TOKEN"
databases:
---

# 1. サイト構造・多言語・ロケール分離 (Site Architecture & Locale Isolation)

<!-- MODULE_METADATA_START -->
| 項目 | 定義・対象リソース |
| :--- | :--- |
| **対象パッケージ** | `soraitokyo-cms-theme` |
| **Cloud Run サービス** | N/A (HubSpot CMS / Cloudflare Edge Proxy) |
| **主要エンドポイント** | 5言語ロケール別URLルーティング (`/`, `/en/`, `/vi/`, `/ru/`, `/id/`) |
| **依存 Secret** | `HUBSPOT_ACCESS_TOKEN`, Cloudflare API |
| **Firestore コレクション** | N/A (HubSpot CMS Pages / Blogs) |
<!-- MODULE_METADATA_END -->


本章では、ソライ東京 公式ウェブサイト（https://soraitokyo.jp/）のルーティング構造、多言語ロケール分離設計、静的配信とSPA/MPAハイブリッドアーキテクチャ、およびCDN/Edgeキャッシュ最適化戦略を詳述します。

---

## 1. URLルーティング構造 (URL Routing Hierarchy)

ソライ東京のURL構造は、検索エンジン（Google, Bing等）および多言語ユーザーに対する直感的なナビゲーションを提供するため、ISO 639-1言語コードをプレフィックスとした階層的URLを採用しています。

```
https://soraitokyo.jp/
├── /                                # [JA] 日本語トップページ
├── /about-us                        # [JA] 会社概要（創業ストーリー・4つの安心・5ステップ）
├── /consultation                    # [JA] オンライン相談・詳細物件リクエスト（HubSpot Meetings）
├── /quote                           # [JA] 初期費用シミュレーター
├── /contact                         # [JA] お問い合わせ・LINE相談窓口
├── /faqs                            # [JA] よくある質問
├── /testimonials                    # [JA] お客様の声
├── /area-guide                      # [JA] エリアガイド総合
│   ├── /chiyoda-line                # [JA] 千代田線特化エリアガイド
│   └── /kita-senju-zone             # [JA] 北千住ゾーン詳細
├── /plegio-kitaayase-asian          # [JA] 厳選新築特選LP（プレジオ北綾瀬ASIAN）
├── /blog                            # [JA] ブログ一覧（カテゴリー・タグ）
│   ├── /tag/{tag-slug}              # [JA] タグ別ブログ一覧
│   └── /{post-slug}                 # [JA] ブログ記事詳細 (全510+記事)
│
├── /en/                             # [EN] 英語トップページ
│   ├── about-us                     # [EN] 会社概要 (English)
│   ├── consultation                 # [EN] Free Online Apartment Consultation (English)
│   ├── quote                        # [EN] Initial Cost Simulator (English)
│   ├── contact                      # [EN] Contact Us & LINE Inquiry (English)
│   ├── faqs                         # [EN] English FAQs
│   └── blog/{post-slug}             # [EN] English Articles (Expats & Visa Guide)
│
├── /vi/                             # [VI] ベトナム語トップページ
│   ├── about-us                     # [VI] Giới thiệu công ty (Vietnamese)
│   ├── consultation                 # [VI] Tư vấn tìm nhà online (Vietnamese)
│   ├── quote                        # [VI] Tính toán chi phí ban đầu (Vietnamese)
│   ├── contact                      # [VI] Liên hệ & Tư vấn qua LINE (Vietnamese)
│   ├── faqs                         # [VI] FAQ tiếng Việt
│   └── blog/{post-slug}             # [VI] Bài viết tiếng Việt (Thuê nhà & Visa)
│
├── /ru/                             # [RU] ロシア語トップページ
│   ├── about-us                     # [RU] О компании (Russian)
│   ├── consultation                 # [RU] Онлайн-консультация по аренде жилья (Russian)
│   ├── quote                        # [RU] Калькулятор первоначальных расходов (Russian)
│   ├── contact                      # [RU] Связаться с нами (Russian)
│   ├── faqs                         # [RU] Russian FAQs
│   └── blog/{post-slug}             # [RU] Статьи на русском языке (Аренда и виза)
│
└── /id/                             # [ID] インドネシア語トップページ
    ├── about-us                     # [ID] Profil Perusahaan (Indonesian)
    ├── consultation                 # [ID] Konsultasi Sewa Apartemen Online (Indonesian)
    ├── quote                        # [ID] Simulasi Biaya Awal (Indonesian)
    ├── contact                      # [ID] Hubungi Kami (Indonesian)
    └── blog/{post-slug}             # [ID] Artikel Bahasa Indonesia (Sewa Rumah)
```

---

## 2. ロケール分離（Locale Isolation）方針

ソライ東京のメディア運用において最も重要な原則が「ロケール分離（Locale Isolation）」です。単一の日本語記事を全言語にそのまま機械翻訳するのではなく、対象ユーザーの属性・課題感に応じたコンテンツの棲み分けを徹底しています。

```mermaid
graph TD
    classDef ja fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#06152b;
    classDef foreign fill:#faf5ff,stroke:#9333ea,stroke-width:2px,color:#06152b;
    classDef policy fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;

    AUDIENCE["ターゲットユーザーの課題・関心"]:::policy

    subgraph JA_LOCALE ["日本語ロケール (JA)"]
        JA_USER["日本人・国内住み替え層"]:::ja
        JA_NEED1["・通勤ラッシュ・混雑回避（千代田線・常磐線）"]
        JA_NEED2["・商店街の充実度・スーパーの物価・治安"]
        JA_NEED3["・相見積もりによる初期費用値引き・仲介手数料節約"]
        JA_NEED4["・街の歴史・カフェ・子育て環境・住みやすさ (QOL)"]
    end

    subgraph GLOBAL_LOCALE ["外国語ロケール (EN / VI / RU / ID)"]
        G_USER["留学生・外国人就労者・外資系駐在員"]:::foreign
        G_NEED1["・外国籍拒否（外国籍不可）の回避・保証会社審査攻略"]
        G_NEED2["・在留資格 (Visa) や在職証明書類の提出要件"]
        G_NEED3["・連帯保証人なしでの契約手続き・敷金礼金トラブル防止"]
        G_NEED4["・多言語LINEサポート・入居後のライフライン開設支援"]
    end

    AUDIENCE --> JA_USER
    AUDIENCE --> G_USER
    JA_USER --> JA_NEED1 & JA_NEED2 & JA_NEED3 & JA_NEED4
    G_USER --> G_NEED1 & G_NEED2 & G_NEED3 & G_NEED4
```

### 2.1 コンテンツ分離マトリクス

| 項目 | 日本語コンテンツ (JA) | 外国語コンテンツ (EN, VI, RU, ID) |
| :--- | :--- | :--- |
| **主要テーマ** | 街のQOL、通勤利便性、住みやすさ、初期費用相見積もり | 外国籍入居審査、ビザ別手続き、保証会社対策、初期費用解説 |
| **トーン＆マナー** | カウンター接客の温かみ、共感性、生活実感描写 | 親切丁寧なガイド、法的手続きの明快な説明、不安解消 |
| **禁止事項** | 押し売り・不自然なAI表現・「です・ます」3連発 | 直訳的な機械翻訳調、日本国内向けの前提知識省略 |
| **CTA誘導先** | LINE公式「ポータルURL貼り付けで空室＆見積もり確認」 | LINE公式 / FB Messenger「多言語外国人サポート窓口」 |

---

## 3. 静的配信・SPA/MPAアーキテクチャ (Static Delivery & Hybrid MPA/SPA)

ソライ東京のフロントエンドは、検索エンジン評価（SEO/AEO）と高速なページロードを両立するため、**Multi-Page Application (MPA) を基盤としつつ、動的機能には軽量なSPA/クライアントコンポーネントを埋め込むハイブリッド構成**を採用しています。

```mermaid
graph LR
    classDef edge fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#06152b;
    classDef client fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;
    classDef origin fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#06152b;

    subgraph CLIENT ["クライアント環境"]
        BROWSER["Webブラウザ (Mobile / Desktop)"]:::client
    end

    subgraph EDGE ["HubSpot Edge CDN / Cloudflare"]
        CACHE["エッジキャッシュ (HTML / CSS / JS / WebP / SVG)"]:::edge
    end

    subgraph APIS ["バックエンド API (GCP Cloud Run)"]
        QUOTE_API["/api/quote (初期費用計算)"]:::origin
        INQUIRY_API["/api/inquiry (問合せルーティング)"]:::origin
    end

    BROWSER -->|1. 超高速静的HTML取得| CACHE
    BROWSER -.->|2. 動的計算リクエスト| QUOTE_API
    BROWSER -.->|3. フォーム非同期送信| INQUIRY_API
```

### 3.1 レンダリング方式の選定基準
- **ブログ・LP・固定ページ（MPA / 静的HTML）**:
  - 全ページがHubSpot CMS上で完全なHTMLとして事前ビルド。
  - クライアントサイドJSのロードを待たずにFirst Contentful Paint (FCP) < 0.8s を達成。
  - クローラー（Googlebot, Bingbot, PerplexityBot, GPTBot）に対して100%完全なHTMLと構造化データを即時返却。
- **初期費用シミュレーター（`/quote`）**:
  - バニラJS / 軽量Reactコンポーネントにより、入力変更と同時にクライアントサイドで即時再計算。
  - 必要に応じてバックエンド（`portal-quote-prototype`）と非同期通信し、精密な相見積もり見積書PDFを生成。

---

## 4. CDN & Edgeキャッシュ最適化 (CDN & Edge Cache Optimization)

HubSpot CMSのグローバルCDNおよびエッジ配信ネットワークを最大限に活用し、ミリ秒単位の応答速度を維持しています。

### 4.1 キャッシュ制御ルール
1. **静的アセット（CSS, JS, Fonts, Images）**:
   - `Cache-Control: public, max-age=31536000, immutable`
   - ファイル名にビルドハッシュまたはクエリパラメータ（例: `style.css?v=20260828`）を付与し、キャッシュ破棄を担保。
2. **HTMLページ（記事・LP・固定ページ）**:
   - HubSpot Edge Cacheにより世界中のPOPでキャッシュ配信。
   - 更新時は HubSpot CMS API の `POST /cms/v3/blogs/posts/{postId}/draft/push-live` または `republish_site_pages` を実行してエッジキャッシュを即時パージ（Edge Invalidation）。
3. **キャッシュバスター検証**:
   - デプロイ直後の検証時は `?cb=<timestamp>` クエリパラメータまたは `curl -H "Pragma: no-cache" -H "Cache-Control: no-cache"` により最新アセットの取得を担保。


---
id: "02_design_system"
title: "2. デザインシステム・SVG・UI規約 (Design System, SVG & UI Standards)"
category: "hp"
packages:
  - "soraitokyo-cms-theme"
  - "real-estate-cms-operations"
cloud_run:
endpoints:
secrets:
databases:
---

# 2. デザインシステム・SVG・UI規約 (Design System, SVG & UI Standards)

<!-- MODULE_METADATA_START -->
| 項目 | 定義・対象リソース |
| :--- | :--- |
| **対象パッケージ** | `soraitokyo-cms-theme`, `real-estate-cms-operations` |
| **Cloud Run サービス** | N/A (CSS/SCSS & SVG Linting Engine) |
| **主要エンドポイント** | カラーパレット、タイポグラフィ、SVG 幾何・文字コントラスト規約 |
| **依存 Secret** | N/A (Design System Tokens) |
| **Firestore コレクション** | N/A (CSS / SVG Assets) |
<!-- MODULE_METADATA_END -->


本章では、ソライ東京のブランドアイデンティティを支える「クワイエット・ラグジュアリー（Quiet Luxury）＆ エディトリアル・ホライズン（Editorial Horizon）」デザインシステム、カラーパレット、タイポグラフィ、SVGコントラスト規約、および共通UIコンポーネントの仕様を詳述します。

---

## 1. ブランドカラーパレット (Brand Color Palette)

ソライ東京のカラーシステムは、落ち着きのある日本の都市景観と現代的な洗練を融合させた配色を採用しています。

```mermaid
graph LR
    classDef navy fill:#1b2a47,stroke:#06152b,color:#ffffff;
    classDef terra fill:#c57e5f,stroke:#a45b3e,color:#ffffff;
    classDef slate fill:#64748b,stroke:#475569,color:#ffffff;
    classDef sand fill:#f8f9fa,stroke:#cbd5e1,color:#06152b;
    classDef emerald fill:#10b981,stroke:#059669,color:#ffffff;
    classDef gold fill:#d4af37,stroke:#c29d23,color:#06152b;

    C1["Sorai Navy<br/>#1b2a47<br/>(プライマリ・信頼・ヘッダー)"]:::navy
    C2["Terracotta<br/>#c57e5f<br/>(アクセント・温かみ・CTA)"]:::terra
    C3["Slate Gray<br/>#64748b<br/>(セカンダリ・本文・境界線)"]:::slate
    C4["Sand / Off-White<br/>#f8f9fa<br/>(背景・カードベース)"]:::sand
    C5["Emerald<br/>#10b981<br/>(安心バッジ・成功状態)"]:::emerald
    C6["Gold Accent<br/>#d4af37 / #c29d23<br/>(特選・上質・アンダーライン)"]:::gold
```

### 1.1 カラーコード一覧

| カラー名 | 16進数 (Hex) | RGB / HSL | 主な用途・適用先 |
| :--- | :--- | :--- | :--- |
| **Sorai Navy** | `#1b2a47` | `rgb(27, 42, 71)` | ヘッダー、フッター、大見出し (H1/H2)、SVG背景シェイプ、ボタン背景 |
| **Terracotta** | `#c57e5f` | `rgb(197, 126, 95)` | アクセントカラー、ステップ番号、CTAハイライト、重要バッジ |
| **Slate Gray** | `#64748b` | `rgb(100, 116, 139)` | 本文テキスト、サブタイトル、パンくずリスト、テーブル境界線 |
| **Sand / Off-White** | `#f8f9fa` | `rgb(248, 249, 250)` | サイト全体の背景色、コンテンツカード背景、入力フォーム背景 |
| **Pure White** | `#ffffff` | `rgb(255, 255, 255)` | カード背景、モーダル背景、**SVGシェイプ上のテキストカラー（必須）** |
| **Emerald** | `#10b981` | `rgb(16, 185, 129)` | 「安心宣言」「保証人不要」「営業電話なし」等のトラストバッジ |
| **Sorai Gold** | `#d4af37` | `rgb(212, 175, 55)` | プレミアム物件ハイライト、見出し下装飾ライン、アクティブボーダー |

---

## 2. タイポグラフィ規約 (Typography Standards)

読者の視覚的疲労を最小限に抑え、雑誌のような上質な組版を実現するため、フォントファミリーおよび文字間・行間のルールを厳格に定めています。

### 2.1 フォントスタック
- **日本語テキスト**: `Noto Sans JP`, `Shippori Mincho` (会社概要等のエディトリアル見出し・クオート), sans-serif
- **欧文・英数字**: `Inter`, `Outfit`, sans-serif
- **コード・データ**: `Fira Code`, `SFMono-Regular`, Consolas, monospace

### 2.2 スケールと行間規約
- **H1 (メインタイトル)**: `font-size: 2.2rem (35px)`, `font-weight: 800`, `line-height: 1.35`, `margin-bottom: 2rem`
- **H2 (章見出し)**: `font-size: 1.65rem (26px)`, `font-weight: 700`, `line-height: 1.45`, `margin-top: 3rem`, `margin-bottom: 1.25rem`
- **H3 (節見出し)**: `font-size: 1.25rem (20px)`, `font-weight: 600`, `line-height: 1.5`, `margin-top: 2rem`, `margin-bottom: 1rem`
- **本文 (Paragraph)**: `font-size: 1rem (16px)`, `line-height: 1.85〜2.0`, `color: #33475f`, `letter-spacing: 0.02em`
- **ブリージング・ルーム（Breathing Room）**:
  - コンテンツ最大幅: `max-width: 1040px`（左右ガター `padding: 0 36px`, `margin: 0 auto`）
  - セクション間隔: `margin-bottom: 90px〜120px` により、PC画面での「ぎっしり感・窒息感」を完全排除。

---

## 3. SVGコントラスト規約 (SVG Text Contrast Standards)

ブログ記事やLPに埋め込まれるインラインSVG図解（ステップ図、ロードマップ、比較チャート）において、**背景シェイプ上の文字が背景色と同化して不可視になる問題を完全に排除するための絶対ルール**です。

```mermaid
graph TD
    classDef rule fill:#fff1f2,stroke:#e11d48,stroke-width:2px,color:#06152b;
    classDef correct fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#06152b;
    classDef wrong fill:#fee2e2,stroke:#dc2626,stroke-width:2px,color:#06152b;

    CHECK["SVG生成 / 校正 / デプロイ"]:::rule

    subgraph VIOLATION ["❌ 重大違反 (Contrast Failure)"]
        W1["<circle fill='#1b2a47'><text fill='#1b2a47'>01</text></circle>"]:::wrong
        W2["<rect fill='#c57e5f'><text fill='#000000'>STEP 1</text></rect>"]:::wrong
        W_DESC["背景色がダークなのに文字が同色または黒で視認不能"]
    end

    subgraph ENFORCED ["✅ 必須準拠 (Enforced Standard)"]
        C1["<circle fill='#1b2a47'><text fill='#ffffff' font-weight='bold'>01</text></circle>"]:::correct
        C2["<rect fill='#c57e5f'><text fill='#ffffff' font-weight='bold'>STEP 1</text></rect>"]:::correct
        C_DESC["有色背景シェイプ上のテキストは必ず純白 (#ffffff) を指定"]
    end

    CHECK --> VIOLATION
    CHECK --> ENFORCED
```

### 3.1 SVG幾何配置・コントラスト自動修復（`svg_comprehensive_linter.py`）
1. **幾何配置・レスポンシブ検証**:
   - SVG横幅780px境界・カードボックス境界からのはみ出し検知、文字幅推定による動的フォント縮小（`font-size` 自動調整）、および長文 `<tspan>` 自動折り返し。
2. **色彩コントラスト検証（WCAG AAA 準拠）**:
   - `<circle>`, `<rect>`, `<path>` 等の塗りつぶし色（`fill`）がダークカラー（`#1b2a47`, `#c57e5f`, `#64748b`, `#06152b` 等）である場合、その内包または直上に重なる `<text>` の `fill` 属性は **必ず `#ffffff`（純白）** に自動補正。
3. **自動修復オプション**:
   - `python3 svg_comprehensive_linter.py --fix` を実行することで、全記事の幾何はみ出しおよび不正カラーを即座に安全修復。
4. **CI/CDデプロイ前ゲート**:
   - HubSpot CMSへの静的ブログデプロイ（`run_auto_editorial_pipeline.py`）時に自動実行され、幾何崩れやコントラスト違反のある記事はデプロイがブロックされる。

---

## 4. 共通UIコンポーネント仕様 (Common UI Components)

### 4.1 サイトヘッダー (Global Navigation Header)
- **デスクトップ**: ブランドロゴ ➔ ソライ東京について（ドロップダウン: 会社概要/お客様の声/FAQ）➔ エリアガイド ➔ 初期費用試算 ➔ ブログ ➔ 新築特選 ➔ 言語切替 ➔ LINE無料相談CTA
- **モバイルドロワー**: 2x2クイックナビカード（ソライ東京について / 初期費用試算 / エリアガイド / お問い合わせ）＋アコーディオンメニュー。

### 4.2 スマホ用常時固定下部ナビゲーション (`.mobile-bottom-nav`)
スマートフォン閲覧時に画面最下部に固定表示される6タブ構成のナビゲーションバー。

```html
<nav class="mobile-bottom-nav">
  <a href="/" class="nav-item is-active"><span class="icon">🏠</span><span class="label">ホーム</span></a>
  <a href="/about-us" class="nav-item"><span class="icon">🏢</span><span class="label">会社概要</span></a>
  <a href="/area-guide" class="nav-item"><span class="icon">🗺️</span><span class="label">エリア</span></a>
  <a href="/blog" class="nav-item"><span class="icon">✍️</span><span class="label">ブログ</span></a>
  <a href="#lang-modal" class="nav-item" id="mobile-nav-lang-btn"><span class="icon">🌐</span><span class="label">言語</span></a>
  <a href="/contact" class="nav-item highlight"><span class="icon">💬</span><span class="label">相談する</span></a>
</nav>
```
- **多言語自動切り替え**: ロケールに応じてラベルを動的に置換（JA: 会社概要 / EN: About / VI: Giới thiệu / RU: О нас / ID: Profil）。
- **アクティブ状態検知**: 現在閲覧中の URL パスと完全一致するタブに `is-active` クラスを自動付与。

### 4.3 多言語ボトムシートモーダル (`#lang-modal` / `.lang-bottom-sheet`)
モバイルナビの「言語」タップ時に下部からスライドアップする多言語切替シート。
- 5言語（日本語, English, Tiếng Việt, Русский, Bahasa Indonesia）の現在ページ対応 URL へ即時リダイレクト。
- `backdrop-filter: blur(8px)` によるグラスモーフィズム背景とスムーズな `translateY` トランジション。

### 4.4 動的目次コンポーネント (`.toc-container` / `.toc-wrapper`)
ブログ記事内の `<h2>`, `<h3>` 見出しを自動抽出・構造化レンダリングする目次ブロック。
- **折りたたみトグル**: モバイル環境での縦長圧迫を防ぐ開閉アコーディオン。
- **スクロールスパイ**: Intersection Observer により、現在閲覧中の章をハイライト表示。

### 4.5 LINE/FB無料相談CTAボックス (`c-line-cta-box`)
各ブログ記事末尾および固定ページに配置される、高コンバージョン率を誇る問い合わせ導線。
- **3大安心バッジ**: ① しつこい営業電話なし ② ポータルURL相見積もり0円 ③ 匿名相談OK
- **3ステップ図解**: [1. SUUMO等のURLをコピー] ➔ [2. ソライLINEに貼り付け] ➔ [3. 空室状況＆最安見積もりが届く]

### 4.6 関連記事カード (`c-related-links-card`)
内部リンク網（Silo構造）を強化し、ユーザーの回遊率を高めるカード型UI。
- 記事のサムネイル画像、カテゴリバッジ、タイトル、抜粋、および矢印リンクを内包。
- レスポンシブグリッドにより、モバイルでは1列、PCでは2列に最適レイアウト。

### 4.7 レスポンシブ比較テーブル (`<table>`)
各エリアの家賃相場比較、初期費用項目一覧、他社仲介手数料との比較を直感的に提示。
- `overflow-x: auto` による横スクロール対応（`.table-responsive-wrapper`）、ネイビーヘッダー（`#1b2a47`）、偶数行ストライプ表示（`background: #f8fafc`）。

### 4.8 著者・監修者プロフィールボックス (`.author-profile-box`)
記事末尾（まとめの直後）に配置され、記事の信頼性と権威性（E-E-A-T）を保証する監修者カード。
- **アバター画像**: `https://246269021.fs1.hubspotusercontent-na2.net/hubfs/246269021/soraitokyo-theme/assets/editorial_avatar_birds.jpg`（円形 `border-radius: 50%`, `80x80px`）。
- **監修者肩書**: `執筆者：Sorai Tokyo 編集部（宅地建物取引士 監修）`（多言語版は各言語に完全ローカライズ）。
- **構造化データ連携**: `BlogPosting` JSON-LD の `author` プロパティと完全同期。

### 4.9 Q/Aバッジ付きFAQカード (`.faq-card`)
AEO（AI検索エンジン最適化）とユーザーの視認性を極大化する質問・回答コンポーネント。
- **質問行**: ネイビー（`#1b2a47`）の「Q」バッジ（角丸6px, 白文字） ＋ `<h3>` 見出し。
- **回答行**: テラコッタ（`#c57e5f`）の「A」バッジ（角丸6px, 白文字） ＋ `<p>` 本文。
- **カード枠**: `background: #ffffff; border: 1px solid #e2e8f0; border-radius: 12px; padding: 20px; box-shadow: 0 2px 8px rgba(0,0,0,0.02)`。
- **スキーマ同期**: `FAQPage` JSON-LD の質問・回答テキストと 100% 一致。

### 4.10 中間インラインCTAボックス (`.c-cta-box`)
記事中盤（第2章または第3章後）に配置されるLINE無料相談誘導ボックス。
- **配色・枠線**: ウォームアイボリー背景（`#fdfbf7`）＋ テラコッタ点線（`2px dashed #c57e5f`）＋ 角丸16px。
- **ボタン**: 公式LINEグリーン（`#06c755`）のピル型ボタン（`border-radius: 50px`）。

### 4.11 レスポンシブ・ステップ手順カード (`.step-process-grid` / `.step-card`)
内見チェックフローや部屋探しの手順（1〜4ステップ）を、多言語表示時にも100%崩れず自動改行・自動高さ追従で提示するCSSグリッドコンポーネント。
- **コンテナ**: `display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 16px; margin: 32px 0`。
- **カード**: `background: #ffffff; border: 1.5px solid #1b2a47; border-radius: 14px; padding: 20px 16px; text-align: center; box-shadow: 0 4px 12px rgba(0,0,0,0.03)`。
- **番号バッジ (`.step-badge`)**: 幅36px円形、ネイビー背景（`#1b2a47`）、白文字（`#ffffff`）、太字800。
- **多言語完全リフロー**: 英語・ベトナム語・ロシア語・インドネシア語で文字数が膨張してもカード枠をはみ出さず、スマホ閲覧時も自動で1〜2列に最適化。


---
id: "03_hubspot_theme_modules"
title: "3. HubSpotテーマ・テンプレート・モジュール (HubSpot Theme & Custom Modules)"
category: "hp"
packages:
  - "soraitokyo-cms-theme"
cloud_run:
endpoints:
secrets:
  - "HUBSPOT_ACCESS_TOKEN"
databases:
---

# 3. HubSpotテーマ・テンプレート・モジュール (HubSpot Theme & Custom Modules)

<!-- MODULE_METADATA_START -->
| 項目 | 定義・対象リソース |
| :--- | :--- |
| **対象パッケージ** | `soraitokyo-cms-theme` |
| **Cloud Run サービス** | N/A (HubSpot CMS HubL Templates & Modules) |
| **主要エンドポイント** | `templates/*.html`, `modules/*.module`, `fields.json`, `theme.json` |
| **依存 Secret** | `HUBSPOT_ACCESS_TOKEN` (Theme CLI Deploy) |
| **Firestore コレクション** | N/A (HubSpot CMS Theme) |
<!-- MODULE_METADATA_END -->


本章では、ソライ東京 公式ウェブサイトの基盤となるHubSpot CMSテーマ構成（`soraitokyo-cms-theme` リポジトリ）、HubLテンプレート変数、再利用可能なカスタムモジュール、およびSCSS/JSのビルド・デプロイパイプラインを詳述します。

---

## 1. HubSpotテーマ構造 (Theme File Hierarchy)

ソライ東京のHubSpotテーマは、モジュール性と保守性を最優先したディレクトリ構成を採用しています。

```
soraitokyo-cms-theme/
├── theme.json                           # テーマメタデータ、カラー定義、フォント設定
├── fields.json                          # テーマ共通グローバル設定フィールド
├── templates/                           # ページテンプレート群
│   ├── home.html                        # トップページ（標準）
│   ├── home-optimized.html              # 高速化・CWV最適化トップページ
│   ├── about-us.html                    # 会社概要ページ（創業ストーリー・4つの安心・5ステップ）
│   ├── consultation.html                # オンライン相談・詳細物件リクエスト（HubSpot Meetings埋め込み・4ステップ・FAQ・5言語対応）
│   ├── quote.html                       # 初期費用シミュレーターページ
│   ├── contact.html                     # お問い合わせ・LINE相談ページ
│   ├── faqs.html                        # よくある質問 (FAQPage JSON-LD内包)
│   ├── testimonials.html                # お客様の声
│   ├── area-guide.html                  # エリアガイド一覧
│   ├── area-guide-chiyoda-line.html     # 千代田線特化エリアガイド
│   ├── area-guide-kita-senju-zone.html  # 北千住・綾瀬・北綾瀬ゾーン特化ガイド
│   ├── buy-sell-guide.html              # 不動産売買総合ポータル（千代田線エリアガイド形式・Sticky目次・購入/売却/ローン/外国人/相場）
│   ├── plegio-kitaayase-asian.html      # 特選物件LP（プレジオ北綾瀬ASIAN）
│   ├── blog-index.html                  # ブログ一覧・カテゴリー別ページ
│   ├── blog-post.html                   # ブログ記事詳細テンプレート
│   └── partials/                        # 共通パーツテンプレート
│       ├── header.html                  # サイト共通ヘッダー（ナビ・言語切替）
│       ├── footer.html                  # サイト共通フッター（免責・コピーライト）
│       ├── mobile-bottom-nav.html       # スマホ用常時固定下部ナビ（6タブ）
│       ├── dynamic-toc.html             # 目次（TOC）コンポーネント
│       ├── translations.html            # 多言語切替スイッチャー・言語別URLバインド
│       └── line-cta-banner.html         # LINE/FB無料相談CTAパーツ
├── css/                                 # スタイルシート (SCSS & CSS)
│   ├── style.scss                       # メインスタイルシート（全コンポーネント統合）
│   ├── _variables.scss                  # カラー・フォント・ブレークポイント変数
│   ├── _typography.scss                 # タイポグラフィ・エディトリアル規約
│   ├── _header.scss                     # ヘッダー・ナビゲーションスタイル
│   ├── _footer.scss                     # フッタースタイル
│   ├── _blog.scss                       # ブログ記事・テーブル・SVGスタイル
│   ├── modules/                         # 21個のコンポーネント分割SCSSモジュール
│   └── style.css                        # コンパイル済み本番CSS
├── js/                                  # クライアントサイドスクリプト
│   ├── main.js                          # グローバル初期化、ドロワー開閉、言語切替
│   ├── quote-simulator.js               # 初期費用シミュレーター計算ロジック
│   └── image-zoom.js                    # 画像ライトボックス・拡大プレビュー
└── assets/                              # 静的画像・アイコン・ロゴ
    ├── logo-sorai.svg                   # ソライ東京公式ロゴ
    └── icons/                           # UIアイコンセット
```

---

## 2. カスタムモジュール一覧・機能仕様 (Custom Modules)

各テンプレート内で再利用可能なコンポーネントモジュールを整備しています。

```mermaid
graph TD
    classDef comp fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#06152b;
    classDef data fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;

    THEME["HubSpot CMS Theme (soraitokyo)"]:::comp

    subgraph MODULES ["主要カスタムモジュール"]
        M1["① Hero Header Module<br/>(動画/画像背景, キャッチコピー, 2大CTA)"]:::comp
        M2["② Line Inquiry CTA Box<br/>(3ステップ図解, 3大安心バッジ, QRコード)"]:::comp
        M3["③ Initial Cost Simulator Card<br/>(家賃/管理費スライダー, リアルタイム差額試算)"]:::comp
        M4["④ Language Switcher Modal<br/>(JA / EN / VI / RU / ID 言語切り替え)"]:::comp
        M5["⑤ Responsive Comparison Table<br/>(エリア家賃相場, 仲介手数料比較)"]:::comp
        M6["⑥ Related Article Cards (Silo)<br/>(クラスタ内部リンク, サムネイル, 抜粋)"]:::comp
    end

    THEME --> MODULES
```

### 2.1 主要モジュールの仕様詳細

1. **Hero Header Module (`modules/hero-header`)**:
   - **機能**: ファーストビューでの信頼感醸成と直感的なアクション誘導。
   - **フィールド**: キャッチコピー（日本語/多言語）、サブコピー、背景画像/動画URL、プライマリCTA（LINE相談）、セカンダリCTA（初期費用試算）。

2. **Line Inquiry CTA Box (`modules/line-inquiry-cta`)**:
   - **機能**: ポータルサイト（SUUMO等）のURL送付による相見積もりを促す最重要CVモジュール。
   - **構造**: `c-line-hero-btn`（緑色ボタングローアニメーション）、安心バッジ3連（営業電話なし・相見積もり0円・匿名OK）、3ステップガイド。

3. **Language Switcher (`partials/header.html`)**:
   - **機能**: 現在のページパスに対応する多言語URLを自動検出し、言語モーダルまたはドロップダウンでシームレスに切り替え。
   - **HubL記述例**:
     ```jinja2
     {% for lang in content.translations %}
       <a href="{{ lang.slug }}" class="lang-link {% if lang.language == current_language %}active{% endif %}">
         {{ lang.language_title }}
       </a>
     {% endfor %}
     ```

---

## 3. HubL テンプレート変数・タグ仕様 (HubL Syntax Standards)

HubSpot専用テンプレート言語（HubL）を活用し、セマンティックなマークアップとSEOメタデータを自動生成しています。

### 3.1 共通メタデータ・ヘッダー記述規約
```jinja2
<!DOCTYPE html>
<html lang="{{ html_lang }}">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>{{ page_meta.html_title || content.html_title }} | ソライ東京</title>
  <meta name="description" content="{{ page_meta.meta_description || content.meta_description }}">
  
  {# 多言語 hreflang タグの自動出力 #}
  {% if content.translated_content %}
    {% for lang_code, trans in content.translated_content.items() %}
      <link rel="alternate" hreflang="{{ lang_code }}" href="{{ trans.absolute_url }}" />
    {% endfor %}
    <link rel="alternate" hreflang="x-default" href="{{ content.absolute_url }}" />
  {% endif %}
  
  {# 構造化データ (JSON-LD) の安全な挿入 #}
  {{ standard_header_includes }}
</head>
```

### 3.2 エリアガイド・千代田線特集ページの動的記事フェッチ仕様 (Dynamic HubL Loop)
千代田線沿線エリアガイド（`templates/area-guide-chiyoda-line.html`）は、最新のブログ記事を自動反映するため、HubL `blog_recent_posts` を用いた動的レンダリングエンジンを採用しています。

1. **多言語ブログフェッチ & フォールバック**:
   各言語コード（`ja`, `en`, `vi`, `ru`, `id`）に応じたブログIDから最新100件を取得し、記事数が少ない非日本語ページは日本語記事を安全にフォールバック結合。
2. **千代田線関連度判定 & ゾーン分類**:
   駅名（北綾瀬、綾瀬、北千住、町屋、西日暮里、千駄木、根津、湯島、新御茶ノ水、大手町、赤坂、乃木坂、表参道、代々木上原など）、常磐線直通（亀有、松戸等）、タグID（`TAG_IDS.AREA_GUIDE`, `COHABITATION` 等）を自動判定し、東部（`east`）・中部（`middle`）・西部（`west`）・住みやすさ（`livability`）・カフェ街歩き（`cafe-walk`）の `data-categories` およびハッシュタグチップ用 `data-tags` を動的付与。
3. **クライアントサイドフィルタ & ページネーション連携**:
   1ページ6件の動的ページネーションおよびタブ・ハッシュタグ切り替えと完全連動。新着記事がHubSpotブログで公開されると即座に千代田線エリアガイドへ自動掲載されます。

### 3.3 オンライン相談ページ（templates/consultation.html）と言語サポート・ヒアリング仕様
無料1時間オンライン相談ページ（`/consultation`, `/en/consultation`, `/vi/consultation`, `/ru/consultation`, `/id/consultation`）は、押し売り営業を一切行わず、お客様の叶えたい暮らしや希望条件をプロと一緒に整理するための個別ヒアリングLPです。所要時間はゆったり話せる約1時間（60分）に設定されています。

1. **ヒアリング重視・安心設計（Hearing & Criteria Clarification First）**:
   - **面談の本質**: 一方的な物件提案や押し売りは行わず、間取り・通勤時間・日当たり・設備などの希望や予算・相場感をじっくり伺って「希望条件を整理する」ためのヒアリング相談としてメッセージングを統一。
   - **画面共有調査（オプショナル）**: すでにSUUMOやLIFULL HOME'S等で気になっている物件がある場合は、面談中にURLを共有いただくことで、業者専用データベース（レインズ等）を画面共有しながらリアルタイムに空室状況・初期費用をその場で調査。
   - **改訂4大トピック**:
     - Topic 1 (Primary): ご希望条件・ライフスタイルの丁寧なヒアリング（間取り・通勤・設備・予算バランスの整理）
     - Topic 2 (Live Audit): 気になるお部屋のリアルタイム空室調査（ご希望の場合・業者間DB画面共有）
     - Topic 3 (Budget): 初期費用・予算シミュレーション（不要オプション削減・適正費用算出）
     - Topic 4 (Support): 入居審査・スケジュール・外国籍サポート（日本語・英語・ベトナム語）
2. **対応言語の正式サポート拡充（日本語🇯🇵・英語🇺🇸・ベトナム語🇻🇳 3言語ライブ通話）**:
   - リアルタイムビデオ相談（Google Meet）は **日本語（JA）**、**英語（EN）**、および **ベトナム語（VI）** の3言語で公式実施。
   - 信頼リボン（Trust Ribbons）に言語対応バッジ（`ribbon_lang`）を全5言語で明記：
     - JA: `対応言語: 日本語 🇯🇵 / English 🇺🇸 / Tiếng Việt 🇻🇳`
     - EN: `Languages Supported: English 🇺🇸 / Japanese 🇯🇵 / Vietnamese 🇻🇳`
     - VI: `Hỗ trợ ngôn ngữ: Tiếng Nhật 🇯🇵 / Tiếng Anh 🇺🇸 / Tiếng Việt 🇻🇳`
     - RU: `Языки: Японский 🇯🇵, Английский 🇺🇸 и Вьетнамский 🇻🇳`
     - ID: `Bahasa: Jepang 🇯🇵, Inggris 🇺🇸 & Vietnam 🇻🇳`
3. **カレンダー案内バナー & 多言語アラートバナー仕様**:
   - カレンダー埋め込みウィジェット直上の案内通知ボックス（`.consult-lang-alert`）：
     - **JA・EN・VI（対応言語）**: 標準インフォメーション仕様（ネイビー左ボーダー・`fa-circle-info` アイコン）。EN環境では英語が公式対応となったため警告を撤廃し、ウェルカムメッセージ（「Live 1-on-1 consultations are fully supported in English 🇺🇸, Japanese 🇯🇵, and Vietnamese 🇻🇳. Camera-off participation is welcome!」）を表示。
     - **RU・ID（他言語）**: ハイライト仕様（`.is-highlight`・`fa-triangle-exclamation` アイコン）。リアルタイム面談が日本語・英語・ベトナム語で実施される旨を案内し、公式LINEおよびWeb問い合わせフォームへの直通ボタンを設けてテキスト相談へスムーズに誘導。
4. **FAQ 4（多言語・外国籍サポート）の最適化 & FAQPage JSON-LD同期**:
   - Google Meetライブ面談の対応言語（日本語・英語・ベトナム語）と、他言語（ロシア語・インドネシア語等）におけるテキストサポート体制をQ&A形式で明記。
   - `FAQPage` 構造化データ（Schema.org JSON-LD）にも自動同期され、AEO/SEO検索結果での適切なリッチスニペット表示を実現。

---

## 4. ビルド・デプロイ・キャッシュ再公開パイプライン (Build & Deploy Workflow)

テーマの修正・スタイルシートの更新は、専用のCLIおよびMCPツールを通じて本番環境へ安全に反映されます。

```mermaid
sequenceDiagram
    autonumber
    actor Dev as 開発者 / Antigravity Agent
    participant Local as ローカルリポジトリ
    participant SCSS as Sass Compiler
    participant HS_API as HubSpot CMS API
    participant CDN as HubSpot Edge CDN / GSC

    Dev->>Local: SCSS / HubL テンプレート編集
    Local->>SCSS: npm run build:css (Sass コンパイル)
    SCSS-->>Local: style.css 生成 (Mini/Map)
    Dev->>HS_API: hubspot:deploy_cms_theme (テーマファイル同期)
    HS_API-->>Local: デプロイ完了レスポンス
    Dev->>HS_API: hubspot:republish_site_pages (全40ページ再公開)
    HS_API->>CDN: Edge キャッシュ即時パージ
    Dev->>CDN: hubspot:submit_url_to_gsc (Google即時クロール要請)
```

### 4.1 デプロイメントコマンド規約
1. **SCSSコンパイル**:
   ```bash
   cd /Users/adachishuuhei/soraitokyo-theme-prod-fetched
   sass css/style.scss css/style.css --style compressed
   ```
2. **テーマデプロイ**:
   - `hubspot:deploy_cms_theme` を実行し、変更差分をHubSpotクラウドへ同期。
3. **全ページキャッシュパージ＆再公開**:
   - `hubspot:republish_site_pages` を実行し、全40ページ以上の静的ページを新スタイルで再公開。
4. **Google Search Console 即時送信**:
   - `hubspot:submit_url_to_gsc` により更新URLを一括送信。

---

## 5. Core Web Vitals & アセット配信最適化基準 (CWV & Asset Optimization)

本番サイトの表示速度とCore Web Vitals（LCP, FCP, TBT, CLS）を最高水準に保つため、以下の最適化基準を全テンプレート・アセットに適用しています。

### 5.1 Webフォント & アイコンの非同期読み込み
レンダリングブロック（Render-blocking resources）を完全に排除するため、以下の非同期化手法を標準採用しています。
```html
<!-- Google Fonts 非同期読み込み -->
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Outfit:wght@500;700&family=Plus+Jakarta+Sans:wght@400;600;700&family=Noto+Sans+JP:wght@400;600;700&family=Shippori+Mincho:wght@600;700&display=swap" media="print" onload="this.media='all'">
<noscript>
  <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Outfit:wght@500;700&family=Plus+Jakarta+Sans:wght@400;600;700&family=Noto+Sans+JP:wght@400;600;700&family=Shippori+Mincho:wght@600;700&display=swap">
</noscript>

<!-- Font Awesome 非同期読み込み -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" media="print" onload="this.media='all'">
<noscript>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
</noscript>
```

### 5.2 静的画像・サムネイルの配信規約 (Retina 2x & WebP)
1. **Retina適正サイズ（380×380px）**:
   - エリアガイド・カテゴリーアイコン（`assets/*blue_gold.png` 等）は、表示枠（190×140px）に対して過大な1024px PNGを直接配信せず、Retina 2xに最適化された **380×380px**（約30〜80KB）で管理・配信する。
2. **HubSpot CDN 自動WebPリサイズクエリ**:
   - `thumb_url?width=380` または `thumb_url|resize_image_url(380)` を適用し、CDNエッジからWebP形式で最小容量配信する。
3. **遅延読み込み**:
   - ファーストビュー外の画像には `loading="lazy"` および `decoding="async"` を必須とする。

### 5.3 CLI パフォーマンス自動監査ツール
開発環境からワンコマンドでLighthouse監査（デスクトップ・モバイル）を実行できるスクリプトを配備：
```bash
# デスクトップ版監査
python3 tools/run_lighthouse_audit.py --desktop

# モバイル版監査（4x CPU Throttling）
python3 tools/run_lighthouse_audit.py --mobile
```
実測スコア基準：
- **デスクトップ**: Performance **92点 (Good)**、FCP **0.7s**、LCP **1.5s**、TBT **20ms**、CLS **0.00**
- **実測Core Web Vitals**: Google CrUX基準を大幅にクリア。

---

## 6. ブログ記事コンバージョン（CTA）アーキテクチャ (Blog Post Multi-Tier CTA Spec)

ブログ記事テンプレート（`templates/blog-post.html`）には、読者のスクロール深度や読了状況に合わせた **「3段階マルチレイヤーCTA構造」** が全記事に標準実装されています。

```mermaid
graph TD
    classDef hero fill:#002C65,stroke:#D4B574,stroke-width:2px,color:#FFFFFF;
    classDef mid fill:#FDFBF7,stroke:#E8E2D5,stroke-width:2px,color:#002C65;
    classDef endcta fill:#0B1329,stroke:#D4B574,stroke-width:2px,color:#FFFFFF;

    START["記事アクセス (読者100%)"] --> TOP["① ファーストビューCTA (.post-top-cta-card)<br/>(アイキャッチ直下・目次直上 / 到達率100%)"]:::hero
    TOP --> TOC["目次 (Table of Contents)"]
    TOC --> BODY1["前半コンテンツ (H2-1〜H2-2)"]
    BODY1 --> MID["② 中段インラインCTA (.sorai-mid-cta)<br/>(核心情報読了直後 / 到達率約40〜60%)"]:::mid
    MID --> BODY2["後半コンテンツ (詳細・FAQ・まとめ)"]
    BODY2 --> END["③ ラストCTA (.sorai-end-cta / .c-cta-box)<br/>(記事最末尾 / 到達率約10〜35%)"]:::endcta
```

### 6.1 3段階CTAの機能・デザイン仕様

1. **① ファーストビューCTA (`.post-top-cta-card`)**:
   - **配置場所**: 記事ヘッダー（アイキャッチ画像・投稿日・著者情報）の直下、目次（TOC）の直前。
   - **到達率**: **100%（全読者が必ず目にする位置）**。
   - **デザイン**: プレミアムダークネイビー背景（`linear-gradient(135deg, #0b1329 0%, #1a2a4a 100%)`）、ゴールドブランド名、ロゴバッジ。
   - **メッセージ**: 5言語完全対応（例: 「気になる物件URLを送るだけ。空室確認＆適正見積もりをLINEで完結」）。
   - **3大アクション導線**:
     - **LINE相談 (`.post-top-cta-btn-line`)**: ゴールドボタン、`openQrCodeReader=1`、`utm_source=blog_post&utm_medium=inline_cta&utm_campaign=above_fold`。
     - **オンライン予約 (`.post-top-cta-btn-web`)**: `/contact?tab=booking` への直接予約リンク。
     - **AI電話 24時間受付 (`.post-top-cta-btn-phone`)**: `tel:03-6161-8484`（AI自動音声受付）。
   - **実績**: 2026年9月1日のLINE相談など、最下部までスクロールしない読者からのCVを確実に獲得。

2. **② 中段インラインCTA (`.sorai-mid-cta`)**:
   - **配置場所**: 記事本文の中腹（主要な疑問・ダイヤ・治安統計が解決した直後）。
   - **デザイン**: 読みやすさを邪魔しないライトベージュ基調（`#FDFBF7`）、1pxボーダー、最大幅680px。
   - **役割**: 読者の検索意図が解決し、モチベーションが最高潮に達した瞬間でのスムーズな相談誘導。

3. **③ ラストCTA (`.sorai-end-cta` / `.c-cta-box`)**:
   - **配置場所**: 記事最末尾、まとめ・FAQの直後。
   - **到達率**: 約10%〜35%（超長文読破ユーザー）。
   - **役割**: 記事を最後まで読み切った熱量の高い見込み客に対する最終クロージング。



---
id: "04_editorial_automation"
title: "4. 自律執筆・SASH・校正パイプライン (Editorial Automation & SASH Suite)"
category: "hp"
packages:
  - "real-estate-cms-operations/automation/"
  - "pipeline/*"
cloud_run:
  - "sorai-auto-editorial"
endpoints:
secrets:
  - "HUBSPOT_ACCESS_TOKEN"
  - "MLIT_API_KEY"
  - "GEMINI_API_KEY"
databases:
  - "editorial_queue"
  - "knowledge_articles"
---

# 4. 自律執筆・SASH・校正パイプライン (Editorial Automation & SASH Suite)

<!-- MODULE_METADATA_START -->
| 項目 | 定義・対象リソース |
| :--- | :--- |
| **対象パッケージ** | `real-estate-cms-operations/automation/`, `pipeline/*` |
| **Cloud Run サービス** | `sorai-auto-editorial` (Cloud Run Jobs) |
| **主要エンドポイント** | 4言語並列自律執筆・SASH・校正・Push-Live (`run_auto_editorial_pipeline.py`) |
| **依存 Secret** | `HUBSPOT_ACCESS_TOKEN`, `MLIT_API_KEY`, `GEMINI_API_KEY` |
| **Firestore コレクション** | BigQuery `editorial_queue`, Firestore `knowledge_articles` |
<!-- MODULE_METADATA_END -->


本章では、ソライ東京の高品質メディアコンテンツを支える「自律型エディトリアルパイプライン」、IDE LLMクォータを活用したゼロコスト静的生成、SASH (Sorai Tokyo Autonomous Site Health & SEO Suite) 自動保守群、および文末リズム・ファクト検証校正システムについて詳述します。

---

## 1. 自律型エディトリアルパイプラインの全体アーキテクチャ

```mermaid
graph TB
    classDef step fill:#eef6ff,stroke:#1b2a47,stroke-width:2px,color:#06152b;
    classDef agent fill:#faf5ff,stroke:#9333ea,stroke-width:2px,color:#06152b;
    classDef lint fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;
    classDef deploy fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#06152b;

    subgraph S1 ["1. 企画・重複調査フェーズ"]
        PLAN["BigQuery トピックキュー<br/>(GSCトレンド & 競合ギャップ)"]:::step
        DUP["duplicate_checker.py<br/>(既存523+記事 / 全93カタログとの重複判定)"]:::lint
    end

    subgraph S2 ["2. 日本語執筆・校正フェーズ"]
        GEN_JA["sorai-editorial-researcher<br/>(9,000〜10,000字 ＆ Answer-First TL;DR生成)"]:::agent
        AEO_BOX["ensure_quick_answer_box<br/>(c-quick-answer-box 冒頭結論30秒ボックス自動付与)"]:::lint
        RHYTHM["sentence_rhythm_linter.py<br/>(です・ます3連発排除 & 文末多様化)"]:::lint
        FACT_CHK["google_fact_checker.py<br/>(公的一次情報照合 & 制度/年度自動補正)"]:::lint
        SVG_LINT["svg_comprehensive_linter.py<br/>(SVG幾何はみ出し&文字コントラスト自動修復)"]:::lint
        LINKS["sorai-editorial-linker<br/>(auto_link_injector.py / ナレッジ自動注入)"]:::agent
    end

    subgraph S3 ["3. 多言語並列翻訳フェーズ (Locale Isolation)"]
        TR_EN["sorai-editorial-translator-en<br/>(英語: ビザ・外国人入居支援特化)"]:::agent
        TR_VI["sorai-editorial-translator-vi<br/>(ベトナム語: 特定技能・留学生支援)"]:::agent
        TR_RU["sorai-editorial-translator-ru<br/>(ロシア語: 手続き・初期費用相場)"]:::agent
        TR_ID["sorai-editorial-translator-id<br/>(インドネシア語: 礼金敷金・契約実務)"]:::agent
    end

    subgraph S4 ["4. 静的ビルド・多言語整合性結合・Push-Live・SEO即時反映"]
        BUILD["HubSpot MCP validate_static_blog_post<br/>(構造化データ FAQ/BlogPosting 同期)"]:::lint
        ATTACH["attach-to-lang-group & 整合性アサーション<br/>(4言語バリエーション100%完全結合)"]:::lint
        DEPLOY["HubSpot CMS Push-Live<br/>(POST /cms/v3/blogs/posts/{id}/draft/push-live)"]:::deploy
        GSC["GSC URL Submission<br/>(Google Search Console 即時インデックス)"]:::deploy
    end

    PLAN --> DUP
    DUP --> GEN_JA
    GEN_JA --> RHYTHM
    RHYTHM --> FACT_CHK
    FACT_CHK --> SVG_LINT
    SVG_LINT --> LINKS
    LINKS --> TR_EN & TR_VI & TR_RU & TR_ID
    TR_EN & TR_VI & TR_RU & TR_ID --> BUILD
    BUILD --> ATTACH
    ATTACH --> DEPLOY
    DEPLOY --> GSC
```

---

## 2. エディトリアル専門サブエージェント体制

ブログ記事の品質向上と文脈の汚染防止のため、専門サブエージェントが分担して執筆・校正・翻訳を実施します。

| サブエージェント / スキル | モード / 権限 | 主な責務・タスク詳細 |
| :--- | :--- | :--- |
| **`sorai-editorial-researcher`** | Research モード | BigQuery (`hubspot_data.blogs`) キャッシュを検索し、重複のない独自構成案（プロット、H2/H3見出し、ターゲット読者ペルソナ）を策定。 |
| **`sorai-editorial-proofreader`** | Self (inherit) | 日本語ドラフトの多言語漏れスキャン、`sentence_rhythm_linter.py` 実行、`google_fact_checker.py --fix` による行政制度・年度・所要時間一次情報照合、`svg_comprehensive_linter.py --fix` 実行、末尾重複CTAのパージ。 |
| **`sorai-editorial-linker`** | Self (inherit) | `internal_link_recommender.py` を実行し、文脈に自然に溶け込むアンカーテキストで2〜3件の関連記事・内部リンクを自動挿入。 |
| **`sorai-editorial-translator-en`** | Self (inherit / 並列) | 英語圏ユーザー向けローカライズ。外国人入居審査、ビザ、保証人不要プランの解説に最適化。 |
| **`sorai-editorial-translator-vi`** | Self (inherit / 並列) | ベトナム人居住者向けローカライズ。特定技能・留学生の賃貸トラブル防止ノウハウを網羅。 |
| **`sorai-editorial-translator-ru`** | Self (inherit / 並列) | ロシア語圏ユーザー向けローカライズ。東京での住居契約手続きと初期費用相場を明快に解説。 |
| **`sorai-editorial-translator-id`** | Self (inherit / 並列) | インドネシア人居住者向けローカライズ。礼金敷金の商習慣や契約書類の準備方法を詳述。 |

---

## 2.1 3.5 Flash-Lite H2 セクション分割翻訳アーキテクチャ (Anti-Thinning Chunking Engine)

長文記事（9,000〜10,000字・HTML 25,000〜30,000文字）を単一プロンプトで翻訳する際に発生する「要約バイアス・見出し脱落・薄肉化」を根本解決するため、**H2 セクション分割 1:1 翻訳パイプライン** を実装：

1. **正確なセクション分割（Chunking）**: `split_html_into_sections()` により、冒頭部（リード文＋AEOクイックアンサーボックス）および各 `<h2` 見出し境界で正確にチャンク分割。SVG プレースホルダー（`<!-- SVG_PLACEHOLDER_X -->`）を正確に維持。
2. **メタデータ＆SVGテキスト独立局所翻訳**: 記事タイトル・メタディスクリプション・SVG内テキスト配列を `ArticleMetadataTranslation` Pydantic スキーマで先行翻訳。SVGカード見出し（最大20文字）・本文（最大35文字）の文字数バジェットを厳守しレイアウト破綻を防止。
3. **セクション別 1:1 完全忠実翻訳**: 各セクション（1,000〜1,500文字）を `gemini-3.5-flash-lite` に渡し、「要約・短縮・箇条書き化を一切禁止し、全HTMLタグ・全クラス・全H3・全段落P・全テーブル・全リストを100%忠実翻訳」をプロンプト制約で強制。
4. **セクション結合と Structural Guard 検証**: 翻訳された全セクションを順序通り結合し、翻訳済み SVG を再注入。機械アサーション（H2一致率 >= 90%、H3保持率 >= 80%、段落P保持率 >= 70%、SVG 100%保持、日本語残存ゼロ検証）を実行。
5. **4言語並列パイプライン**: EN, VI, RU, ID を `ThreadPoolExecutor(max_workers=4)` で並行実行し、各言語 40,000〜55,000文字相当（HTML含む完全長文）の多言語記事を高速生成。スロット2記事（`queue-057`: 防音・遮音性ガイド / JA ID: `389991139009`）において EN (44,189字), VI (43,883字), RU (44,141字), ID (46,429字) と全言語で H2: 7 (100%), H3: 15 (100%), P: 41 (100%), SVG: 1 の完全再現を実証。

---

## 3. SASH (Sorai Tokyo Autonomous Site Health & SEO Suite)

SASHは、サイトの健全性、SEO順位、Core Web Vitals、競合動向を24時間自律監視・自動修復するスクリプト群です。

```mermaid
graph LR
    classDef tool fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#06152b;

    subgraph SASH_SUITE ["SASH 自律保守スイート"]
        T1["auto_healer.py<br/>(リンク切れ検知 & 代替URL自動修復)"]:::tool
        T2["visual_linter.py<br/>(レイアウト崩れ・SVGテキストはみ出し検知)"]:::tool
        T3["web_vitals_logger.py<br/>(LCP / CLS / FID 日次BigQuery集計)"]:::tool
        T4["competitor_gap_analyzer.py<br/>(競合上位記事との共起語・見出し差分抽出)"]:::tool
    end
```

### 3.1 各ツールの詳細仕様
1. **`auto_healer.py` (リンク切れ自動検知・修復)**:
   - 全公開記事内の外部リンク・ポータルURLをクローリング。
   - 404/410エラーを検知した場合、SUUMO等の最新掲載物件またはソライ東京のエリアガイドURLへ自動リダイレクト・置換。
2. **`visual_linter.py` (視覚レイアウトリンター)**:
   - Chrome DevTools MCPと連携し、モバイル・PC実機画面でのレンダリング結果をキャプチャ。
   - テーブルのはみ出し、SVGテキストの折り返し崩れ、フォントフォールバックの不一致を自動検出し警告。
3. **`web_vitals_logger.py` (パフォーマンス集計)**:
   - GA4およびLighthouse APIからLCP (Largest Contentful Paint), CLS (Cumulative Layout Shift), INP (Interaction to Next Paint) を取得し、BigQuery `web_vitals_history` テーブルへ日次記録。
4. **`competitor_gap_analyzer.py` (競合ギャップ分析)**:
   - 特定キーワード（例:「千代田線 家賃相場」「足立区 外国人 賃貸」）の検索上位10記事をスクレイピング・形態素解析。
   - 自社記事に不足している共起語・トピックを抽出し、追記リライトプロンプトを自動生成。

---

## 4. 文章リズムリンター規約 (`sentence_rhythm_linter.py`)

AI生成文章特有の「単調さ」「機械的な文末ループ」を完全に排除し、人間のプロエディターによる上質なリズムを実現するための厳格な構文規約です。

### 4.1 3大リンティング規約
1. **「です・ます」3連続ループの完全排除**:
   - 文末が「〜です。」「〜ます。」で3文以上連続することを厳禁。
   - **改善手法**: 体言止め（名詞止め）、複文結合（〜であり、〜）、実感描写（〜が心地よい、〜が目に留まる）、倒置・接続詞展開を織り交ぜて豊かな文章リズムを形成。
2. **AI定型句の完全追放**:
   - 以下の不自然なAI常套句を正規表現で検出し、自動除去または自然な表現へ置換。
     - ❌「〜と言えるでしょう」「〜の魅力が詰まっています」「いかがでしたでしょうか」「ぜひ参考にしてみてください」
     - ❌「構造的要因」「生活利便ゾーン」「総合的に勘案すると」
3. **感嘆符（！）の1,000文字警告上限**:
   - 記事全体で過度な煽り感や安っぽさを排除するため、感嘆符（！）の使用頻度を「1,000文字あたり最大1回」に制限。

---

## 5. Google検索グラウンディング・ファクトチェッカー (`google_fact_checker.py`)

行政制度、助成金上限額、年度情報、鉄道アクセス所要時間、店舗情報、家賃相場などのファクトクレームを自律抽出し、Google Search Grounding で公的一次情報と照合して自動補正します。

1. **4段階ステータス判定**:
   - `VERIFIED`: 公的一次情報と完全一致し、最新のファクト。
   - `OUTDATED`: 過去年度の情報（例: 2024年度の助成額）が残存しており更新が必要。
   - `MISMATCH`: 金額・所要時間などの具体的数値に相違がある。
   - `UNVERIFIED`: 信頼できる公的一次ソースで裏付けが取れず要確認。
2. **自動修正（`--fix`）＆安全バックアップ**:
   - 不正確または古い数値を最新の公的数値へ自動置換。
   - 置換前に `.bak` および `.backup_YYYYMMDD_HHMMSS` を自動生成し、完全な復元性を保証。

---

## 6. 末尾重複CTA防止とテンプレート自動統合

ブログ共通テンプレート（`templates/blog-post.html`）が記事最下部に全社統一のLINE無料相談・空室見積もりCTAモジュールを自動付加するため、本文中での重複出力を防止します。

1. **プロンプト生成規約**:
   - 執筆プロンプトにおいて「記事末尾の共通CTAはテンプレート側で自動レンダリングされるため、本文末尾に手動のCTAブロックを出力しない」ことを明記。
2. **サニタイズ処理（`strip_trailing_cta_boxes`）**:
   - パイプライン実行時およびデプロイ前に、本文末尾に存在する `<div class="sorai-cta-box">` や重複するLINE相談バナーを自動検出してパージ。

---

## 7. トークン超効率化アーキテクチャ（コスト40〜50%削減）

記事の圧倒的な品質（9,000〜10,000字以上・`thinking_level="high"`・宅建士監修）・デザイン性（インラインSVG図解）・AEO/SEO構造（FAQ一言一句一致・JSON-LD構造化データ）を100%維持しながら、パイプライン全体のトークン消費量を約40%〜50%削減（1記事あたり約35,000〜50,000トークン削減）するアーキテクチャです。

### 7.1 SVGテキスト消失・構文破損・枠外はみ出し防止「5重防御アーキテクチャ」（削減＆品質保証効果: 極大）
- **課題**: インラインSVGの巨大な描画コード（`<path>`, `<rect>`, `<defs>` など）が4言語翻訳（EN, VI, RU, ID）それぞれに丸ごと送信されトークンを激しく消費していた。また、翻訳後のテキスト膨張による枠外はみ出し・文字被り、およびLLMの構文破損による `<text>` タグ消失・裸属性タグ化が発生していた。
- **5重防御ソリューション**: 
  1. **第1防壁（プロンプト厳格制約）**: 2x2グリッド（各340px以上）または縦積みステップ（各720px）を標準化。タイトル15〜20文字、説明文30〜35文字、バッジ3〜5文字の文字数バジェットおよび `<text>` XML構文保持を明示強制。
  2. **第2防壁（自律構文修復・プリヒーリング）**: `svg_comprehensive_linter.py` が裸属性タグ（`<text` 欠落）を自動復元。最小内包矩形探索、単語境界 `<tspan>` 複数行自動折り返し（`wrap_svg_text`）、`text-anchor="middle"` 境界安全性、動的フォントスケーリング（10.5px〜11.5px）、WCAG AAA コントラスト反転を完全自動適用。
  3. **第3防壁（SVG構文完全性バリデータ）**: `validate_svg_syntax_integrity()` により、裸属性タグ・`<rect>` あるのに `<text>` 0個の空SVG・`<text>`/`<tspan>` タグペア不一致を機械検知。
  4. **第4防壁（デプロイ直前遮断ハードゲート）**: `run_auto_editorial_pipeline.py` のデプロイ直前に `validate_svg_syntax_integrity()` を強制実行。1件でも異常があれば `RuntimeError` で即座にデプロイを遮断。
  5. **第5防壁（Visual QA 監査＆自己修復ゲート）**: `visual_qa_auditor.py` において、生HTMLに対する構文完全性監査および `<text>` 0個検知を `[FATAL]` スコア -60 に格上げ。不合格時は即座に `heal_post_body()` を起動して自己修復・再パッチを実行。
- **効果**: 4言語翻訳にかかるトークンを **約 25,000〜35,000 トークン / 記事削減**。同時に多言語SVGの文字崩れ・はみ出し・構文破損・テキスト消失をゼロコストで100%根絶。

### 7.2 構造化データ（JSON-LD）＆ 著者カードの Python 機械生成（削減効果: 大）
- **課題**: LLMに `FAQPage` JSON-LD を出力させると、本文との微妙な語句差異のリスクや出力トークン増大があった。
- **解決策**: 
  - 本文中の `.faq-card` から BeautifulSoup で質問・回答を抽出し、Python で `FAQPage` JSON-LD を機械生成。
  - `BlogPosting` JSON-LD および著者プロフィールカードも Python 側で自動生成してデプロイ直前に注入。
- **効果**: 出力トークン削減 ＋ 本文とFAQPageスキーマの **100%一言一句完全一致を保証**。

### 7.3 ファクトチェック入力センテンス事前抽出（削減効果: 中）
- 7,000文字の本文全体ではなく、数値・年度（2026年）・所要時間・法令・駅名を含むセンテンスのみをPython（`extract_fact_sentences`）で抽出し、Google Search Grounding に送信（入力テキストを約60%削減）。

### 7.4 重複チェック ゼロトークン1次判定ゲート（削減効果: 小〜中）
- 形態素・名詞抽出（`extract_topic_keywords`）により、既存記事とキーワード重複が皆無（スコア 0.0）の新規トピックは Gemini API 呼び出しをスキップして即時 Pass 判定（トークン消費ゼロ）。

### 7.5 Vertex AI Flex PayGo 50%割引の常時適用（削減効果: 特大）
- **仕組み**:
  - `SoraiGeminiClient` のリクエスト時に `X-Vertex-AI-LLM-Request-Type: shared` および `X-Vertex-AI-LLM-Shared-Request-Type: flex` ヘッダーを `types.HttpOptions` 経由で自動注入。
  - 夜間自動執筆バッチ（03:00 JST）のような非同期・遅延許容ワークロードに対して、Standard PayGo 料金の **50% OFF（入力 \$0.375 / 出力 \$1.875 / 1M tokens）** を常時適用。
  - 1記事（日本語 1.2万字 ＋ 4言語翻訳 ＝ 計6万字規模）のAPIコストを **約 30円 / 記事** まで圧縮。

---

## 8. 9月記事配分スケジュール ＆ 日次バッチ枠設計

| スロット / 枠 | 対象グループ / エリア | 配信頻度・ケイデンス | 月間配信規模（9月中） | 狙い・コンテンツ方針 |
| :--- | :--- | :---: | :---: | :--- |
| **Slot 1** | `core_stations`<br>（北千住・綾瀬・北綾瀬） | **毎日 1本** | **約 30本** | 足立区・千代田線始発・下町生活圏・再開発（ららテラス北綾瀬等）の家賃相場・一人暮らし＆同棲事情。 |
| **Slot 2** | `other_chiyoda`<br>（町屋〜代々木上原） | **毎日 1本** | **約 30本** | 町屋・西日暮里・千駄木・根津・湯島・新御茶ノ水・大手町・表参道等の通勤アクセス・駅別詳細比較。 |
| **Slot 3** | `other_chiyoda`<br>（千代田線沿線深掘り） | **毎日 1本** | **約 30本** | 千代田線沿線の別エリア・治安安全マップ・スーパー自炊事情・家賃予算別（8万/10万/15万）住み分け。 |
| **Slot 4** | `general_tips`<br>（都内賃貸ノウハウ） | **週 2本**<br>（3.0日ごと自動判定） | **約 8〜9本** | 初期費用削減・審査通過・外国人部屋探し・先行申込vs先行契約・更新vs引越しスケジュール。 |
| **合計** | — | **1日 3〜4本** | **月間 約 98〜100本** | 全記事 9,000〜10,000文字超長文・5言語完全展開・インラインSVG図解・完全一致FAQ完備。 |

---

## 9. 実行トリガー基盤 ＆ 二重冗長化設計 (Dual Trigger Architecture)

自動執筆パイプラインは、クラウド側の無人フルマネージド実行（Primary）とローカル常駐デーモン（Fallback）の二重冗長構成により、停止リスクを完全に排除しています。

1. **Primary: Cloud Scheduler & Cloud Run Jobs (`sorai-auto-editorial`)**:
   - **トリガー**: Cloud Scheduler `sorai-auto-editorial-trigger`（毎日 03:00 JST / `0 18 * * *` UTC）。
   - **実行権限**: Compute サービスアカウント（`902297816152-compute@developer.gserviceaccount.com`）に `roles/run.developer` を付与し、OIDC 認証経由で Cloud Run Job を安全にトリガー。
   - **コンテナ環境**: `asia-northeast1-docker.pkg.dev/sorai-indexing-30323/sorai-apps/sorai-auto-editorial`（2GiB RAM, 1 CPU, 4時間タイムアウト）。

2. **Fallback: macOS LaunchAgent (`com.soraitokyo.auto_editorial`)**:
   - **配置**: `~/Library/LaunchAgents/com.soraitokyo.auto_editorial.plist`
   - **実行 Python**: `real-estate-cms-operations/.venv/bin/python3`（仮想環境の依存パッケージを完全ロード）。
   - **間隔**: 48時間周期で自律フォールバック実行。


---
id: "05_seo_aeo_analytics"
title: "5. SEO/AEO・計測基盤・SNS連携 (SEO/AEO, Analytics & Social Loop)"
category: "hp"
packages:
  - "real-estate-cms-operations"
  - "soraitokyo-cms-theme"
cloud_run:
  - "sorai-auto-editorial"
endpoints:
secrets:
  - "HUBSPOT_ACCESS_TOKEN"
  - "FACEBOOK_PAGE_ACCESS_TOKEN"
  - "GCP_PROJECT_ID"
databases:
  - "analytics_*"
  - "gsc_indexing_logs"
---

# 5. SEO/AEO・計測基盤・SNS連携 (SEO/AEO, Analytics & Social Loop)

<!-- MODULE_METADATA_START -->
| 項目 | 定義・対象リソース |
| :--- | :--- |
| **対象パッケージ** | `real-estate-cms-operations`, `soraitokyo-cms-theme` |
| **Cloud Run サービス** | `sorai-auto-editorial` (GSC連携), Cloud Scheduler |
| **主要エンドポイント** | JSON-LD 構造化データ, GSC Indexing API, GA4/GTM, Facebook Graph API |
| **依存 Secret** | `HUBSPOT_ACCESS_TOKEN`, `FACEBOOK_PAGE_ACCESS_TOKEN`, `GCP_PROJECT_ID` |
| **Firestore コレクション** | BigQuery `analytics_*`, `gsc_indexing_logs` |
<!-- MODULE_METADATA_END -->


本章では、ソライ東京の検索流入およびAIエンジン引用（AEO）を最大化する構造化データ規約、Google Search Console自動送信、GA4/GTM計測基盤、およびFacebook閉ループ自動投稿連携の仕様を詳述します。

---

## 1. AEO / SEO 最適化規約 (Answer Engine Optimization & Structured Data)

AI検索エンジン（Perplexity, ChatGPT Search, Google AI Overviews）および従来の検索アルゴリズムに対し、最も信頼性の高い情報源として抽出・引用されるための構造化データ規約を定めています。

```mermaid
graph TD
    classDef aeo fill:#f0f9ff,stroke:#0284c7,stroke-width:2px,color:#06152b;
    classDef bot fill:#faf5ff,stroke:#9333ea,stroke-width:2px,color:#06152b;
    classDef page fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;

    ARTICLE["ソライ東京 ブログ記事・LP"]:::page

    subgraph STRUCT ["構造化データ (Schema.org JSON-LD)"]
        FAQ_LD["100%完全一致 FAQPage<br/>(on-page テキストと一字一句同期)"]:::aeo
        BLOG_LD["BlogPosting 構造化データ<br/>(datePublished / dateModified UTC)"]:::aeo
        AUTHOR_LD["Author: Person / RealEstateAgent<br/>(宅地建物取引士・公式エディトリアル)"]:::aeo
    end

    subgraph CRAWLERS ["AI検索クローラー & 検索エンジン"]
        BOT_G["Googlebot / Google AI Overviews"]:::bot
        BOT_P["PerplexityBot"]:::bot
        BOT_O["GPTBot / OpenAI Search"]:::bot
    end

    ARTICLE --> STRUCT
    STRUCT --> BOT_G & BOT_P & BOT_O
```

### 1.1 100%完全一致 FAQPage JSON-LD 規約
AIエンジンが回答を直接引用する際のペナルティを避けるため、**HTML本文上のFAQテキストとJSON-LD内の質問・回答テキストは一字一句完全一致（100% Exact Match）** させます。

```html
<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [
    {
      "@type": "Question",
      "name": "SUUMOやHOME'Sで見つけた物件の見積もりは本当に無料ですか？",
      "acceptedAnswer": {
        "@type": "Answer",
        "text": "はい、完全無料です。他社ポータルサイトの物件URLをソライ東京の公式LINEにそのまま送っていただければ、最新の空室確認と初期費用の最安見積もりを即座にご提示いたします。営業電話や強引な勧誘は一切行いません。"
      }
    }
  ]
}
</script>
```

### 1.2 信頼性の担保 (E-E-A-T & BlogPosting)
- `author`: 実体のある不動産事業者（`@type: "Person"` または `@type: "RealEstateAgent"`）および免許番号（東京都知事免許）を明記。
- `dateModified`: 記事更新日（ISO 8601 UTC形式）を同期し、常に最新の家賃相場・法令に基づいていることを検索エンジンにシグナル通知。
- `image`: 動的OGP画像（`dynamic_og_img`）と同期し、検索スニペットおよびAI Overview上での視覚的CTRを最大化。

### 1.3 OGP / SNS 動的アイキャッチカード仕様 (Dynamic OGP & Social Cards)
記事単体に手動アイキャッチ画像が設定されていない場合でも、`icon-helper.html` の自動判別マクロ（`get_category_class` & `get_post_icon`）により、記事のスラッグ・カテゴリ（トピック）・駅名に応じた最適な **Twilight Blue-Gold アイキャッチ画像（1200×630px）** を自動解決してメタタグおよびJSON-LDに出力します。

- **駅別特化記事**: 北千住（`area_kita_senju_blue_gold.png`）、綾瀬（`area_ayase_blue_gold.png`）、北綾瀬（`area_kita_ayase_blue_gold.png`）、代々木上原など
- **路線・通勤記事**: 千代田線（`train_chiyoda_line_blue_gold.png`）
- **初期費用・契約記事**: 敷金礼金（`money_costs_blue_gold.png`）、特約条項（`lease_contract_blue_gold.png`）
- **外国人審査記事**: 保証人不要・ビザ審査（`visa_screening_blue_gold.png`）、生活サポート（`living_tips_blue_gold.png`）
- **ライフスタイル記事**: カフェ散策（`cafe_recommendation_blue_gold.png`）、公園レジャー（`park_leisure_blue_gold.png`）、同棲カップル（`cohabitation_couple_blue_gold.png`）
- **メタタグ出力**: `<meta property="og:image">`, `<meta property="og:image:secure_url">`, `<meta property="og:image:width" content="1200">`, `<meta property="og:image:height" content="630">`, `<meta name="twitter:card" content="summary_large_image">`, `<meta name="twitter:image">`

### 1.3 `llms.txt` / `llms-full.txt` AI検索ナレッジ提供規約
AI検索エンジン（Perplexity, ChatGPT Search, Claude, Google Gemini）がサイト全体の強み・主要記事・不動産ナレッジを直接引用できるよう、Web標準の `llms.txt` をルート配信しています。

- **標準版 (`https://soraitokyo.jp/llms.txt`)**: サービス概要（相見積もり無料・千代田線/足立区特化・完全5言語対応・IT重説・LINE相談）および主要ピラー記事へのマークダウンインデックス。
- **完全版 (`https://soraitokyo.jp/llms-full.txt`)**: 千代田線全駅の家賃相場比較表、始発駅通勤ハック、納戸（S）の建築基準法定義、外国人契約フローを構造化した深層ナレッジベース。
- **配信アーキテクチャ**: HubSpot File Manager CDN ＋ 301 URL Redirects (`/llms.txt`, `/llms-full.txt`, `/.well-known/llms.txt`) によるゼロ遅延・高可用性配信。

### 1.4 Answer-First（結論ファースト）＆ TL;DR 構造化規約
AI Overviews や Perplexity がスニペットとして直接引用しやすいよう、全ブログ記事に以下の構造化規約を適用します。

1. **冒頭結論ボックス (`c-quick-answer-box`)**:
   - 記事タイトル（H1）直後・目次（TOC）の前に配置。
   - **「30秒でわかる結論・ポイント」**（家賃相場、所要時間、注意点、要点3行箇条書き）を明記。
2. **構造化データテーブル (`c-data-table`)**:
   - 駅別家賃比較、間取り違い（2SLDK vs 2LDK）、移動時間を整理したレスポンシブHTMLテーブル。
3. **Q&A 完全一致（FAQPage JSON-LD 連動）**:
   - 各質問に対する回答は「結論から始まる1〜2文」で記述し、AI検索の直接抽出率を最大化。

---

## 2. Google Search Console 自動インデックス送信 (`submit_url_to_gsc`)

記事がHubSpot CMS上で公開（Push-Live）された直後、Google Search Console Indexing API および URL Inspection API を自動呼び出しし、新規インデックスおよびキャッシュ更新を即時リクエストします。

```python
# GSC 自動送信ロジック概要
def submit_url_to_gsc(target_url):
    """
    Google Indexing API を呼び出し、公開URLを即時クロールキューへ登録
    """
    credentials = get_service_account_credentials()
    service = build('indexing', 'v3', credentials=credentials)
    
    body = {
        'url': target_url,
        'type': 'URL_UPDATED'
    }
    response = service.urlNotifications().publish(body=body).execute()
    print(f"[GSC Indexing] Submitted: {target_url} | Status: {response.get('urlNotificationMetadata')}")
```
- **効果**: 通常数日〜数週間かかるGoogleのクロール・インデックス登録を、**公開から数十分〜数時間以内**に短縮。

---

## 3. 計測基盤 & UTMパラメータ規約 (Analytics & Tracking Infrastructure)

ウェブサイト全体のトラフィック、ユーザー行動、コンバージョン（LINE友だち追加・初期費用シミュレーター利用）を一気通貫で可視化しています。

### 3.1 タグ設定一覧
- **Google Analytics 4 (GA4) 測定ID**: `G-B836L6QHGD`
- **Google Tag Manager (GTM) コンテナID**: `GTM-5C3X2SPQ`
- **HubSpot Tracking Code**: サイト全ページに常時埋め込み

### 3.2 UTMパラメータ設計標準
外部SNSや広告、外部メディアからの流入を正確に分類するため、厳格な命名規約を適用しています。

| パラメータ | 設定値の例 | 説明 |
| :--- | :--- | :--- |
| `utm_source` | `facebook`, `line`, `google`, `newsletter` | 流入元プラットフォーム |
| `utm_medium` | `social`, `cpc`, `organic`, `chat` | メディア種別 |
| `utm_campaign` | `auto_fb_poster`, `spring_relocation_2026`, `chiyoda_guide` | キャンペーン名・自動化システム名 |
| `utm_content` | `{post_id}_{slug}`, `cta_line_button`, `hero_banner` | 投稿ID・個別バナーの識別子 |

---

## 4. Facebook 閉ループ自動投稿連携 (`facebook-poster-ja/en`)

GSC/GA4の検索トレンドデータを抽出し、全510+記事からセマンティックRAG検索を行った上で、Facebook公式ページへ自動配信するサーバーレス閉ループシステムです。

```mermaid
graph LR
    classDef gcp fill:#eef6ff,stroke:#1b2a47,stroke-width:2px,color:#06152b;
    classDef meta fill:#f0fdf4,stroke:#16a34a,stroke-width:2px,color:#06152b;
    classDef bq fill:#fefce8,stroke:#ca8a04,stroke-width:2px,color:#06152b;

    subgraph CLOUD_RUN ["GCP Cloud Run Jobs (asia-northeast1)"]
        SCHED["Cloud Scheduler<br/>(10:00 & 21:00 JA / 14:00 & 18:00 EN)"]:::gcp
        JOB_JA["facebook-poster-ja"]:::gcp
        JOB_EN["facebook-poster-en"]:::gcp
        JOB_SYNC["facebook-insights-sync"]:::gcp
    end

    subgraph ENGINE ["トレンド抽出 × RAG × Gemini 3.5 Flash-Lite"]
        TREND["trend_extractor.py<br/>(直近14日 GSC急上昇ワード)"]
        RAG["rag_retriever.py<br/>(510+記事 RAG知識照合)"]
        GEN["gemini_generator.py<br/>(共感フック・UTM URL・CTA生成)"]
    end

    subgraph TARGET ["配信 ＆ データ蓄積"]
        FB_PAGE["Facebook公式ページ<br/>(Page ID: 1168140463045963)"]:::meta
        BQ_TABLE["BigQuery<br/>(hubspot_data.facebook_insights)"]:::bq
        GA4["GA4 コンバージョン計測<br/>(G-B836L6QHGD)"]:::meta
    end

    SCHED --> JOB_JA & JOB_EN & JOB_SYNC
    JOB_JA & JOB_EN --> TREND --> RAG --> GEN --> FB_PAGE
    FB_PAGE --> GA4
    JOB_SYNC --> BQ_TABLE
```

### 4.1 サーバーレス自動投稿の特徴
1. **完全クラウド化**: ローカルPCに依存せず、GCP Cloud Run Jobs（Python 3.12-slim 非rootコンテナ）と Cloud Scheduler で定時自律稼働。
2. **Meta Graph API 無期限システムトークン**: Secret Manager (`facebook-page-access-token`) から動的注入し、トークン失効による停止を完全防止。
3. **インサイトのBigQuery日次自動同期**: 投稿ごとのリーチ・インプレッション・いいね・シェア・クリック数を `hubspot_data.facebook_insights` テーブルへ蓄積し、エンゲージメントの高い記事パターンを自動学習。

---

## 5. 検索カニバリゼーション防止＆301リダイレクト統合規約 (Cannibalization Prevention & 301 Redirect Consolidation)

SEO/AEOの掲載順位（TOP 3）と被リンクパワーを集約するため、類似テーマの重複・カニバリゼーションを定期監査し、HubSpot URL Redirects API による恒久的な301リダイレクト統合および内部リンクアンカーの最適化を実施します。

### 5.1 統合実施ルール・実績一覧
1. **重複記事の301リダイレクト統合**:
   - `area-guide-ayase-vs-kitaayase-comparison`（全5言語）➔ `area-guide-ayase`（大ヒット中の綾瀬エリアガイド）へ 301 リダイレクト統合。
   - `isOnlyAfterNotFound: false`, `isMatchFullUrl: true/false`, `isProtocolAgnostic: true`, `precedence: 1` 設定により、プロトコル・ドメイン・言語プレフィックスを含む全バリエーションを完全転送。
2. **検索意図（Search Intent）ごとの内部リンク1本化**:
   - 北綾瀬の治安クエリ（1.4位獲得）について、比較記事（`area-guide-kita-ayase-kitasenju`）内の治安セクションから決定版記事（`kita-ayase-unpopular-reasons-truth`）へのハイコントラストな推奨内部リンクカードを設置し、Googleクローラーに対するシグナルを1本化。

---

## 6. GA4 内部トラフィック・開発PV除外＆コンバージョン計測仕様 (GA4 Internal Traffic Exclusion & Conversion Spec)

社内・開発・動作検証アクセスによるPV水増しを完全に排除し、純粋な外部一般ユーザー（見込み客）のみを正確に計測・分析するための仕様です。

### 6.1 クライアントサイド自動除外機構（`?dev=1` 永続化除外）
- **共通ヘッド partial (`gtm-head.html`)**:
  - 管理者・開発者端末で `https://soraitokyo.jp/?dev=1`（または `?admin=1`）を1度開くと、`localStorage` および Cookie（`max-age=31536000`＝1年間有効）に `sorai_internal_traffic=1` を永続保存。
  - 以後、その端末・ブラウザからのすべてのページアクセスにおいて `window['ga-disable-G-B836L6QHGD'] = true;` が即座に発動し、GA4タグの通信を完全に停止。
  - 解除時は `?dev=0`（または `?admin=0`）を開くことで即時フラグ消去。
  - ヘッドレスブラウザ（`HeadlessChrome`, `Antigravity`, `navigator.webdriver`）、ローカルホスト（`localhost`, `127.0.0.1`）、HubSpotプレビュー（`hs_preview`）を自動検知して除外。

### 6.2 GA4 Admin API プロパティ最適化設定
- **データ保持期間 (Data Retention)**:
  - デフォルトの2ヶ月から **最大14ヶ月 (`FOURTEEN_MONTHS`)** へ拡張。探索レポートや季節変動分析の遡及性を確保。
- **キーイベント（Key Events / コンバージョン）登録**:
  - `line_click`: 公式LINE相談ボタン（インラインCTA、ヘッダー、フローティング）のクリック。
  - `contact_submit`: お問い合わせフォーム送信完了。
  - `quote_complete`: 初期費用シミュレーターの試算完了。

---

## 7. GSC データ駆動 CTR 最適化規約 (Search Console CTR Optimization Spec)

表示回数（インプレッション）が急成長している記事に対し、検索意図・スマホ表示幅に特化したタイトルおよびメタディスクリプションの最適化を行い、クリック率（CTR）を最大化する継続的改善プロセスです。

### 7.1 対象選定・改善基準
1. **優先度 HIGH**: 表示回数 500回以上、平均順位 1〜8位、CTR 2%未満の記事。
2. **タイトル先頭 32 文字の訴求力強化**:
   - スマホの検索結果スニペットで途切れないよう、検索クエリの核心（「なぜ悪い？」「家賃が安い理由」等）を先頭に配置。
3. **メタディスクリプションの疑問解消オファー**:
   - 単なる要約ではなく、読者がクリックして得られる具体的なベネフィット（安全エリア、エアコン設置可否、家賃相場）を明記。

### 7.2 実施済み最適化実績
1. **第1弾（2026-09-03）**:
   - `ja/blog/area-guide-ayase`（915 Imp / 4.1位）➔ 【綾瀬の治安なぜ悪い？】2026年データで検証！住みやすさ・危険エリアと女性一人暮らしの真実
   - `ja/blog/2sldk-2ldk-difference-guide`（605 Imp / 8.0位）➔ 【2SLDKとは？】実質3LDKで家賃が安い理由！エアコン問題・後悔しない納戸(S)の選び方【2026】
2. **第2弾（2026-09-03）**:
   - `en/blog/3dk-3ldk-3sldk-difference-guide`（857 Imp / 12.2位）➔ 3LDK & 3DK Apartments in Japan: Size, Layout & Tokyo Rent Guide (2026)
   - `ja/blog/kita-senju-commuting-convenience-5lines`（403 Imp / 5.9位）➔ 【北千住の通勤混雑2026】朝ラッシュの混雑率・大手町15分＆始発で座る裏ワザ5路線まとめ





---
id: "99_hp_changelog"
title: "6. HP開発履歴・改善実績アーカイブ (Website & CMS Changelogs)"
category: "hp"
packages:
cloud_run:
endpoints:
secrets:
databases:
---

# 6. HP開発履歴・改善実績アーカイブ (Website & CMS Changelogs)

本章では、ソライ東京 公式ウェブサイト、HubSpot CMSテーマ、デザインシステム、ブログ自律執筆、およびSEO/AEO施策に関する開発履歴・改善実績を時系列で網羅しています。

### 2026-09-03: オンライン相談ページ（/consultation）英語（English 🇺🇸）公式対応化 ＆ 所要時間1時間（60分）完全統一 ＆ 5言語リボン・ウェルカム案内バナー・FAQ4最適化 ＆ 全5言語メタデータ更新 ＆ 本番デプロイ・実機検証完了
- **背景と目的**: オンライン個別相談（Google Meet）において英語（English 🇺🇸）のライブ面談サポート体制が整ったため、対応言語を日本語🇯🇵・英語🇺🇸・ベトナム語🇻🇳の3言語公式対応へと拡張。あわせてHubSpot Meetings枠（60min）の実態に合わせて相談所要時間を「30分」から「1時間（60分）」へ全5言語で完全統一。英語ページでの警告バナーを撤廃しウェルカム案内バナーへ切り替え、UXと利便性を最大化した。
- **実装内容**:
  1. **信頼リボンの3言語対応更新 (`ribbon_lang` / `ribbon_5`)**:
     - JA: `対応言語: 日本語 🇯🇵 / English 🇺🇸 / Tiếng Việt 🇻🇳`
     - EN: `Languages Supported: English 🇺🇸 / Japanese 🇯🇵 / Vietnamese 🇻🇳`
     - VI: `Hỗ trợ ngôn ngữ: Tiếng Nhật 🇯🇵 / Tiếng Anh 🇺🇸 / Tiếng Việt 🇻🇳`
     - RU: `Языки: Японский 🇯🇵, Английский 🇺🇸 и Вьетнамский 🇻🇳`
     - ID: `Bahasa: Jepang 🇯🇵, Inggris 🇺🇸 & Vietnam 🇻🇳`
  2. **カレンダー案内バナー (`.consult-lang-alert`) の最適化**:
     - ENページ（`lang_code == 'en'`）: 警告（`.is-highlight`・`fa-triangle-exclamation`・LINE/Formボタン）を撤廃し、公式対応を歓迎する標準インフォメーションバナー（「Live 1-on-1 consultations are fully supported in English 🇺🇸, Japanese 🇯🇵, and Vietnamese 🇻🇳. Camera-off participation is welcome!」）へ刷新。
     - JAページ: 「※オンライン相談（Google Meet）の対応可能言語は【日本語】【英語】【ベトナム語】となります。」
     - VIページ: 「※Buổi tư vấn trực tuyến (Google Meet) được hỗ trợ trực tiếp bằng 【Tiếng Việt】, 【Tiếng Anh】 và 【Tiếng Nhật】。」
     - RU・IDページ: リアルタイム面談が日本語・英語・ベトナム語で実施される旨を告知し、ロシア語・インドネシア語テキスト相談へのLINE/Webフォーム案内を継続。
     - テンプレート条件分岐を `{% if lang_code in ['ru', 'id'] %}` へ最適化。
  3. **相談所要時間を「1時間（60分）」へ全5言語完全統一**:
     - JA: `page_title`「【営業なし・オンライン1時間】...」、`hero_badge`「オンライン個別ヒアリング（無料・1時間）」、`meta_desc`, `calendar_desc`, `step1_desc` を約1時間（60分）へ統一。
     - EN: `【Zero Pushy Sales・Online 1-Hour】...`, `Free 1-Hour Online Consultation`, 1-hour (60 min) slot.
     - VI (1 giờ / 60 phút), RU (1 час / 60 минут), ID (1 jam / 60 menit) を全セクションで完全整合。
  4. **Topic 4 & FAQ 4（英語・日本語・ベトナム語対応）更新**:
     - Topic 4: 日本語・英語・ベトナム語での入居審査・ビザ・スケジュール相談を明記。
     - FAQ 4: Google Meetライブ面談が日本語・英語・ベトナム語で実施される点、および他言語のテキスト対応体制を明記し FAQPage JSON-LD 構造化データも同時更新。
  5. **HubSpot CMSデプロイ・全5言語Site Pageメタデータ更新 & 実機検証**:
     - `tools/update_consultation_metadata.py` を5言語対応へ拡張し、全5言語のSite Pageメタデータ（JA: `390750358245`, EN: `390749852375`, VI: `390750358248`, RU: `390750358251`, ID: `390749852378`）をPATCH更新＆Push-Live完了。
     - `deploy_cms_theme` によりHubSpot本番環境へテーマ配信・全40ページ再公開完了。
     - 実機フェッチにより JA（`/consultation?cachebust=20260903_v5`）および EN（`/en/consultation?cachebust=20260903_v5`）で HTTP 200 応答および英語公式サポート・1時間表記・ウェルカムバナーの正常描画を確認。

---

### 2026-09-03: オンライン相談ページ（/consultation）メッセージング・トーン刷新（条件整理・ヒアリング重視 ＆ 気になるお部屋の画面共有リアルタイム調査対応）＆ 5言語辞書完全同期 ＆ 本番デプロイ・実機検証完了
- **背景と目的**: オンライン面談を「一方的な物件紹介・売り込み」ではなく、「どんな暮らしがしたいか、予算やエリアの希望をじっくり伺って希望条件を整理する」ためのヒアリング相談としてメッセージングとトーンを全面刷新。すでにSUUMOやHOME'S等で見つけた気になる物件がある場合は、画面共有でリアルタイムに空室状況・初期費用をその場で調査するオプショナル対応を明文化。
- **実装内容**:
  1. **JA（日本語）辞書およびメッセージングの刷新**:
     - `page_title`: `【営業なし・オンライン30分】ご希望条件ヒアリング＆お部屋探し相談 | ソライ東京`
     - `hero_badge`: `オンライン個別ヒアリング（無料・30分）`
     - `hero_h1`: `自宅からプロに相談。理想の暮らしの「条件整理」と安心の部屋探し。`（`hero_h1_span1`: 条件整理、`hero_h1_span2`: 安心の部屋探し）
     - `hero_lead`: 「一方的に物件を提案・押し売りする面談ではありません。どんな暮らしがしたいか、予算やエリアの相場感、譲れないこだわりをじっくりお伺いして『希望条件を整理する』ためのヒアリング相談です。もしすでにSUUMOやHOME'Sなどで気になっているお部屋や、その場で確認してほしい物件がある場合は、画面共有で最新の空室状況や初期費用をリアルタイムにお調べします。」
     - `step3_title` & `step3_desc`: `オンラインヒアリング・条件整理`（ご希望条件やライフスタイルをお伺いします。その場で確認したい物件がある場合は画面共有で調査します。）
     - 改訂4大トピック: ①ご希望条件・ライフスタイルの丁寧なヒアリング（アイコン: `fa-comments`）、②気になるお部屋のリアルタイム空室調査（ご希望の場合・アイコン: `fa-magnifying-glass-location`）、③初期費用・予算シミュレーション（アイコン: `fa-calculator`）、④入居審査・スケジュール・外国籍サポート（日本語・ベトナム語・アイコン: `fa-passport`）
  2. **多言語辞書（EN, VI, RU, ID）の完全同期**:
     - 全言語において「売り込みなし、ライフスタイルと条件整理の丁寧なヒアリング」「保存済みURLの画面共有リアルタイム空室調査」の同一哲学を自然なネイティブ表現で展開。
  3. **HubSpot CMSデプロイ・Site Pageメタデータ更新 & 実機検証**:
     - `tools/update_consultation_metadata.py` により JA Site Page（ID: `390750358245`）の `htmlTitle` および `metaDescription` を新タイトル・リード文へ更新。
     - `deploy_cms_theme` によりテーマ反映・全5言語ページ再公開完了。
     - `https://soraitokyo.jp/consultation?cachebust=20260903_v4` および `/en/consultation` にて HTTP 200 応答および新タイトル・新リード・新トピックの正常描画を実機確認。

---

### 2026-09-03: オンライン相談ページ（/consultation）対応言語仕様（日本語🇯🇵・ベトナム語🇻🇳ライブ面談限定 / 他言語テキスト案内）明文化 ＆ 5言語リボン・アラートバナー・FAQ最適化 ＆ 本番デプロイ・実機検証完了
- **背景と目的**: オンライン個別相談（Google Meet）のリアルタイム通話対応可能言語が「日本語」および「ベトナム語」である旨を正確にユーザーへ告知し、英語・ロシア語・インドネシア語圏のユーザーに対しては公式LINE・Web問い合わせフォームによる多言語テキストサポートへスムーズに案内するUX最適化。
- **実装内容**:
  1. **信頼リボンの更新 (`ribbon_lang`)**:
     - 全5言語で対応言語リボンを整備（JA: `対応言語: 日本語 🇯🇵 / Tiếng Việt 🇻🇳`, VI: `Hỗ trợ ngôn ngữ: Tiếng Nhật 🇯🇵 / Tiếng Việt 🇻🇳 (Tư vấn trực tiếp bằng tiếng Việt)`, EN: `Languages: Japanese 🇯🇵 & Vietnamese 🇻🇳 only`, RU: `Языки: Японский 🇯🇵 и Вьетнамский 🇻🇳`, ID: `Bahasa: Jepang 🇯🇵 & Vietnam 🇻🇳 saja`）。
  2. **カレンダー直上フレンドリーアラートバナー (`.consult-lang-alert`)**:
     - カレンダー予約ウィジェット直上に目立つ注意バナーを新設。EN, RU, IDページではハイライト（`.is-highlight`）表示し、公式LINEおよびWebフォームへのダイレクトアクションボタンを設置して即座にテキスト相談へ移行可能に。
  3. **FAQ 4（多言語サポート）の刷新 & FAQPage 構造化データ同期**:
     - ライブ通話の対応言語範囲と、他言語でのテキストサポート体制をQ&A形式で明確化。Schema.org FAQPage JSON-LD構造化データも同時更新。
  4. **HubSpot CMSデプロイ & 実機疎通検証**:
     - `deploy_cms_theme` により本番HubSpotへテーマを即時配信、全5言語ページを再公開。
     - `curl` および実機フェッチにより JA（`/consultation?cachebust=20260903_v2`）および EN（`/en/consultation?cachebust=20260903_v2`）でリボン、アラートバナー、FAQの正常反映を確認。

---

### 2026-09-03: オンライン相談・詳細物件リクエストページ（/consultation）HubSpot CMS新規開設 ＆ HubSpot Meetings Embed（60min）埋め込み ＆ 5言語（JA, EN, VI, RU, ID）完全多言語化 ＆ 4ステップ・FAQ・ブランドデザインシステム実装 ＆ 全言語HTTP 200実機疎通完了 ＆ SDD仕様書同期
- **背景と目的**: おとり物件ゼロ・しつこい営業電話なしで、SUUMOやHOME'S等のポータル掲載物件の空室確認・初期費用適正診断・外国籍ビザ相談を行えるオンライン個別相談ページ（`/consultation`）の新規開設。
- **実装内容**:
  1. **HubSpot CMS テンプレート実装 (`soraitokyo-cms-theme/templates/consultation.html`)**:
     - `gtm-head.html`, `gtm-body.html`, `header.html`, `footer.html` を完備し、HTMLタグの完全バランシングとアクセシビリティを保証。
     - Sorai Tokyo ブランドトークン（Deep Navy `#002C65`, Amber Gold `#CE8F28`, Terracotta `#c57e5f`）に準拠した Quiet Luxury デザイン。
     - HubSpot Meetings 埋め込みウィジェット（`data-src="https://meetings-na2.hubspot.com/contact33/60min?embed=true"`）および `MeetingsEmbedCode.js` を最適化配置。
     - 5言語完全対応（JA, EN, VI, RU, ID）のローカライズ辞書を内包し、各言語固有のタイトル・メタディスクリプション・リボン・4ステップ・4大相談内容・FAQ（FAQPage JSON-LD対応）・代替CTA（LINE/Webフォーム）を提供。
  2. **デプロイパイプライン更新 ＆ テーマデプロイ (`deploy_cms_theme`)**:
     - `tools/deploy_all.py` および `scratch/deploy_all.py` の `FILES_TO_DEPLOY`, `DEPENDENCY_MAP`, `PAGE_ID_MAP` に `consultation.html` および各言語ページ ID を登録。
     - `deploy_cms_theme` 経由で HubSpot 本番環境へテンプレートをアップロード完了。
  3. **HubSpot Site Pages API 作成 ＆ 多言語バリエーション展開 ＆ Push-Live**:
     - `tools/create_consultation_page.py` により JA 親ページ（ID: `390750358245`, slug: `consultation`）を新規作成。
     - EN (`390749852375`), VI (`390750358248`), RU (`390750358251`), ID (`390749852378`) の 4言語バリエーションを作成・結合し、即座に Push-Live ＆ スケジュール公開完了。
  4. **本番疎通検証**:
     - `https://soraitokyo.jp/consultation?cachebust=12345` (JA: HTTP 200)
     - `https://soraitokyo.jp/en/consultation?cachebust=12345` (EN: HTTP 200)
     - `https://soraitokyo.jp/vi/consultation?cachebust=12345` (VI: HTTP 200)
     - `https://soraitokyo.jp/ru/consultation?cachebust=12345` (RU: HTTP 200)
     - `https://soraitokyo.jp/id/consultation?cachebust=12345` (ID: HTTP 200)
     - 全5言語で HTTP 200 応答および Meetings ウィジェット、ネイティブ言語タイトルの正常描画を実機確認。

---

### 2026-09-02: 2x2ステップカード（.step-process-grid）文字色コントラスト潰れ根本解消 ＆ テーマCSSスコープ適正化 ＆ 全42記事一括自律修復・Push-Live
- **背景と目的**: ブログ記事内の 2x2 Quiet Luxury ステップカードにおいて、テーマ側で定義されていた `.step-title { color: var(--primary-indigo); }` が適用され、ダークネイビー背景（`#1b2a47`）およびテラコッタ背景（`#c57e5f`）の上で文字色が濃紺と同化して視認性が潰れていた問題を根本解消。
- **実装内容**:
  1. **テーマ CSS のスコープ適正化 (`style.css` / `home-enhancements.css` / `_home.scss`)**:
     - `.step-title` を `.process-step-card .step-title`（ホームページ専用）へスコープ限定。
     - `.step-header .step-title, .step-card .step-header .step-title, .step-card .step-header span { color: #ffffff !important; }` を明示追加。
  2. **自動執筆・整形パイプラインのインラインスタイル強化 (`editorial_design_system.py` / `pipeline/html_formatters.py`)**:
     - `format_step_process_cards` および `convert_step_svg_to_html_cards` において、タイトル要素 `.step-title` およびピルバッジ `.step-badge` に対し `color: #ffffff !important; margin: 0;` を直接インラインスタイルで注入。
     - `is_japanese_content` の判定時に HTML コメント（`<!-- ... -->`）を事前除去し、長文記事対応の閾値（50文字以上 / >1%）を適用。
  3. **HubSpot CMS テーマデプロイ ＆ 公開済み全42記事の一括自律修復**:
     - `deploy_cms_theme` により最新テーマ CSS を本番へ即時配信。
     - ステップカードを含む全 42 件の公開済み記事に対し `apply_full_design_system` を適用し、HubSpot API（PATCH ＆ Push-Live）で本番修復完了。

---

### 2026-09-02: スロット2記事（防音・遮音性構造比較 / queue-057）3.5 Flash-Lite H2 セクション分割 4言語完全長文再翻訳 ＆ Structural Guard 100% 保持 ＆ HubSpot CMS デプロイ・Push-Live ＆ BQ・RAG同期
- **背景と目的**: スロット2の記事（【木造・鉄骨・RC・SRC】構造別「防音・遮音性」の真実！騒音トラブルを防ぐ内見時の壁叩き・床構造・L値チェック術: JA ID `389991139009`）において、既存の EN (`389965551321`) および RU (`389991139012`) で発生していた H2/H3 見出し脱落・要約薄肉化を根本解消し、未作成の VI (`389967375037`) および ID (`390000173806`) を含む全4言語を 1:1 完全ボリュームで再翻訳・デプロイ。
- **実装内容**:
  1. **H2 セクション分割翻訳エンジン（3.5 Flash-Lite）の実行**:
     - 日本語元記事（26,126文字、H2=7, H3=15, P=41, SVG=1）を `split_html_into_sections` で 8セクション（リード＋7つのH2章）に分割。
     - タイトル・メタディスクリプション・SVG テキスト配列を `ArticleMetadataTranslation` で独立翻訳。
     - 各セクションを `gemini-3.5-flash-lite`（temperature=0.1, thinking_level="low"）で完全忠実翻訳し再結合・SVG再注入。
  2. **Structural Guard 100% 保持アサーション**:
     - EN (44,189字): H2=7/7 (100.0%), H3=15/15 (100.0%), P=41/41 (100.0%), SVG=1/1 (100.0%)
     - VI (43,883字): H2=7/7 (100.0%), H3=15/15 (100.0%), P=41/41 (100.0%), SVG=1/1 (100.0%)
     - RU (44,141字): H2=7/7 (100.0%), H3=15/15 (100.0%), P=41/41 (100.0%), SVG=1/1 (100.0%)
     - ID (46,429字): H2=7/7 (100.0%), H3=15/15 (100.0%), P=41/41 (100.0%), SVG=1/1 (100.0%)
     - 全言語で日本語残存文字ゼロ、各言語 43,000〜47,000文字相当の完全長文ボリュームを達成。
  3. **HubSpot CMS デプロイ ＆ 多言語グループ完全結合 ＆ Push-Live**:
     - EN (`389965551321`), RU (`389991139012`), ID (`390000173806`) を PATCH 更新。
     - VI (`389967375037`) を新規作成・PATCH し、JA 親記事へ `attach-to-lang-group` で完全結合。
     - 全5記事（JA, EN, VI, RU, ID）の Push-Live（HTTP 204）および CDN キャッシュパージ完了。
  4. **BigQuery キュー ＆ RAG ナレッジベース同期**:
     - `queue-057` を BigQuery / ローカル JSON で `status="completed"` に更新。
     - `knowledge_articles.json`（AIチャットボット・LINE・オペレーター検索用 RAG）および BigQuery `hubspot_data.blogs`（全632記事）の同期完了。

---

### 2026-09-02: 3.5 Flash-Lite H2 セクション分割翻訳アーキテクチャ実装 ＆ Structural Guard 検証 ＆ queue-081（千代田線・医療従事者賃貸ガイド）4言語完全長文再デプロイ・Push-Live ＆ SDD仕様書同期
- **背景と目的**: 長文ブログ記事（9,000〜10,000字）の一括翻訳時に発生していた LLM の要約バイアス・見出し脱落・薄肉化を根本解消し、各言語 15,000〜25,000文字相当の完全長文ボリュームと 100% の構造忠実性を恒久保証する H2 セクション分割 1:1 翻訳パイプラインの導入。
- **実装内容**:
  1. **H2 セクション分割翻訳エンジン (`split_html_into_sections`)**:
     - 冒頭リード文＋AEOクイックアンサーボックスおよび各 `<h2>` 境界で正確にチャンク分割し、SVG プレースホルダーを保持。
     - タイトル・メタディスクリプション・SVG テキスト配列を `ArticleMetadataTranslation` Pydantic スキーマで先行独立翻訳。
     - 各セクション（1,000〜1,500文字）を `gemini-3.5-flash-lite` に渡し、「要約・短縮・箇条書き化一切禁止」のプロンプト制約を適用。
  2. **多言語構造保持 Structural Guard の自動検証**:
     - H2一致率 >= 90%、H3保持率 >= 80%、段落P保持率 >= 70%、SVG 100%保持、日本語残存ゼロの機械アサーション。
     - `ThreadPoolExecutor(max_workers=4)` による 4言語（EN, VI, RU, ID）並列実行。
  3. **queue-081（千代田線・医療従事者賃貸ガイド）の再翻訳 ＆ HubSpot CMS 再デプロイ・Push-Live**:
     - 日本語元記事（ID: `389988060914`）をもとに、EN（`389913580243`）、VI（`389913580245`）、RU（`389950614220`）、ID（新規作成/アタッチ）を新エンジンで再翻訳・再デプロイ。
     - 各言語 15,000〜25,000文字相当の完全長文ボリュームを復元し、HubSpot CMS への PATCH ＆ Push-Live 完了。

---

### 2026-09-02: 自動執筆パイプライン復旧 ＆ GCP IAM 権限適正化（Compute SA roles/run.developer 付与）＆ deploy_gcp_cloud_run_job.sh 更新 ＆ ローカル LaunchAgent 仮想環境パス修正・再読み込み ＆ Cloud Scheduler 疎通検証 ＆ 多言語ブログ大量同期 ＆ 売買AIシミュレーター設計
- **背景と目的**: 自動執筆パイプライン（`sorai-auto-editorial`）における Cloud Scheduler の実行権限エラー解消およびローカル LaunchAgent 常駐デーモンの Python 仮想環境パス適正化による復旧、および28トピック超の多言語ブログ記事（JA, EN, VI, RU, ID）の同期。
- **実装内容**:
  1. **GCP IAM 権限の適正化 (`sorai-indexing-30323`)**:
     - Compute サービスアカウント（`902297816152-compute@developer.gserviceaccount.com`）にプロジェクトレベルで `roles/run.developer`（`--condition=None`）を付与。
     - `real-estate-cms-operations/automation/deploy_gcp_cloud_run_job.sh` 内の IAM 設定箇所を `roles/run.developer` に更新。
  2. **ローカル LaunchAgent (`com.soraitokyo.auto_editorial.plist`) の仮想環境対応**:
     - `ProgramArguments` の Python パスを `/Users/adachishuuhei/real-estate-cms-operations/.venv/bin/python3` に更新し、`launchctl` によるアンロード・再ロードを実施。
  3. **動作確認・疎通テスト**:
     - Cloud Scheduler `sorai-auto-editorial-trigger` の手動実行により、Cloud Run Job `sorai-auto-editorial` の実行インスタンス `sorai-auto-editorial-cl7xr` が正常起動・実行されることを確認。
  4. **多言語ブログ記事（全28トピック超・5言語展開）の同期**:
     - DX不動産サービス解説、北千住レトロ散歩、足立区住宅補助金2026、町屋ファミリー家賃節約、湯島・根津・御茶ノ水スーパー生活、西日暮里出口別治安＆賃貸事情、千代田線ハザードマップ等の多言語記事ドラフトを完全同期。
- **今後のHP・CMS改善アイデア**:
  1. **売買専用「AI住宅ローン・諸費用シミュレーター」のLP組み込み**: 物件価格・金利・自己資金から毎月返済額と減税額をリアルタイム試算するUIの導入。
  2. **多言語記事サイロ内部リンク自動最適化**: エリアガイドと個別街歩き・治安記事間のトピッククラスタリング強化。

### 2026-09-01: 不動産売買専用ガイドLP（buy-sell-guide.html）の新規開発 ＆ HubSpot CMS ステージング環境（/buy-sell-guide-staging）への安全配備 ＆ 5言語多言語対応
- **背景と目的**: 将来的な不動産売買（中古・新築マンション購入、囲い込みゼロの透明売却、2026年最新住宅ローン控除、外国人向け購入支援）の本格展開に向け、本番には非公開のままステージング環境で事前に確認・検証できる売買専用ガイドページを構築。
- **実装内容**:
  1. **売買専用ガイドLPテンプレート (`soraitokyo-theme/templates/buy-sell-guide.html`) の新設**:
     - 5言語完全対応（JA, EN, VI, RU, ID）。
     - **ヒーローセクション**: 「透明な仲介手数料と専門診断で、一生に一度の住まい選びに確かな安心を。」
     - **Sorai Tokyo 売買の3大特徴**: ①囲い込みゼロ・透明な仲介手数料（不要な付帯費用ゼロ）、②国交省地価データ＆修繕積立金・ハザード客観診断、③外国人向け住宅ローン・海外送金・納税管理人ワンストップサポート。
     - **5大取引ステップタイムライン**: 資金計画から内覧、買付、重説・契約、残金決済・引渡しまでのロードマップ。
     - **諸費用シミュレーション**: 物件価格5,000万円に対する諸費用（約350万円 / 6〜8%）の内訳スタックボックスおよび2026年省エネ基準適合住宅ローン減税の要点。
     - **売買専用FAQ 5選**: ポータル物件持ち込み、フルローン可否、変動vs固定金利、外国人ローン、囲い込み防止。
     - **売買特化CTA**: LINEでの無料物件診断・諸費用見積もり導線。
  2. **HubSpot CMS へのステージング配備**:
     - FileMapper API で `soraitokyo-theme/templates/buy-sell-guide.html` をアップロード（HTTP 200）。
     - ステージング検証用サイトページ（Page ID: `389697612502` / Slug: `buy-sell-guide-staging`）を作成し、`schedule_page_publish` によりステージング公開完了。
     - Live Sandbox URL（`https://soraitokyo.jp/buy-sell-guide-staging`）にて HTTP 200 OK および正常レンダリングを実機検証。

### 2026-09-01: 自動執筆パイプラインにおけるSVGテキスト消失・構文破損・枠外はみ出しの恒久的な再発防止策（5重防御アーキテクチャ）の実装 ＆ svg_comprehensive_linter.py 構文完全性検証新設・3箇所完全同期 ＆ visual_qa_auditor.py FATAL格上げ ＆ run_auto_editorial_pipeline.py デプロイ直前ハードゲート配備
- **背景と課題**: 自動執筆・多言語翻訳パイプラインにおいて、LLMの構文崩れによる `<text>` タグ消失・裸属性タグ化や、カード枠が存在するのにテキストが0個になる不具合を恒久的に再発防止する必要があった。
- **5重防御アーキテクチャ実装内容**:
  1. **第1防壁（プロンプト厳格制約）**: 2x2グリッド（各340px以上）または縦積みステップ（各720px）標準化、タイトル最大15〜20文字・説明文最大30〜35文字・バッジ最大3〜5文字の文字数バジェットおよび `<text>` XML構文保持のプロンプト強制。
  2. **第2防壁（自律構文修復・プリヒーリング）**: `svg_comprehensive_linter.py` が裸属性タグ（`<text` 欠落）を自動復元。最小内包矩形探索、単語境界 `<tspan>` 複数行自動折り返し（`wrap_svg_text`）、動的フォントスケーリング、WCAG AAA コントラスト反転を自動適用。
  3. **第3防壁（SVG構文完全性バリデータ）**: `validate_svg_syntax_integrity()` を新設。裸属性タグ・`<rect>` あるのに `<text>` 0個の空SVG・`<text>`/`<tspan>` タグペア不一致を機械検知。単体テスト10項目100%合格。
  4. **第4防壁（デプロイ直前遮断ハードゲート）**: `run_auto_editorial_pipeline.py` のデプロイ直前に `validate_svg_syntax_integrity()` を強制実行。1件でも異常があれば `RuntimeError` で即座にデプロイを遮断。
  5. **第5防壁（Visual QA 監査＆自己修復ゲート）**: `visual_qa_auditor.py` において生HTMLに対する構文完全性監査および `<text>` 0個検知を `[FATAL]` スコア -60 に格上げ。不合格時は即座に `heal_post_body()` を起動して自己修復・再パッチを実行。

### 2026-09-01: SVGテキスト消失重大バグの修正 ＆ 破損タグ自動復元プリヒール配備 ＆ svg_comprehensive_linter.py 3箇所同期 ＆ HubSpot CMS 全100記事の一括復旧・Push-Live再公開
- **背景と課題**: `svg_comprehensive_linter.py` の `replace_text_tag` において、`match.group(1)`（属性のみ）の取得により `<text` タグ名が消失して ` fill="...">` となり、ブラウザおよびHubSpot上でSVG内の全テキストが非表示・消失する重大バグが発生した。
- **実装・修復内容**:
  1. **正規表現修正 ＆ タグ名完全保持**: `r'(<text\b[^>]*)>([\s\S]*?)</text>'` に修正し、`text_open` に `<text ...` タグ全体を確実に保持。
  2. **既存破損タグ自動復元プリヒール処理配備**: `process_single_svg_text_content` 冒頭に `_restore_missing_text_tag` を追加し、過去のバグで `<text` が欠落したインラインSVGも自動復元。
  3. **3箇所完全同期 ＆ テスト100%合格**: `automation/`, `skills/sorai-editorial/scripts/`, `.agents/skills/sorai-editorial/scripts/` の3箇所を完全同期し、9項目単体テスト（`--test`）が100%合格することを確認。
  4. **HubSpot CMS 全100記事の一括修復・再公開**: `heal_recent_multilang_svgs.py` を実行し、全100記事のインラインSVGを復元・幾何リペア・WCAGコントラスト反転・tspan折り返しを適用して PATCH & push-live 再公開。HubSpot APIライブ取得アサーション検証により `<text>` タグが正しく含まれていることを検証完了。

### 2026-09-01: 多言語SVGテキストオーバーフロー完全自動修復 ＆ 単語境界折り返しエンジン（wrap_svg_text）配備 ＆ レイアウト標準化 ＆ HubSpot CMS一括自律修復
- **背景と課題**: ブログ記事内のインラインSVGにおいて、日本語から他言語（EN, VI, RU, ID）へ翻訳する際、文字数・単語幅が1.5〜2.5倍に膨張し、固定幅カード（`<rect>`）の枠外にはみ出したり、viewBox境界外へ逸脱する問題が発生していた。
- **実装・修復内容**:
  1. **多言語SVG単語境界折り返しエンジン（`wrap_svg_text`）の実装**:
     - `svg_comprehensive_linter.py` において、テキストの中心座標および絶対座標から親・近接する最も内側の背景矩形を特定する最小内包矩形探索（`find_enclosing_rect`）を実装。
     - 英語・ベトナム語・ロシア語・インドネシア語の単語境界（スペース・ハイフン）を正確に認識し、カード枠幅（300〜340px）に収まるよう行間 `dy="1.2em"` の `<tspan>` 複数行要素へと安全に自動分割・整形。
     - `text-anchor="middle"` の左右境界安全性（`abs_x ± est_w/2`）の補正、および折り返し後も収まらない場合の動的フォントスケーリング（10.5px〜11.5px / 最小 9.0px）フォールバックを統合。
     - 暗色背景上の白文字（`#ffffff`）、明色背景上の濃紺文字（`#1b2a47`）の WCAG AAA コントラスト自動反転を完全維持。
  2. **SVGレイアウト標準化 ＆ プロンプト文字数バジェット制約**:
     - `run_auto_editorial_pipeline.py` において横4列（各160px等）の極小幅カードレイアウトを完全禁止し、2x2グリッド（各340px以上）または縦積みステップレイアウト（各700px）を標準化。
     - 多言語翻訳時のテキスト長膨張を想定し、プロンプト制約としてカード内タイトル最大15〜20文字、説明文最大30〜35文字の文字数バジェット（Character Budget）を厳格設定。
     - 日本語および多言語バリエーションのデプロイ直前に `svg_comprehensive_linter.py` を通過させ、幾何境界逸脱や文字はみ出しをゼロコストで自動修復。
  3. **DOM・ビジュアルQA品質ゲートのSVGテキスト溢れアサーション配備**:
     - `visual_qa_auditor.py` において、インラインSVG内の全 `<text>` / `<tspan>` を走査し、viewBox（幅800px）境界外へのはみ出し、内包カード矩形（`<rect>`）境界オーバーフロー、同一座標でのテキスト重複・上下衝突を厳格検知・スコア減点するアサーションを追加。
  4. **HubSpot CMS 公開済み15+多言語記事の一括自律修復・再公開**:
     - HubSpot CMS 上の公開済み多言語ブログ記事15本以上（EN, VI, RU, ID）を巡回し、インラインSVGのテキストオーバーフロー・枠外はみ出しを IDE クォータ内・完全0円で一括バッチ自己修復し、Push-Live 再公開を完了。

### 2026-08-31: お問い合わせページ（contact.html）のコンバージョン率（CVR）最大化リニューアル
- **背景と課題**: サイト回遊・PVや記事読了は増加していたものの、従来のお問い合わせページ（/contact）はテンプレートコピー操作や階層的なタブUIが存在し、スマートフォンユーザーにとって心理的・操作的フリクションが生じていた。
- **刷新内容**:
  1. **ファーストビュー訴求強化**: 「ポータルURLを送るだけで仲介手数料最大半額！おとり物件ゼロ＆適正見積もり」の圧倒的ユーザーメリットを最前面に配置。
  2. **選べる3大アクションカード（3-Card Grid）**:
     - 🟢 **【最速・一番人気】LINEで物件URLを送るだけ**: 気になるSUUMO/HOME’SのURLを送るだけでREINS直結の空室確認＆削減額見積もり。
     - 💬 **【お気軽に】LINEでチャット条件相談**: ざっくりした希望条件を送るだけでAI＆宅建士が物件提案。
     - ✉️ **【じっくり】メールフォーム / オンライン面談予約**: 法人契約やメール希望、Googleカレンダーからの予約に対応。
  3. **3ステップ図解バナー**: URLコピー ➔ LINE送信 ➔ 見積もり受け取りのシンプルステップを図解化。
  4. **全5言語完全ローカライズ**: JA, EN, VI, RU, ID の5言語に完全対応。
  5. **テーマデプロイ**: HubSpot CMS本番デプロイおよび全ページ Push-Live 完了。

### 2026-08-31
- **feat(theme & dynamic-ogp-rich-cards)**: ブログ記事詳細テンプレート（`blog-post.html`）の OGP 画像（`og:image` / `twitter:image` / `BlogPosting` 構造化データ）完全動的化 ＆ アイキャッチカード自動フォールバック配備。
  - **背景と課題**: 従来、ブログ個別記事にアイキャッチ画像が手動設定されていない場合、全記事一律で鳥のシンボルマークロゴ（`logo.png`）が OGP に出力され、Facebook/X/LINE 等の自動投稿・シェア時に内容が伝わりにくい問題があった。
  - **動的解決ロジック導入**: 記事一覧（`blog-index.html`）で実績のある `icon-helper.html` の `get_category_class` & `get_post_icon` マクロを `blog-post.html` に統合。記事のスラッグ、カテゴリ（トピック）、駅名、タイトルを元に、北千住・綾瀬・千代田線・初期費用・外国人審査・カフェ・公園等の専用 Twilight Blue-Gold アイキャッチ画像（1200×630px）を自動算出・動的設定。
  - **メタタグ・AEO強化**: `<meta property="og:image">`, `<meta property="og:image:secure_url">`, `<meta property="og:image:width" content="1200">`, `<meta property="og:image:height" content="630">`, `<meta name="twitter:card" content="summary_large_image">`, `<meta name="twitter:image">`, および `BlogPosting` JSON-LD の `"image"` プロパティに完全同期。
  - **本番反映**: テーマデプロイ（`deploy_cms_theme` 93件成功）および全ページ再公開（Push-Live）を完了。実機・ライブURLでの動的OGP画像出力を検証。
- **fix(theme & area-guide-posts-limit)**: エリアガイド（`templates/area-guide.html` 等）のブログ記事取得上限（`blog_recent_posts`）を100件から250件へ拡張し過去街歩きコラムの押し出し欠落バグを根本解消。
  - **発生原因の解明**: ブログ全体の記事数が117本に増加したことで、他ジャンルの新着記事（外国人向け、初期費用、他駅コラム等）が公開されるたびに、従来の100件制限枠から過去の北千住・綾瀬・北綾瀬エリア記事が押し出されて取得対象外となり、街歩きコラム表示数が58本 ➔ 49本 ➔ 48本と新記事追加に伴い減少していた不具合を特定。
  - **HubL上限拡張**: `area-guide.html`, `area-guide-chiyoda-line.html`, `blog-post.html`, `blog-index.html` の `blog_recent_posts` 取得上限を HubL 最大値の 250 件へ一括引き上げ。
  - **本番反映**: テーマデプロイ（`deploy_cms_theme`）および全ページ再公開（Push-Live）を完了し、全58本が正確に抽出・集計・表示されるよう完全復旧。
- **feat(theme & end-cta-simulator-ux-refinement)**: ブログ記事末尾（ラストCTA）の初期費用シミュレーターUI/UX改善 ＆ 7項目完全内訳 ＆ 仲介手数料通常1ヶ月＋半額注記 ＆ ポータル掲載外費用ディスクレーマー配備 ＆ SUUMO遅延解説コラム（`/blog/portal-site-information-delay`）リンクカード配備 ＆ 2重CTAボタン排除。
  - **7項目完全内訳化**: フォールバック時も含む全ケースで、賃料・管理費・敷金・礼金・仲介手数料・初回保証料・火災保険鍵交換等の全7項目を漏れなく表示。
  - **仲介手数料の透明化**: 通常1ヶ月分（税込）を基準額とし、直下に「✨ 半額適応時は ¥XX,XXX」を明記。
  - **CTA動線の最適化（重複ボタン排除）**: 結果カード内の単体LINEボタンを削除し、結果確認後にラストCTA本来のメインLINEボタンへ自然誘導。
  - **ディスクレーマー配備**: SUUMO等ポータルサイト掲載情報に基づく概算である旨と、物件・管理会社によって付帯費用が発生する旨の注記を全5言語（JA, EN, VI, RU, ID）で整備。
  - **SUUMO遅延解説コラム連携**: 「💡 なぜSUUMOなどのポータルサイトは情報の遅延・タイムラグが起きるのか？ [解説記事を読む →]」を結果カード直下に配備し、全5言語で該当記事（`portal-site-information-delay`）へスムーズに回遊可能なリンクカードを実装。
- **fix(editorial & cloud-run-job-deploy)**: Cloud Run Job（`sorai-auto-editorial`）多言語バリエーション作成時 `publishDate` 付与の恒久化 ＆ 最新コンテナビルド・本番デプロイ。
  - `automation/run_auto_editorial_pipeline.py` において多言語バリエーション作成・更新時の `patch_payload` および `direct_payload` に `"publishDate": now_iso` を確実に含めるよう修正し、親記事・全多言語バリエーションの公開日時欠落・1970年初期化バグを恒久防止。
  - `deploy_gcp_cloud_run_job.sh` による Cloud Build コンテナイメージビルド（`sha256:249abf62...`）＆ `asia-northeast1` の Cloud Run Job `sorai-auto-editorial` 本番デプロイ完了。
  - Secret Manager（`sorai-hubspot-access-token`, `sorai-mlit-api-key`）、IAMロール、Cloud Scheduler トリガー（`0 18 * * *` UTC / 毎日 03:00 JST）の正常稼働を確認。
- **fix(editorial & multilang-publishdate-sync)**: HubSpot多言語ブログ全580記事の公開日（`publishDate`）一括完全同期 ＆ 1970年初期化バグ根本解消 ＆ 自動化スクリプト再発防止ガード配備 ＆ トップページニュースHubLハーデニング。
  - 全116トピック・全580記事を総点検し、日本語親記事と公開日時が不一致（1970-01-01等）であった多言語バリエーション230記事を親記事の `publishDate` に一括パッチ（PATCH & Push-Live）し、全580記事で1970日付0件・不一致0件の100%完全同期を達成。
  - `automation/heal_missing_multilang_posts.py` および `audit_and_heal_multilang_integrity.py` において生成・パッチ・監査時に親記事の `publishDate` を常に継承・検証・自己修復するガードを実装。
  - `soraitokyo-cms-theme/templates/partials/home-news-grid.html` のHubLロジックを堅牢化（フォールバックURL・日付フォーマット・バッジデフォルト・多言語タイトル解決）。
  - テーマ全93ファイルデプロイおよび全32ページPush-Live再公開完了。全5言語（JA, EN, VI, RU, ID）トップページの新着記事最新3件の時系列完全一致を実測検証。
- **feat(theme & chiyoda-area-guide-pagination-window)**: 千代田線エリアガイド（`templates/area-guide-chiyoda-line.html`）の記事一覧ページネーションを最大5ページ表示のスライディングウィンドウ方式（`MAX_VISIBLE = 5`）に最適化。13ページ横並びによるUI幅の肥大化を解消し、現在ページに合わせて数字がスムーズに切り替わり「前へ」「次へ」で快適に進めるUIへ刷新。
- **fix(theme & chiyoda-area-guide-html-balance)**: 千代田線エリアガイド（`templates/area-guide-chiyoda-line.html`）の綾瀬アコーディオン直後の重複終了タグ（`</div></details>`）の除去とHTMLタグ完全整合（`details` 9/9, `div` 237/237）。スタイル崩れを根本修復し即時Push-Live完了。
- **feat(theme & chiyoda-area-guide-multilingual)**: 千代田線沿線エリアガイド（`templates/area-guide-chiyoda-line.html`）の全5言語（EN / VI / RU / ID / JA）完全ローカライズ・多言語対応。
  - SVG路線図・家賃マップ、全駅比較テーブル（乗換路線・始発駅タグ・家賃相場ピル）、モバイルカード、3大エリア概要カード、中間特集コラム帯の文言を全5言語に分岐対応。
  - 北綾瀬、綾瀬、北千住、町屋、西日暮里、千駄木・根津（谷根千）、湯島・新御茶ノ水・大手町、霞ケ関・日比谷、赤坂・表参道・代々木上原の全8駅アコーディオン（メトリクスバッジ、プロ解説、メリット/デメリット一覧、ソライ東京の現場アドバイス、関連記事バナー）を全言語完全ローカライズ。
  - 注目ハッシュタグフィルターチップおよび動的マガジンカード内の駅バッジ・カテゴリ名・読了時間・アクションボタンの多言語化。
  - HubSpot CMSテーマ再デプロイ（`soraitokyo-theme` / `soraitokyo-cms-theme`）および5言語ページ（JA, EN, VI, RU, ID）のPush-Live即時公開・本番稼働検証を完了。
- **fix(theme & chiyoda-area-guide-dynamic-loop)**: 千代田線沿線エリアガイド（`templates/area-guide-chiyoda-line.html`）の新着記事未反映バグの根本解消 ＆ HubL動的ループ（`blog_recent_posts`）完全移行。
  - 静的HTMLとして固定されていた記事カード一覧（Card 1〜18）を撤廃し、HubL `blog_recent_posts(current_blog_id, 100)` による全駅・沿線関連記事の動的抽出エンジンを実装。
  - 千代田線全駅（北綾瀬〜代々木上原）、常磐線直通、足立/葛飾/荒川/文京/千代田/港/渋谷区のキーワード・タグ判定によるゾーン自動振り分け（東部/中部/西部/住みやすさ/カフェ街歩き）およびハッシュタグチップ連携を構築。
  - 5言語（JA 78記事、EN 48記事、VI 48記事、RU 47記事、ID 48記事）のHubSpot CMS本番テーマ再デプロイおよびPush-Live即時公開完了。
- **feat(daily-sync & hp-spec-deploy)**: 前日（2026-08-30）のHP・CMS・ブログ・デザインシステム開発実績総括の仕様書同期および本番デプロイ。

### 2026-08-30
- **fix(svg & step-badge)**: ステップ図丸バッジ（`circle`）内の文字はみ出し（`STEP 1` 等の突き抜け）自動簡略化（1〜4数字・中央配置 `x=cx, y=cy+6`）およびプロンプト規約化。
  - `svg_comprehensive_linter.py` において円半径 $r$ に対して文字幅がはみ出すテキストを自動検知し、中央に収まる数字「1」「2」「3」「4」（`font-size="16"`、白文字 `#ffffff`）へ自動簡略化・中央配置する自己修復ロジックを実装。
  - 湯島・新御茶ノ水記事（`388650959601`）他全5言語のSVGステップ図を一括修復し本番Push-Live完了。
- **fix(svg & contrast-healing)**: SVG図解内の丸バッジ・着色図形内テキストのコントラスト自動修復と誤反転バグの根本解消。
  - `svg_comprehensive_linter.py` において視覚的中心座標とサークル図形の幾何判定を強化し、濃紺・テラコッタ・暗色背景上の文字を100%白文字（`#ffffff`）に強制反転。
  - `visual_qa_auditor.py` および旧 `svg_geometric_linter.py` の白文字誤巻き戻しバグを完全解消し一本化。根津・千駄木記事（`388639344331`）他全15記事を一括修復し本番Push-Live完了。
- **fix(editorial & h1-dedup)**: 自動執筆・多言語翻訳・HubSpotデプロイ時の記事本文へのH1タイトル重複挿入の恒久防止。
  - プロンプトへの「本文への `<h1>` 出力厳禁」ルールの明記、`sanitize_post_body` による `<h1>` タグ機械的自動除去、`visual_qa_auditor.py` による FATAL 検知・Self-Healing 自動修復の三重防壁を配備。北綾瀬スーパー記事（`388639343348` 他全5言語）の本文H1を除去し本番Push-Live完了。
- **fix(qa & faq-regex)**: FAQカードの番号付きQ/Aバッジ（`Q1`, `A1`, `Q2`, `A2` 等）判定の正規表現対応（`visual_qa_auditor.py`）。
- **feat(performance & cwv-optimization)**: トップページ・全社HPのCore Web VitalsおよびLighthouseパフォーマンス徹底最適化（デスクトップ 47点 ➔ 92点 Good達成）。
  - **レンダリングブロック完全解除**: Google Fonts（Outfit, Plus Jakarta Sans, Noto Sans JP, Shippori Mincho）および Font Awesome（`all.min.css`）を `media="print" onload="this.media='all'"` ＋ `<noscript>` フォールバックで非同期読み込み化。
  - **画像配信最適化（1.8MB削減）**: エリアガイド・カテゴリーPNG画像（全37枚）を macOS `sips` により Retina 2x 適正サイズ（380×380px）へリサイズ（1枚あたり600KB ➔ 30〜80KB、約94%削減）。`templates/partials/home-news-grid.html` のサムネイルへ `?width=380` リサイズクエリおよび `loading="lazy"` / `decoding="async"` を付与。
  - **CLI自動監査ツール構築**: ヘッドレスChromeによるワンコマンドLighthouse自動監査スクリプト（`tools/run_lighthouse_audit.py`）を実装。
  - **実測Core Web Vitals**: FCP 0.7s、LCP 1.5s、TBT 20ms、CLS 0.00、SEO 100点満点を達成。
- **fix(routing & featured-property)**: 特選新築物件『プレジオ北綾瀬ASIAN』（`/properties/plegio-kitaayase-asian`）がブログ記事へ301転送されていたHubSpot URL Redirects（全言語7件）を完全削除し、本来の特選物件LP（全26室空室一覧・間取り図・実物写真ビューア）へのダイレクト遷移を復旧。
- **feat(editorial & design-system-enforcement)**: エディトリアル・デザインシステム自動整形エンジン（`editorial_design_system.py`）および Visual QA 厳格門番（`visual_qa_auditor.py`）の完全実装。
  - 著者・監修者ボックス（`.author-profile-box`）、Q/Aバッジ付きFAQカード（`.faq-card`）、中間LINE相談（`.c-cta-box`）、レスポンシブ表（`.table-responsive-wrapper`）の100%自動整形・冪等適用。
  - `visual_qa_auditor.py` による Author Box 欠落の FATAL 判定および FAQ Q/A バッジ欠落の自動検出・デプロイブロック・自己修復連携。
  - `run_auto_editorial_pipeline.py` への強制組み込みによる再発防止。
  - 全社ガイドライン `AGENTS.md` / `sorai-editorial/SKILL.md` および仕様書同期。
- **feat(editorial & answer-first-pipeline)**: Cloud Run Jobs自動執筆パイプライン（`run_auto_editorial_pipeline.py`）およびリライトエンジンへの「Answer-First（結論ファースト）冒頭30秒クイックアンサーボックス（`c-quick-answer-box`）」自動生成・多言語翻訳・安全フォールバック注入の完全実装。
  - 日本語執筆プロンプトへH1直後・第1章前の結論・相場・要点3行ボックス生成指示を追加。
  - 多言語翻訳プロンプト（Step 5）へ5言語ローカライズ指示を追加。
  - `ensure_quick_answer_box` 自動注入ガードによる欠落防止。
  - `sorai-editorial` スキルおよび仕様書同期。
- **feat(aeo & llms-txt)**: AI検索エンジン（ChatGPT Search, Perplexity, Claude, Google Gemini）向け標準ナレッジ規格 `llms.txt` および `llms-full.txt` の本番配備＆Answer-First構造化規約の策定。
  - 標準版（`/llms.txt`）および完全版（`/llms-full.txt`）をHubSpot CDN上に配備し、URLリダイレクト（`/llms.txt`, `/llms-full.txt`, `/.well-known/llms.txt`）による高可用性配信を確立。
  - 千代田線全駅の家賃相場表、始発駅通勤ハック、2SLDK/間取り定義、外国人契約フローを構造化してAIクローラーへ提供。
  - 冒頭結論ボックス（`c-quick-answer-box`）によるAnswer-First規約を策定・仕様書同期。
- **feat(seo & gsc-ctr-optimization)**: Google Search Console 検索順位4〜10位・高表示回数「お宝キーワード」5大テーマ・全5言語（計25記事）のタイトルタグ＆メタディスクリプション一括最適化＆HubSpot CMS本番Push-Live完了。
  - GSC全量データ分析から判明した「2sldk / 2sldkとは（月380回表示/CTR 0.0%）」「綾瀬 治安（月800回表示/6.4位）」「北綾瀬 住みたくない（月400回表示/6.5位）」「3dk/3ldk apartment japan（月450回表示）」「北千住 再開発（月200回表示）」の検索意図に完全適合したタイトル・メタディスクリプションへ改定。
  - 全25記事（JA, EN, VI, RU, ID）をHubSpot CMS APIで一括パッチ＆Push-Live即時公開完了。実機HTTP 200レスポンスおよび新タグ検証100%パス。
- **fix(automation)**: `run_daily_batch` / `run_auto_editorial_pipeline.py` の重複スキップ時無限ループ防止と最大試行回数ガード（`seen_item_ids` 追跡および `MAX_ATTEMPTS_PER_SLOT = 10`）の導入。
- **feat(theme-multilingual)**: `templates/partials/translations.html` 多言語切替UIおよび言語別URLバインドの最適化、テーマ仕様書の同期。
- **feat(hp-sync)**: 全ブログカタログ（全93記事・全465言語URL・全523記事Live）の完全リライトGrand Slam・RAGナレッジ同期完了に伴うHP仕様書更新。

### 2026-08-29
- **fix(theme & internal-links)**: ブログ共通テンプレート（`blog-post.html`）の「おすすめの関連記事」内部リンク生成エンジンの最適化 ＆ エリア外記事での空白バグ解消。
  - `blog_recent_posts(group.id, 100)` に取得母数を拡大し、エリアガイド以外の実務・契約・初期費用・生活系記事でも同カテゴリ記事を正確にマッチング。
  - 2段階フォールバック（PASS 1: 同カテゴリ優先抽出 ➔ PASS 2: 同言語良質記事による補完）を導入し、全ブログ記事で必ず魅力的な関連記事カード3枚が100%表示される仕様を確立。
  - HubSpot CMS 本番テーマ再デプロイ（Status 200 / `347647148783`）完了。
- **fix(editorial & theme-ui)**: SVG文字色・コントラスト判定バグ（ネスト最前面要素判定＆`<tspan>`構文完全化）の修正 ＆ ファーストビューCTAと目次（TOC）間の不要な巨大余白（144px→32px）の最適化。
  - `svg_comprehensive_linter.py` において包含矩形の最小面積判定を導入し濃紺・テラコッタ・スレート背景上の文字を100%白文字反転。
  - SVG内 `<span>` をブラウザ互換 `<tspan>` へ自動置換し全カラム描画切れを解消。
  - 全30ブログ記事の本番一括パッチ＆Push-Live完了。
  - `blog-post.html` および `_blog.scss` のCTA/TOC余白を再調整しHubSpotテーマ本番再デプロイ完了。
- **feat(editorial & grand-slam-rewrite)**: 全ブログカタログ（全93記事・全465言語URL・全523記事Live）の完全並列自律リライト＆本番デプロイ完遂（Grand Slam）。
  - **全93記事の超高密度リライト**: 1記事あたり8,000〜11,000文字、文末リズム「です・ます」連続2回以下を100%適合。
  - **Google Search Grounding 6大ドメインファクト検証**: 全記事で一次情報照合・自動補正を完遂（自治体名・2024/2025/2026年最新施設・店舗営業時間・宅建業法報酬告示0.55/1.1ヶ月税込・建築基準法新耐震・指定信用情報機関CIC等の事実誤認・過去年度データを完全パージ）。
  - **5言語完全等価展開（JA, EN, VI, RU, ID）**: SVGダイアグラムの自動復元、AEO/JSON-LD構造化データ付与、HubSpot CMS一括Push-Live（Status 204）。
  - **自社独自機能記事の完全保護**: 「初期費用シミュレーター」「IT重説」「完全匿名Webチャット」「DXガイド」の4本を本来の機能仕様・UI解説バージョンへ完全復元。
  - **AIチャットボット向けRAGナレッジ同期**: `packages/common/data/knowledge_articles.json` および `column-search-agent/articles.json` への全件即時同期完了。
- **feat(editorial & full-catalog-rewrite)**: Antigravity 2.0マルチエージェント並行自律リライトにより、サイト内全31大キラー記事（全5言語・計155記事：JA/EN/VI/RU/ID）の全面刷新＆本番Push-Liveを完遂。
  - **第1弾（重要ピラー・再開発 6記事）**: `summer-offseason-room-search-tips`, `portal-site-information-delay`, `area-guide-kitasenju-redevelopment-trend-2026`, `ayase-chiyoda-line-commuting-hack`, `initial-cost-breakdown-2026`, `area-guide-ayase`
  - **第2弾（実務マスター・沿線全駅 5記事）**: `tokyo-apartment-viewing-tips`, `area-guide-chiyoda-line`, `kita-ayase-single-renters-guide`, `apartment-screening-checklist-guide`, `area-guide-news-kita-ayase-development`
  - **第3弾（GSC順位急上昇圏 5記事）**: `area-guide-kita-ayase-kitasenju`, `kita-ayase-agency-comparison`, `area-guide-kita-senju`, `kita-ayase-unpopular-reasons-truth`, `area-guide-ayase-vs-kitaayase-comparison`
  - **第4弾（高需要＆高CTR 5記事）**: `kita-senju-commuting-convenience-5lines`, `tokyo-cost-effective-stations-guide`, `chiyoda-joban-line-rent-comparison-2026`, `lease-renewal-fee-guide`, `any-agency-can-introduce-properties`
  - **第5弾（足立区ピラー＆生活契約 5記事）**: `area-guide-adachi`, `kita-ayase-higashi-ayase-park-pool-guide`, `moving-daian-2026`, `tsuyu-mold-prevention`, `lease-special-clauses-checklist`
  - **第6弾（厳選間取り・ライフライン 5記事）**: `2sldk-2ldk-difference-guide`, `3dk-3ldk-3sldk-difference-guide`, `utility-setup-guide`, `adachi-hazard-map-preparedness-guide`, `kita-senju-station-exit-comparison`
  - 全記事で6大ドメインGoogle Fact Checker・文末リズム校正・高コントラストSVG改修・余白最適化（32px）・動的関連記事カード・レスポンシブ比較表・FAQPage/BlogPosting JSON-LDを完全付与しGSC即時インデックス送信（155本）＆RAGナレッジ同期完了。
- **feat(editorial & cloud-run-jobs)**: 自律執筆・リライトエージェント（`sorai-auto-editorial`）のコンテナビルド（Cloud Build）＆ GCP Cloud Run Jobs本番再デプロイ。
  - `from __future__ import annotations` 適用による型解決エラー防止。
  - `run_rewrite_pipeline.py` リライトエンジンおよび動的関連記事カード・SVGリンター・6大ドメインファクトチェッカーの最新スクリプトを完全同期。
  - Artifact Registry 最新イメージプッシュ＆Cloud Scheduler 定期トリガー連動完了。
- **feat(editorial & antigravity-rewrite)**: Antigravity 2.0ローカル自律リライトエンジン（`run_rewrite_pipeline.py`）の完全実装 ＆ 2026年秋の住み替え完全ガイド（`summer-offseason-room-search-tips`）の全5言語本番Push-Live。
  - GCP Cloud Run Jobsと完全同一の6大ドメインGoogle Fact Checker・文末リズム校正・SVGリンター・動的内部リンク・5言語並行翻訳パイプラインをMacローカル＆完全ゼロコストで実行可能化。
  - 夏オフシーズン記事を「2026年秋の住み替え完全ガイド：9〜11月の引越し・更新時期に損しない物件探し＆初期費用節約術」へ全面刷新。
  - 全5言語のHubSpot既存記事への直接パッチ・Push-LiveおよびGSC即時送信・RAGナレッジ同期完了。
- **fix(seo & blog-cleanup)**: 低品質（81文字）・キーワード重複ブログ記事（`kita-senju-vs-kita-ayase-guide`）の全5言語（JA, EN, ID, RU, VI）HubSpot完全削除 ＆ 11,000文字マスターピラー記事（`area-guide-kita-ayase-kitasenju`）への301恒久リダイレクト設定。
  - 低品質コンテンツによるGoogle SEO評価の減点リスクおよび同一テーマ間でのカニバリゼーションを完全排除。
  - 全5言語の旧URLに対する301 Moved Permanently設定・HTTP Location転送テスト100%合格。
- **fix(editorial & cta)**: 自動執筆パイプライン二重CTA防止＆公開中記事（足立区住宅補助金）の末尾CTA除去・再デプロイ。
  - `sorai_article_generator.py` / `run_auto_editorial_pipeline.py` プロンプトから末尾CTAボックス生成指示を削除し、「共通テンプレート側で自動付加されるため本文末尾に重複CTAブロックを生成しない」ルールを明記。
  - `strip_trailing_cta_boxes` サニタイズ関数実装による末尾重複CTAの自動パージ機構を導入。
  - 公開中記事 `adachi-housing-subsidy-support-guide-2026` の全5言語（JA, EN, VI, RU, ID）末尾重複CTAを除去し、HubSpot CMS上書きデプロイ＆Push-Live即時本番反映完了。
- **feat(editorial & fact-checker)**: Google検索グラウンディング・ファクトチェッカー（`google_fact_checker.py`）の完全実装＆パイプライン自動統合。
  - ドラフトHTML/MDからの行政制度・助成上限額・最新年度2026年・鉄道所要時間・店舗名/営業時間・家賃相場ファクト抽出。
  - Google Search Grounding による自治体・公的一次情報照合（`VERIFIED`/`OUTDATED`/`MISMATCH`/`UNVERIFIED` 4段階判定）。
  - `--fix` による自動置換＆`.bak` 安全バックアップ生成、`sorai_article_generator.py` / `run_editorial_loop.sh` 連動。

### 2026-08-28
- **feat(mobile-nav & about-us)**: スマホ用常時固定フローティング下部ナビゲーション（`.mobile-bottom-nav`）への「会社概要（`/about-us`）」クイックアクセスタブの正式追加。
  - ホーム、会社概要、エリア、ブログ、言語、問合せの全6タブ構成へ拡充。
  - Shippori Mincho・A11yアクセシビリティ準拠、アクティブインジケーター連動。
  - 多言語ラベル（JA: 会社概要 / EN: About / VI: Giới thiệu / RU: О нас / ID: Profil）対応。
  - HubSpot CMS 本番デプロイ＆全40ページ再公開、Chrome DevTools モバイル実機検証完了。
- **feat(facebook-poster & cloud-run-jobs)**: Facebook自動投稿システムの完全クラウド化（Cloud Run Jobs ＆ Cloud Scheduler）への移行完了。
  - ローカルMac依存のLaunchAgentからGCP asia-northeast1 のサーバーレスCloud Run Jobs (`facebook-poster-ja`, `facebook-poster-en`, `facebook-insights-sync`) へ全面移行。
  - Python 3.12-slim 非rootコンテナ構築、Secret Manager (`facebook-page-access-token`, `facebook-poster-hubspot-token`, `gemini-api-key`) 連携。
  - Cloud Scheduler（10:00 & 21:00 JA, 14:00 & 18:00 EN, 23:00 Insights）設定。
  - GCS `state_bucket` 状態永続化、Cloud Run Jobs 実機テスト実行（JA / EN / Insights）100%成功。
- **feat(about-us & pc-whitespace)**: 会社概要ページ（`/about-us`）のPC画面における余白不足（全幅伸び切り・窒息感）の抜本的解消＆上質なブリージング・ルーム（Breathing Room & Generous Spacing）の完全構築。
  - `.site-container` に `max-width: 1040px` ＆ 左右ガター `padding: 0 36px / margin: 0 auto` を明示設定しPC画面端へのベタ張り伸長を解消。
  - ページ縦余白 `padding: 90px 0 160px`、各章セクション間マージン `margin-bottom: 110px`。
  - 創業者カード内部パディング `64px 56px` ＆ 3本柱 `gap: 40px`、テキスト行間 `line-height: 1.95〜2.0`。
  - 4つの安心宣言および5ステップ・会社情報テーブルの余白を贅沢に拡張。SCSS再ビルド、HubSpot CMS 本番デプロイ＆全40ページ再公開、GSC再送信。
- **feat(facebook-poster & insights-bq-ga4)**: FacebookインサイトのBigQuery日次自動同期（`hubspot_data.facebook_insights`）＆ GA4トラフィック・成約計測用UTMパラメータ自動付与の実装。
  - `insights.py --sync-bq` 新設による Meta Graph API エンゲージメント指標（reach, impressions, likes, comments, shares, clicks, engagement_rate）の日次パーティション自動集計・保存。
  - `config.py build_utm_url` 実装による投稿URLへの `utm_source=facebook&utm_medium=social&utm_campaign=auto_fb_poster&utm_content=...` 自動注入。
  - GA4管理画面での流入セッション・滞在時間・LINE相談コンバージョン一気通貫計測。
- **feat(about-us & visual luxury)**: 会社概要ページ（`/about-us`）の「枠線カードだらけのダサいテンプレ感」を完全打破＆雑誌風エディトリアル・モノグラフ（Magazine Editorial & Architectural Horizon）への全面リニューアル。
  - 創業者ストーリーの入れ子白カードを撤廃し明朝体（`Shippori Mincho`）クオート＆ゴールド繊細ライン・細線番号（`01/02/03`）による水平3列ホライズングリッドへ昇華。
  - 4つの安心宣言の白枠カードを余白とタイポグラフィで魅せる2列エディトリアルへ刷新。
  - 5ステップを繋がりのある横断型スマートロードマップ（`01. STEP 〜 05. STEP`）へ統一。
  - 企業概要テーブルとGoogleマップの2カラム統合、SCSS再ビルド、HubSpot CMS 本番デプロイ＆全40ページ再公開、GSC再送信。
- **feat(facebook-poster & rag-trend)**: BigQuery GSC/GA4 トレンド抽出 × 全513記事 RAG ナレッジ検索 × Gemini 3.5 Flash-Lite 連動 SNS 自動配信エンジンの完全実装。
  - `trend_extractor.py` 新設による GSC `searchdata_url_impression` & GA4 `events_*` 直近14日間の検索急上昇・高エンゲージメントトピック自動抽出。
  - `rag_retriever.py` 新設による513記事データベースからのセマンティックRAGナレッジ・具体相場データ抽出。
  - `gemini_generator.py generate_trend_rag_post` 実装（共感フック・裏付けデータ・記事直通URL・LINE無料見積もりCTA）。
- **feat(about-us & anti-ai polish)**: 会社概要ページ（`/about-us`）のAIっぽさ（過度なクリップアートアイコン・英語バッジ・過剰なDXバナー・「！」多用）を完全一掃＆人間味と落ち着きのあるクワイエット・ラグジュアリー（Quiet Luxury）デザインへの昇華。
- **feat(header & navigation)**: 全体ヘッダーナビゲーションの信頼・独自性ファースト再構築（デスクトップ＆モバイルドロワーの階層最適化、HubSpot CMS デプロイ・全ページ再公開）。

---

### 2026-08-27
- **fix(editorial & svg)**: ブログSVG内ステップ数字・ラベル視認性不具合の全85記事一括修復＆再発防止多層防御。
  - `svg_contrast_linter.py` 新設による円・矩形背景と同色の不可視化テキスト検知・白文字 `#ffffff` 自動修正。
  - `sorai_article_generator.py` / `sorai_multilang_translator.py` プロンプト指示強化＆生成直後の linter 自動実行。
  - HubSpot MCP `validate_static_blog_post` / `deploy_static_blog_post` デプロイ前自動監査＆サニタイズ実装。
- **feat(cvr & lpo)**: お問い合わせページ（`/contact`）成約率最大化に向けたファーストビュー＆導線刷新。
  - `contact.html` にワンタップ起動可能なLINE相談メインCTAボタン `c-line-hero-btn`、3大安心バッジ `c-trust-badge`、ポータルURL相見積もり3ステップ図解カード `c-contact-step-guide`、および初期費用シミュレーター `/quote` 導線を追加。
- **feat(seo & editorial)**: 眠れる良質記事のアクセス覚醒＆内部リンク網（Silo構造）最適化の完遂。
  - 北千住・千代田線/家賃比較・綾瀬/北綾瀬の主要3大クラスタ全10記事に対し、レスポンシブな関連記事紹介カード `c-related-links-card` および文脈直通アンカーテキストを一括注入。
  - HubSpot CMS Draft更新 ➔ 本番Push-Live ➔ Google Search Console Indexing API一括再送信。

---

### 2026-08-26 以前
- **feat(cms & locale)**: 5言語（JA, EN, VI, RU, ID）ロケール分離に基づく多言語ブログ・固定ページの全面展開。
- **feat(quote & simulator)**: 初期費用シミュレーター（`/quote`）のHubSpot CMS完全統合＆リアルタイム見積もり計算エンジンの実装。
- **feat(aeo & schema)**: 100%完全一致 `FAQPage` JSON-LD および `BlogPosting` 構造化データの一括適用。
