自己站 SEO 改造复盘:从默认主题到完整元数据
自己站 SEO 改造复盘:从默认主题到完整元数据
自己的 javai.tech 站,最近半年没更新。偶然打开 View Source 一看,差点没晕过去——
og:title 是 “Hexo”,author 是 “John Doe”,连个 description 都没有。
搜索引擎大概也懵了:这是谁的站? 本文复盘整个改造过程。
一、为什么突然想修?
事情是这样的:
最近一直在做 AI 相关项目,朋友圈里也开始有人搜「javai」「Sherwin Wei Java」想找到我。结果我跟朋友开玩笑说「你搜 javai.tech 看看」,他搜了,说:
「搜出来一堆东西,但都是 Hexo 主题相关的内容,不像你的站啊?」
我打开浏览器,登录百度站长、Google Search Console,再 curl https://javai.tech,看返回的 HTML。
然后愣住了。
二、诊断:体检报告
下面这段,是我跑 curl https://javai.tech | grep -E 'og:|description|author' 抓出来的真实数据:
1 | <meta name="keywords" content="Hexo Theme Redefine"> |
看见没?六个 meta,全错。
keywords是主题名字「Hexo Theme Redefine」author是 Hexo 默认占位的 「John Doe」og:title直接就是「Hexo」两个字og:locale是en_US,但内容全是中文canonical还是http://,没用 https
更离谱的是 404 页面。我访问 /xxx(不存在的路径),打开 View Source,作者也是 John Doe。也就是说,搜索引擎每抓到一个不存在的链接,都以为这是某个叫 John Doe 的英文博客。
三、问题清单:哪些是真正的硬伤
我把这些分了三档:
🔴 P0:必须立刻修(不改搜索引擎看不懂你是谁)
| 问题 | 现状 | 修复 |
|---|---|---|
og:title |
“Hexo” | “javai - java与ai” |
og:site_name |
“Hexo” | “javai” |
meta author |
“John Doe” | “Sherwin.Wei” |
meta keywords |
“Hexo Theme Redefine” | 真实关键词 |
meta description |
缺失 | 站点描述 |
og:image |
缺失 | 分享卡片图 |
canonical |
http | https |
<html lang> |
“en” | “zh-CN” |
🟡 P1:能加就加(影响收录和订阅)
- 没有
sitemap.xml,搜索引擎不知道你有多少页面 - 没有
robots.txt,抓取规则没有声明 - 没有 RSS / Atom feed,想订阅的用户没路径
- 没有站内搜索,
Ctrl+K啥也没反应
🟢 P2:长期才能见效
- Google Analytics 没接,访问数据是黑盒
- 百度统计没接,国内访问数据不准确
- 分享到微信/微博没图没描述,传播效果差
四、修复实施
第一刀:Hexo 站点的 _config.yml
这是所有问题的根源。打开一看,全是默认占位:
1 | title: Hexo |
这一段不改,其他都白搭。改成:
1 | title: javai - java与ai |
⚠️ 关键点:
url一定要写对。Hexo 的 canonical、sitemap、feed、og:url 全靠这个字段。一字之差,搜索引擎就不认你。
第二刀:装三个包
默认装的只有 archive、category、tag、index 这几个 generator,没装 sitemap、feed、search。
1 | npm install hexo-generator-sitemap hexo-generator-feed hexo-generator-search --save |
装完在 _config.yml 加:
1 | sitemap: |
第三刀:补 OG 图
og:image 是分享到微信/微博/LinkedIn/Twitter 时的封面图。没有它,分享卡片就是个白板。
我用 Python + Pillow 临时画了一张(1200×600):
1 | from PIL import Image, ImageDraw, ImageFont |
5 分钟搞定。专业设计师看不上,但比自己强太多。
第四刀:head 注入
Redefine 主题用的是 inject.head 机制(不是 source/_data/head.json,那个我没试成功)。在 _config.redefine.yml 加:
1 | inject: |
这个机制的好处是改配置不改主题,主题升级不会被覆盖。
第五刀:robots.txt
放在 source/robots.txt:
1 | User-agent: * |
注意:Sitemap 一定要写完整 URL,不要写相对路径。
第六刀:导航 + 站内搜索
在 _config.redefine.yml 的 navbar 加 search:
1 | navbar: |
五、验收
部署前先本地 hexo clean && hexo generate,看会不会报错。没问题了再 hexo deploy。
部署完等 2-5 分钟,跑几个 curl 验证:
1 | # 检查 meta 修复 |
我自己跑下来,生成 705 个文件、sitemap 包含 473 个 URL,全部 https。
六、经验总结
1. 默认值的陷阱
Hexo 的模板里 title: Hexo、author: John Doe、url: http://example.com,新手很容易被「主题配了就行」骗过去。主题配置 ≠ 站点配置。主题只是换了外观,HTML head 里的 og/author/canonical 这些是 Hexo 自己吐的,看的是站点 _config.yml。
2. 第一时间验证部署后的 HTML
每次部署完,第一件事应该是 curl https://yoursite.com | head -50,而不是打开浏览器看页面。
- 浏览器只能看到视觉效果
- 搜索引擎只看 HTML 源码
- 分享卡片生成器只看 og:image、og:title、og:description
我这次能发现问题,就是 curl 救了我。
3. sitemap 的 url 必须显式声明
hexo-generator-sitemap 默认用 site.url 生成,但如果 site.url 写错了(比如写成 http),整个 sitemap 就是 http 版本。
- Google 会按 http 收录
- HSTS 升级后又会被认为是迁移
- 反复折腾
所以在配置里额外写一遍 sitemap.url 是值得的。
4. 别相信「主题文档」说一切正常
Redefine 主题的文档看着很全,但默认配置下:
- search 是关的
- GA 是关的
- social_links 是关的
- feed 是关的
默认 + 不改 = 啥也没有。这点不如早期的 Next 主题,至少 Next 默认开 search 和 RSS。
5. 中英文站的 lang 配置
<html lang="en"> 看起来「无害」,但百度会直接降低权重。
中文内容必须 lang="zh-CN"。
6. description 千万别空着
搜索引擎在搜索结果里展示的两行摘要,就是 description。没填的话,搜索引擎会从正文里截一段,经常截得莫名其妙(特别是代码块)。
我这次给的 description:
Sherwin.Wei(魏远标)个人技术站,分享 Java/AI 实战、系统设计面试、前后端架构、国学智慧与现代技术融合。13 年经验,曾就职于美的、亿迅、华为。
覆盖了品牌(Sherwin.Wei)+ 关键词(Java、AI、系统设计)+ 差异化(国学)+ 信任锚(13 年经验、大厂)。
7. OG 图是社交传播的入口
我自己测过,分享 javai.tech 之前,微信/微博卡片就一个标题加一行小字。
之后,1200×630 大图、标题、描述、域名全有。
同样的内容,传播效率至少差 3 倍。
七、下一步
SEO 修完了,但站还得「活」起来。我给自己定了三条线:
- 月更 8-10 篇:四个系列轮转(面试题深挖、AI 实战、国学智医五行、案例复盘)
- 第一个月提交百度站长 + Google Search Console:让搜索引擎主动来抓
- 接入 GA + 百度统计:知道流量从哪来、用户看什么
如果一个月后流量没起来,再来写下一篇复盘:《SEO 修完了,为什么流量还是没起色?》
附录:可复制的 SEO 自检清单
部署后跑一遍,5 分钟搞定:
1 | curl -s https://yoursite.com | grep -E 'og:title|og:image|description|author|canonical' | sort -u |
如果第三步还有任何输出,说明还没改干净。
给自己的话:
一个写代码的人,连自己的站都懒得维护好,是说不过去的。
这次改造花了半天,但下次别人搜到我时,第一眼看到的不再是「Hexo 默认主题」,
而是一个有名字、有故事、有内容的站。这就够了。