搜索全站
Google SEO 12 分钟阅读

本地 SEO 的 NAP 一致性:名称、地址、电话的维护方法

同一个电话写成两种格式,本地排名就上不去。本文讲清 NAP 一致性的原理、引用站点清单、WordPress 语义化写法与全站一致性核查脚本。

U
UFO_PF 2021-05-03 · 阅读 12 分钟
本地 GOOGLE SEO
阅读提示
本文约 4,753 字,预计阅读 12 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:三家平台上三个电话,谷歌不知道该信谁

有家做门窗定制的本地企业,官网写”0755-8888 6666″,点评平台写”+86 755 8888 6666″,社交主页写”88886666″,地址一个写”科技园南路 12 号”、一个写”科技园南路 12 号 A 座”。三套信息长期并存,结果是搜”深圳 门窗定制”时,商家卡片里连地址都不显示,本地包进了前三却几乎没有电话转化。

NAP 是 Name(名称)、Address(地址)、Phone(电话)三个字段的缩写,它是本地 SEO 里最基础也最容易出错的一环。Google 在判断”这两个记录是不是同一个商家”时,靠的就是这三个字段的匹配度。信息不一致会让实体归属信号互相打架,本来积累的知名度被拆成两三份。

原理分析:引用(Citation)与实体消歧

本地搜索里有个概念叫 引用(citation):任何在互联网上出现你商家名称、地址、电话的地方,都是一条引用。它不需要是链接,纯文本也算。

引用类型 例子 权重
一级平台 Google Business Profile、Bing Places、Apple Business Connect 高
行业目录 行业协会、垂直平台 中
通用目录 本地生活平台、社交媒体主页 中
站点自身 官网联系页、页脚、结构化数据 高(作为基准)

Google 拿这些引用做实体消歧:如果 80% 的记录显示电话是 A、20% 显示 B,它会认为 A 更可信,但整体置信度下降;如果所有记录完全一致,实体归属的置信度就高,本地排名与地图展示都会受益。

需要特别注意格式层面的”伪不一致”:电话的区号分隔符、地址的”号 / 号 A 座”、全角半角括号,人类看着一样,机器逐字符比对时完全不同。所以维护 NAP 的核心动作是先在官网定一份标准写法,再在全网复制它。

保姆级实操

步骤 1:定一份标准 NAP,写成唯一数据源。 在 WordPress 的选项表或主题的自定义字段里存一份,全站所有位置都从这里读取,杜绝手工复制。

<?php
// 统一的 NAP 数据源,全站只从这个函数取值
function mmm_nap($key = '') {
    $nap = [
        'name'    => '明达门窗定制',
        'street'  => '科技园南路 12 号 A 座 1 层',
        'city'    => '深圳市',
        'region'  => '广东省',
        'zip'     => '518000',
        'country' => 'CN',
        'phone'   => '+86-755-8888-6666',   // E.164 格式,唯一标准
        'phone_display' => '0755-8888 6666', // 仅用于展示
    ];
    return $key ? ($nap[$key] ?? '') : $nap;
}

步骤 2:联系页用语义化标签输出。 <address> 标签配合 tel: 链接,既利于机器读取也利于移动端一键拨号。

<section class="business-card">
  <h1>明达门窗定制</h1>
  <address>
    科技园南路 12 号 A 座 1 层<br>
    深圳市,广东省 518000<br>
    中国
  </address>
  <p>
    电话:<a href="tel:+8675588886666">0755-8888 6666</a>
    <meta itemprop="telephone" content="+86-755-8888-6666">
  </p>
  <p>营业时间:周一至周六 09:00–18:00</p>
</section>

注意 href="tel:" 里用纯数字与加号,展示文本用易读格式——两者可以不同,但 everywhere 出现的”展示格式”要统一。

步骤 3:页脚与结构化数据复用同一份数据。 页脚是 NAP 出现频次最高的位置,必须从函数取值而不是手打。

<?php
// 页脚输出 NAP,数据源统一
add_action('wp_footer', function () {
    if (!is_front_page() && !is_page('contact')) return;
    $nap = mmm_nap();
    printf(
        '<footer class="nap"><address><strong>%s</strong><br>%s,%s %s</address>' .
        '<a href="tel:%s">%s</a></footer>',
        esc_html($nap['name']),
        esc_html($nap['street']),
        esc_html($nap['city']),
        esc_html($nap['zip']),
        esc_attr(preg_replace('/[^+\d]/', '', $nap['phone'])), // tel: 只保留数字与 +
        esc_html($nap['phone_display'])
    );
});

步骤 4:同步到一级平台。 Google Business Profile、Bing Places for Business、Apple Business Connect 逐个登录,把 NAP 逐个字段复制过去(不要手打)。Bing Places 支持从 GBP 导入,省时且不易出错。

步骤 5:做全网一致性核查。 用脚本比对站点上出现过的所有电话与地址变体,先自查再对外。

# nap_check.py —— 扫描站点,列出电话与地址的所有出现形式
import re, requests
from urllib.parse import urljoin
from xml.etree import ElementTree

BASE = "https://example.com/"
UA = "Mozilla/5.0 (compatible; NAPAudit/1.0)"

def urls():
    xml = requests.get(BASE + "sitemap.xml", headers={"User-Agent": UA}).text
    ns = {"s": "http://www.sitemap.org/schemas/sitemap/0.9"}
    return [loc.text for loc in ElementTree.fromstring(xml).findall(".//s:loc", ns)]

phone_pat = re.compile(r"(?:\+?\d[\d\-()\s]{7,}\d)")
addr_pat  = re.compile(r"[\u4e00-\u9fa5]{2,}(?:省|市|区|路|街|号)[\u4e00-\u9fa5\d\-]*")

phones, addrs = {}, {}
for u in urls()[:200]:
    try:
        html = requests.get(u, headers={"User-Agent": UA}, timeout=10).text
    except requests.RequestException:
        continue
    for p in phone_pat.findall(html):
        phones[p.strip()] = phones.get(p.strip(), 0) + 1
    for a in addr_pat.findall(html):
        addrs[a] = addrs.get(a, 0) + 1

print("电话变体:")
for k in sorted(phones): print("  ", repr(k), phones[k])
print("地址变体:")
for k in sorted(addrs)[:30]: print("  ", repr(k), addrs[k])

输出里如果出现多种写法,就说明站点内部还没统一,先修站点再改外部平台。

步骤 6:定期复查。 每半年跑一次脚本,并在 GBP 变更营业时间或搬迁后立刻同步全部平台。结构化数据层面的同步可配合 Google Business Profile 与站点配合。

常见踩坑

  1. 案例: 某连锁门店搬迁后只在官网改了地址,GBP 与十几个目录平台仍是旧址。三个月内出现大量”导航到错误地点”的差评,本地包排名从第一掉到第五。教训是搬迁属于最高优先级的同步事件。
  2. 用多个电话号码(总机、分机、400)混用,实体归属被打散。GA4 与 GBP 应使用同一个主号,分机可作为附加字段。
  3. 在 GBP 名称里塞城市词和关键词(如”XX 门窗 深圳”),短期有效但违反平台政策,被举报后强制改名且排名波动。
  4. 地址用了虚拟办公室或共享工位注册,Google 一旦识别出非实体经营场所会直接暂停条目。
  5. 站点页脚每年改版一次,每次手打一遍地址,三年后累积出四种写法。必须从统一数据源取值。
  6. 只改了 GBP,忘了 Bing Places 与 Apple Maps,导致 Bing 搜索与苹果地图上的信息长期错误。
  7. 把电话写成图片(防采集),机器完全读不到,NAP 信号归零。

总结

NAP 一致性的判断标准很机械:任意两个平台上,名称、地址、电话的逐字符比对结果应当完全一致。行动清单:先在官网建立唯一数据源并用函数输出;再按 GBP → Bing Places → Apple Business Connect → 行业目录的顺序逐个复制过去;用脚本自查站点内部是否还有变体;每次搬迁、换号、改营业时间后执行全量同步。这项工作枯燥但收益稳定,尤其在竞争不激烈的本地行业里,往往比做外链见效更快。评价相关的合规做法可参考 评论与评分对本地 SEO 的作用。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。