vip-roofing-brisbane · V3 handoff
14 files · 14-file handoff schema · source: clients/vip-roofing-brisbane/v2/handoff/
README.md · 1.5KB
# Handoff Package · VIP Roofing Brisbane
> Generated by `pl:build-handoff` · 2026-05-16T12:01:16.477Z
> Entity: `place_chij6wsd-kzbkwsryzke1ejotjs` · Phase: `ready-to-build`
## 商家概览
- **名字**: VIP Roofing Brisbane
- **行业**: roofer
- **城市**: Brisbane (QLD)
- **网站**: https://www.viproofingbrisbane.com.au/
- **电话**: (07) 3062 7779
- **ABN**: _(待 ABR_GUID 注册后补)_
- **域名年龄**: 11 年 (wayback_first_snapshot)
- **第一次上线**: 2015-03-01
- **Google**: 5★ · 26 reviews
## Handoff 14 文件结构
- **core-facts.json** · 硬数据 · 27 字段 · LOCKED
- **design/brand-tokens.json** · brand color/font tokens
- **design/design-style.md** · visual style 描述
- **content/services.json** · 5 服务条目
- **content/about.md** · 公司故事 (niche typical + 硬数据综合)
- **content/faq.json** · 6 问 (niche typical)
- **structure/page-map.json** · 14 页 · 5 服务 + 4 area 长尾
- **structure/seo-strategy.md** · long-tail target list
- **audit/findings.json** · 19 issue
- **audit/issue-fix-matrix.json** · issue → page+section 映射
- **boundaries.md** · LOCKED 字段清单
- **final-prompt.md** · build prompt aggregator
- **README.md** (本文)
## 待 Phase B 升级 (LLM 调用 · Cascade A)
- Logo skill 真调 (现在是 brand-tokens niche default · 没真 logo)
- about-narrative LLM 综合 (现在是模板综合 · 没用 review 语气 / 原网内容)
- services 描述 LLM 抽 (从现网 markdown / GBP types)
- FAQ LLM 生成 (现在是 niche typical · 没 customize)
- Photos AI 分析 + selection
- Reviews 真聚合 + AI fallback
- Page-map LLM 决策 (现在 area pages 是 city+方位 hardcode · 没 sitemap analysis)
详见 [docs/v3/HANDOFF-STRUCTURE.md](../../../docs/v3/HANDOFF-STRUCTURE.md)
download raw
audit/findings.json · 6.4KB
{
"audit_score": 27,
"decision": "strong_redesign",
"findings": [
{
"id": "above_fold_cta_within_5s",
"severity": "critical",
"weight": null,
"what_observed": "no CTA keyword in first 1500 chars",
"why_it_costs": "客户打开你的网站后,前 5 秒内(一屏之内)看不到任何明显的「联系我们 / 报价 / 立即拨打」按钮。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "phone_visible_above_fold",
"severity": "critical",
"weight": null,
"what_observed": "phone hidden below fold or missing",
"why_it_costs": "电话号码在第一屏看不到 — 客户必须滚动才能找到怎么联系你。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "click_to_call_link",
"severity": "major",
"weight": null,
"what_observed": "no tel: link",
"why_it_costs": "电话号码不是 click-to-call 链接(手机上点击不会自动拨号)。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "homepage_title_clear",
"severity": "major",
"weight": null,
"what_observed": "title='' contains-name=false contains-niche=false",
"why_it_costs": "你网站的浏览器标签 title 没把业务名字 + 服务关键词写清楚(比如该写「VIP Roofing Brisbane - roofer Brisbane」,但目前是泛泛一句)。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "service_copy_specific",
"severity": "major",
"weight": null,
"what_observed": "0 service-related verbs detected",
"why_it_costs": "网站文案里没有具体说清楚你做哪些服务(比如 metal roofing / tile restoration / gutter / skylight 等专项),只是泛泛说「我们做屋顶」。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "trust_signals_present",
"severity": "major",
"weight": null,
"what_observed": "0 trust-keyword mentions",
"why_it_costs": "网站上没有显眼地写出执照号 / ABN / 保险信息 / 从业年限 / 行业证书。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "h1_unique",
"severity": "major",
"weight": null,
"what_observed": "0 <h1> tags",
"why_it_costs": "页面要么没有 H1 标题(搜索引擎无法理解页面主旨),要么有多个 H1(搜索引擎不知道哪个是主题)。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "local_schema_markup",
"severity": "major",
"weight": null,
"what_observed": "no LocalBusiness JSON-LD",
"why_it_costs": "网站没有 LocalBusiness JSON-LD 结构化数据(让 Google / AI 知道你是本地企业、地址、电话、营业时间的标准格式)。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "has_hours",
"severity": "minor",
"weight": null,
"what_observed": "no hours",
"why_it_costs": "GBP 上没有完整的营业时间。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "image_count",
"severity": "minor",
"weight": null,
"what_observed": "0 images",
"why_it_costs": "GBP 上图片数量低于行业建议(一般 ≥ 10 张完工图 + 团队照 + 设备照)。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "has_business_description",
"severity": "minor",
"weight": null,
"what_observed": "no description",
"why_it_costs": null,
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "has_service_area",
"severity": "minor",
"weight": null,
"what_observed": "no service area",
"why_it_costs": null,
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "favicon_and_meta",
"severity": "minor",
"weight": null,
"what_observed": "favicon: no, meta: no",
"why_it_costs": "你的网站缺少 favicon(浏览器标签页上的小图标)或基本的 meta 标签。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "quote_or_booking_form",
"severity": "minor",
"weight": null,
"what_observed": "no form",
"why_it_costs": "你的网站没有 quote / booking 表单 — 客户只能打电话或发邮件。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "has_gallery",
"severity": "minor",
"weight": null,
"what_observed": "no gallery",
"why_it_costs": "没有项目作品集 / before-after 图库。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "has_testimonials",
"severity": "minor",
"weight": null,
"what_observed": "no testimonials",
"why_it_costs": "网站上没有客户评价 / 推荐 — 即使你 Google 上有 25 条 5★ 评价。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "evidence_of_recent_update",
"severity": "minor",
"weight": null,
"what_observed": "no recent year (≤ 1 year ago)",
"why_it_costs": null,
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "title_meta_present",
"severity": "minor",
"weight": null,
"what_observed": "title=no meta=no",
"why_it_costs": "页面缺少 SEO 用的 title 标签或 meta description。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
},
{
"id": "image_alt_present",
"severity": "minor",
"weight": null,
"what_observed": "1 images, 0% with alt",
"why_it_costs": "图片没有 alt 文字描述。",
"fix_prescription": null,
"fix_target": null,
"verification": null,
"source": "[审计 · detailed-audit]"
}
],
"_meta": {
"generator": "pl:build-handoff MVP",
"derived_from": "data/v2/fixtures/detailed-audit/place_chij6wsd-kzbkwsryzke1ejotjs.json",
"total_findings": 19
}
}
download raw
audit/issue-fix-matrix.json · 3.8KB
{
"matrix": [
{
"issue_id": "above_fold_cta_within_5s",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "phone_visible_above_fold",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "click_to_call_link",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "homepage_title_clear",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "service_copy_specific",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "trust_signals_present",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "h1_unique",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "local_schema_markup",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "has_hours",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "image_count",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "has_business_description",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "has_service_area",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "favicon_and_meta",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "quote_or_booking_form",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "has_gallery",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "has_testimonials",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "evidence_of_recent_update",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "title_meta_present",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
},
{
"issue_id": "image_alt_present",
"resolved_in_pages": [
"all"
],
"resolved_in_sections": [
"(待 LLM 推断)"
],
"verification_check": null
}
],
"_meta": {
"generator": "pl:build-handoff MVP · LLM 升级见 V3-HANDOFF-STRUCTURE Phase B"
}
}
download raw
boundaries.md · 0.6KB
# OD 不能改的 (LOCKED · 严格)
## 商家硬数据 (verbatim · 一字不改 · VIP Roofing Brisbane)
- **business_name**: `VIP Roofing Brisbane`
- **phone**: `(07) 3062 7779`
- **phone_tel_link**: `tel:0730627779`
- **address**: `39/71 Eagle St, Brisbane City QLD 4000, Australia`
- **abn**: `(待 ABR 补)` (?)
- **rating**: 5★ (26 reviews)
- **google_maps_url**: `https://maps.google.com/?cid=4273580595831149153`
## 不许做的
- 编造 license 号 / award / 价格 / 团队规模
- 改 Reference template 的 data-od-locked 区
- 删 data-od-sample 标记 (M5 客户要改占位)
- 用 "Welcome to" / "Your trusted" / "X years of excellence" 这种模板套话
- 修改商家名拼写 / 改电话格式 / 简化地址
详见 docs/v4/DATA-PRESERVATION-CONTRACT.md
download raw
content/about.md · 0.3KB
---
generator: "pl:build-handoff MVP"
last_updated: "2026-05-16T12:01:16.474Z"
sources:
- "[GBP]"
- "[Wayback]"
---
# About VIP Roofing Brisbane
VIP Roofing Brisbane 自 2015 在 Brisbane 经营 · 至今 11 年。
Google 评分: 5★ · 26 条评论。
## 备注
MVP 阶段 · 这段为 niche typical + 硬数据综合 · LLM 综合升级见 V3-HANDOFF-STRUCTURE Phase B (Cascade A 调用)。
download raw
content/faq.json · 1.2KB
{
"faqs": [
{
"q": "How much does roof restoration cost in Brisbane?",
"a": "Free quote · pricing depends on damage extent · we provide written estimates within 24 hours.",
"source": "[niche typical · MVP]"
},
{
"q": "Are you QBCC licensed?",
"a": "Yes · we hold a current Queensland Building and Construction Commission license · public record at ABR.",
"source": "[niche typical · MVP]"
},
{
"q": "Do you offer free quotes?",
"a": "Yes · no obligation site visit · written quote within 24 hours.",
"source": "[niche typical · MVP]"
},
{
"q": "How long does a roof replacement take?",
"a": "Typically 2-5 days depending on roof size and weather · we keep you updated throughout.",
"source": "[niche typical · MVP]"
},
{
"q": "What's your warranty?",
"a": "All workmanship guaranteed · Colorbond materials carry manufacturer warranties up to 36 years.",
"source": "[niche typical · MVP]"
},
{
"q": "Do you handle insurance claims?",
"a": "Yes · we work directly with insurance companies for storm/hail damage claims.",
"source": "[niche typical · MVP]"
}
],
"_meta": {
"generator": "pl:build-handoff MVP"
}
}
download raw
content/services.json · 1.3KB
{
"services": [
{
"id": "roof-restoration",
"name": "Roof Restoration",
"desc": "全面屋顶翻新 · 高压清洁 + 修补 + 重涂 + 防水",
"icon": "sparkles",
"page_slug": "/roof-restoration",
"source": [
"[niche typical]"
]
},
{
"id": "roof-repair",
"name": "Roof Repair",
"desc": "漏水修复 · 屋瓦更换 · 紧急维修",
"icon": "wrench",
"page_slug": "/roof-repair",
"source": [
"[niche typical]"
]
},
{
"id": "gutter-replacement",
"name": "Gutter Replacement",
"desc": "排水沟更换 · Colorbond / Zincalume",
"icon": "water",
"page_slug": "/gutter-replacement",
"source": [
"[niche typical]"
]
},
{
"id": "gutter-guard",
"name": "Gutter Guard",
"desc": "防堵排水沟方案 · 长期维护",
"icon": "shield",
"page_slug": "/gutter-guard",
"source": [
"[niche typical]"
]
},
{
"id": "metal-roofing",
"name": "Metal Roofing",
"desc": "金属屋顶安装 · 商业 + 住宅",
"icon": "rectangle",
"page_slug": "/metal-roofing",
"source": [
"[niche typical]"
]
}
],
"_meta": {
"generator": "pl:build-handoff (MVP · niche typical · LLM 升级待 V3-HANDOFF-STRUCTURE Phase B)",
"derived_from": "niche typical · GBP categories fallback"
}
}
download raw
core-facts.json · 1.3KB
{
"business_name": "VIP Roofing Brisbane",
"phone": "(07) 3062 7779",
"phone_tel_link": "tel:0730627779",
"email": null,
"address": "39/71 Eagle St, Brisbane City QLD 4000, Australia",
"city": "Brisbane",
"state": "QLD",
"niche": "roofer",
"gbp_categories": [
"establishment",
"point_of_interest",
"roofing_contractor"
],
"rating": 5,
"review_count": 26,
"google_maps_url": "https://maps.google.com/?cid=4273580595831149153",
"domain": "viproofingbrisbane.com.au",
"website": "https://www.viproofingbrisbane.com.au/",
"website_status": "has_website",
"social_links": {},
"hours": null,
"abn": null,
"abn_status": null,
"abn_registered_at": null,
"entity_type": null,
"trading_names": [],
"domain_registered_at": null,
"domain_age_years": 11,
"domain_age_source": "wayback_first_snapshot",
"first_online": "2015-03-01",
"wayback_first_snapshot_url": "http://web.archive.org/web/20150301021626/http://www.viproofingbrisbane.com.au/",
"_meta": {
"generated_at": "2026-05-16T12:01:16.473Z",
"entity_key": "place_chij6wsd-kzbkwsryzke1ejotjs",
"entity_phase": "ready-to-build",
"sources": {
"business_name": "[GBP]",
"phone": "[GBP]",
"address": "[GBP]",
"abn": null,
"domain_registered_at": null,
"first_online": "[Wayback]"
}
}
}
download raw
design/brand-tokens.json · 0.3KB
{
"primary": "#1a3d5c",
"accent": "#d97706",
"font_heading": "Inter",
"font_body": "Inter",
"dominant_palette": "navy + warm orange (industrial trades typical)",
"_meta": {
"generator": "pl:build-handoff MVP · niche typical · logo skill 待接"
}
}
download raw
design/design-style.md · 0.2KB
# Design Style · VIP Roofing Brisbane
Modern Industrial · Trust-heavy · Editorial layout · Navy anchor with warm orange accent · Professional roofer aesthetic
_(niche typical · LLM 升级待 V3-HANDOFF-STRUCTURE Phase B)_
download raw
design/logo-mode.json · 0.1KB
{
"mode": "placeholder",
"note": "Logo skill 未接 · 用 reference template 内置 logo · 客户提交 logo 后 M5 替换",
"skill_to_invoke": "existing-logo-brand"
}
download raw
final-prompt.md · 1.5KB
# Build Prompt · VIP Roofing Brisbane
You are adapting a reference website to a real customer. This is the build prompt aggregator
for Open Design (Codex retex). Read all referenced handoff files before generating.
## Target Customer
- **Business**: VIP Roofing Brisbane
- **Phone**: (07) 3062 7779
- **Address**: 39/71 Eagle St, Brisbane City QLD 4000, Australia
- **Niche**: roofer
- **City**: Brisbane, QLD
- **Website**: https://www.viproofingbrisbane.com.au/
- **Route**: REDESIGN
## Read these handoff files (in order)
1. `core-facts.json` — LOCKED data · use verbatim, do not paraphrase
2. `design/brand-tokens.json` + `design/design-style.md`
3. `content/services.json` — features to highlight
4. `content/about.md` — about narrative (may tighten copy · keep facts)
5. `content/faq.json` — 6 FAQs to embed
6. `structure/page-map.json` — build these N pages
7. `structure/seo-strategy.md` — long-tail target
8. `audit/findings.json` — 19 audit issues (REDESIGN only)
9. `audit/issue-fix-matrix.json` — which page solves which issue
10. `boundaries.md` — what you CANNOT do
## Build Requirements
- Every LOCKED field from `core-facts.json` must appear verbatim
- Each `audit/findings.json` issue must be addressed per `fix_prescription`
- Output must pass verification checks in `audit/issue-fix-matrix.json`
- Follow `boundaries.md` strictly
## Reference Template Family
Default: `classic-premium-roftix` (roofer/trades family · adaptable to other niches via LLM retex)
---
_Generated by pl:build-handoff · 2026-05-16T12:01:16.478Z_
download raw
structure/page-map.json · 2.0KB
{
"pages": [
{
"slug": "/",
"name": "Home",
"type": "home",
"purpose": "hero + 3 services + reviews + trust + map + CTA",
"priority": 1
},
{
"slug": "/roof-restoration",
"name": "Roof Restoration",
"type": "service",
"priority": 2
},
{
"slug": "/roof-repair",
"name": "Roof Repair",
"type": "service",
"priority": 2
},
{
"slug": "/gutter-replacement",
"name": "Gutter Replacement",
"type": "service",
"priority": 2
},
{
"slug": "/gutter-guard",
"name": "Gutter Guard",
"type": "service",
"priority": 2
},
{
"slug": "/metal-roofing",
"name": "Metal Roofing",
"type": "service",
"priority": 2
},
{
"slug": "/roofer-brisbane",
"name": "roofer Brisbane",
"type": "area",
"primary": true,
"priority": 3
},
{
"slug": "/roofer-brisbane-cbd",
"name": "roofer Brisbane CBD",
"type": "area",
"priority": 3
},
{
"slug": "/roofer-brisbane-northside",
"name": "roofer Brisbane Northside",
"type": "area",
"priority": 3
},
{
"slug": "/roofer-brisbane-southside",
"name": "roofer Brisbane Southside",
"type": "area",
"priority": 3
},
{
"slug": "/about",
"name": "About",
"type": "about",
"purpose": "company story + ABN + license · trust 集中",
"priority": 2
},
{
"slug": "/reviews",
"name": "Reviews",
"type": "reviews",
"purpose": "26 reviews aggregator",
"priority": 3
},
{
"slug": "/contact",
"name": "Contact",
"type": "contact",
"purpose": "form + tel + map",
"priority": 1
}
],
"total_pages": 14,
"service_pages": 5,
"area_pages": 4,
"_meta": {
"generator": "pl:build-handoff MVP",
"rationale": "Brisbane roofer · 标准结构: home + 5 services + 4 area 长尾 + about + reviews + contact"
}
}
download raw
structure/seo-strategy.md · 0.6KB
---
generator: "pl:build-handoff MVP"
source: "niche typical · city + niche combo"
---
# SEO Strategy · VIP Roofing Brisbane
## Primary Keywords
- "roofer Brisbane"
- "best roofer Brisbane"
- "roofer near me Brisbane"
## Long-tail (Service × Area)
- "roof repair Brisbane CBD"
- "roof restoration Brisbane Northside"
- "gutter replacement Inner Brisbane"
## Schema (per page)
- LocalBusiness (whole-site · ABN + phone + address)
- Service (per service page)
- AggregateRating (26 reviews · 5★)
- FAQ (per page · FAQPage)
## 备注
MVP 阶段 long-tail target 为 niche typical · LLM 升级时综合 audit sitemap classify 真实长尾页 + 竞品分析。
download raw