多门店与多地区SEO
High Contrast
Dark Mode
Light Mode
Sepia
Forest
2 min read375 words

多门店与多地区 SEO

单个本地 SEO 页面是起点——真正的挑战是在几十个城市/地区都做到第一页。

多地区 SEO 架构

graph TD BRAND[品牌官网] --> NATIONAL[全国落地页] NATIONAL --> PROVINCE[省级页面] PROVINCE --> CITY[城市页面] CITY --> STORE[门店详情页] BRAND --> GBP[Google商家主页集合] GBP --> GBP1[门店A GBP] GBP --> GBP2[门店B GBP] CITY --> SCHEMA[本地Schema标记] CITY --> REVIEWS[评价系统] CITY --> CITATION[本地引用] style CITY fill:#c8e6c9,stroke:#388e3c,stroke-width:2px style STORE fill:#e3f2fd,stroke:#1565c0,stroke-width:2px

多门店页面生成器

"""
多门店 SEO 落地页框架
"""
from dataclasses import dataclass, field
@dataclass
class StoreLocation:
store_id: str
city: str
district: str
address: str
phone: str
hours: dict[str, str]
services: list[str]
manager_name: str
review_count: int
avg_rating: float
nearby_landmarks: list[str]
lat: float
lng: float
class LocalPageGenerator:
"""本地 SEO 落地页内容生成"""
@staticmethod
def generate_title(store: StoreLocation, brand: str, service: str) -> str:
"""H1 标题 — 城市 + 服务 + 品牌"""
return f"{store.city}{store.district}{service} — {brand}官方门店"
@staticmethod
def generate_meta(store: StoreLocation, brand: str, service: str) -> str:
"""Meta Description — 含城市、服务、评分"""
return (
f"{store.city}{service}首选,{brand}{store.district}门店。"
f"{store.review_count}条真实评价,均分{store.avg_rating}星。"
f"地址:{store.address},电话:{store.phone}。"
)[:160]
@staticmethod
def generate_schema(store: StoreLocation, brand: str) -> dict:
"""LocalBusiness JSON-LD Schema"""
return {
"@context": "https://schema.org",
"@type": "LocalBusiness",
"name": f"{brand} — {store.city}{store.district}店",
"address": {
"@type": "PostalAddress",
"streetAddress": store.address,
"addressLocality": store.city,
"addressRegion": store.district,
"addressCountry": "CN",
},
"telephone": store.phone,
"geo": {
"@type": "GeoCoordinates",
"latitude": store.lat,
"longitude": store.lng,
},
"openingHoursSpecification": [
{
"@type": "OpeningHoursSpecification",
"dayOfWeek": day,
"opens": hours.split("-")[0],
"closes": hours.split("-")[1],
}
for day, hours in store.hours.items()
],
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": store.avg_rating,
"reviewCount": store.review_count,
},
}
@staticmethod
def generate_unique_content(store: StoreLocation, brand: str) -> str:
"""生成差异化本地内容(避免复制粘贴惩罚)"""
landmarks = "、".join(store.nearby_landmarks[:2])
services = "、".join(store.services[:3])
return f"""
## {store.city}{store.district}门店介绍
位于{store.address},紧邻{landmarks},
{brand} {store.city}门店提供{services}等专业服务。
由{store.manager_name}团队运营,累计服务客户 {store.review_count * 3} 人次,
Google Maps 评分 {store.avg_rating}/5.0({store.review_count} 条评价)。
### 营业时间
{chr(10).join(f"- {day}: {hours}" for day, hours in store.hours.items())}
### 联系方式
- 电话:{store.phone}
- 地址:{store.address}
""".strip()
@classmethod
def audit_uniqueness(cls, stores: list[StoreLocation]) -> dict:
"""检测多门店页面差异度"""
issues = []
for s in stores:
score = 0
if s.nearby_landmarks:
score += 20
if s.review_count > 20:
score += 20
if len(s.services) >= 3:
score += 20
if s.manager_name:
score += 20
if s.avg_rating > 0:
score += 20
if score < 60:
issues.append(f"⚠️ {s.city}{s.district}店 差异化不足(得分 {score}/100)")
return {
"总门店数": len(stores),
"高质量门店页": sum(1 for s in stores if s.review_count > 20 and s.nearby_landmarks),
"需改进": issues,
}
# 演示
brand = "快修星"
stores = [
StoreLocation(
"SH001", "上海", "浦东新区",
"张杨路1600号", "021-88888001",
{"周一至周五": "09:00-20:00", "周末": "10:00-18:00"},
["手机维修", "电脑维修", "上门服务"],
"李明", 245, 4.7,
["正大广场", "陆家嘴地铁站"], 31.2304, 121.5434,
),
StoreLocation(
"BJ001", "北京", "朝阳区",
"三里屯太古里南区", "010-66666001",
{"每日": "10:00-21:00"},
["手机维修", "配件零售", "数据恢复"],
"张华", 312, 4.8,
["三里屯酒吧街", "工体"], 39.9277, 116.4563,
),
]
gen = LocalPageGenerator()
print("=== 多门店 SEO 落地页生成 ===\n")
for store in stores:
print(f"--- {store.city}{store.district}门店 ---")
print(f"H1: {gen.generate_title(store, brand, '手机维修')}")
print(f"Meta: {gen.generate_meta(store, brand, '手机维修')}")
print(f"Schema类型: LocalBusiness + AggregateRating")
print(f"本地内容预览:\n{gen.generate_unique_content(store, brand)[:200]}...\n")
audit = gen.audit_uniqueness(stores)
print(f"=== 门店页质量审计 ===")
print(f"  总门店: {audit['总门店数']}  高质量: {audit['高质量门店页']}")
for issue in audit["需改进"]:
print(f"  {issue}")

多地区 URL 结构策略

结构 示例 优势 劣势
子目录(推荐) /locations/shanghai/ 权重集中,管理方便 需要父域名权威支撑
子域名 shanghai.brand.com 独立运营灵活 权重分散
独立域名 brand-shanghai.com 完全独立 成本高,权重不共享
参数型(不推荐) /store?city=sh 易被合并,不利爬取 Googlebot 可能忽略

行动清单

下一节03-本地Schema与结构化数据 — 结构化数据是赢得本地知识卡片和 Map Pack 的关键。