为你的网站添加富媒体搜索结果
今天在给网站配置 Open Graph 的时候,意外发现原来谷歌还有一套自己的富媒体数据申明,那些经常出现在搜索结果里的文章、商家页面、增强视频甚至连品牌信息(搜索列表右侧那个)等等都是用这个方式做到的,之前还以为是谷歌特地为他们去做适配来着。 那么,本文教你如何为你的网站也添加富媒体结构数据,顺便水一篇文章。
准备工具
- https://search.google.com/test/rich-results?hl=zh-cn
- https://developers.google.com/search/docs/appearance?hl=zh-cn
- https://developers.google.com/search/docs/appearance/structured-data/search-gallery?hl=zh-cn
其实看完上面三个地址你就不需要再看下面的了。
那么开始!
首先是结构体的定义,因为需要的太多,所以就不像Open Graph那样是用 meta 来声明的,直接上了一段Json,这里直接给出官方的demo,需要注意的是,这里的demo用的是 Article
对象的声明,我猜大部分读者如果有需要,那么多半是因为博客 :)
如果你需要别的类型的结构体,可以拉到👇下面看官方文档目录。
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Title of a News Article",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"datePublished": "2015-02-05T08:00:00+08:00",
"dateModified": "2015-02-05T09:20:00+08:00",
"author":[
{
"@type": "Person",
"name": "Willow Lane",
"jobTitle": "Journalist",
"url":"https://www.example.com/staff/willow-lane"
},
{
"@type":"Person",
"name": "Echidna Jones",
"jobTitle": "Editor in Chief",
"url":"https://www.example.com/staff/echidna-jones"
}
],
"publisher":
{
"name": "The Daily Bug",
"url": "https://www.example.com"
},
}
如果你的网站是可以手动编辑模版的类型,将结构数据放在<head>
中即可。
<html>
<head>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Title of a News Article",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"datePublished": "2015-02-05T08:00:00+08:00",
"dateModified": "2015-02-05T09:20:00+08:00",
"author": [{
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/profile/janedoe123"
},{
"@type": "Person",
"name": "John Doe",
"url": "https://example.com/profile/johndoe123"
}]
}
</script>
</head>
<body>
</body>
</html>
而对于像 Next.js
这样的现代前端框架而言,请在 Head 组件中添加以下代码,请注意无需使用Next的Script组件,因为这只是单纯的数据,不需要Script组件进行优化,也不会阻塞页面的渲染。(而且你真用了会报错的)。
const structuredData= {
"@context": "https://schema.org",
"@type": "NewsArticle",
"headline": "Title of a News Article",
"image": [
"https://example.com/photos/1x1/photo.jpg",
"https://example.com/photos/4x3/photo.jpg",
"https://example.com/photos/16x9/photo.jpg"
],
"datePublished": "2015-02-05T08:00:00+08:00",
"dateModified": "2015-02-05T09:20:00+08:00",
"author": [{
"@type": "Person",
"name": "Jane Doe",
"url": "https://example.com/profile/janedoe123"
},{
"@type": "Person",
"name": "John Doe",
"url": "https://example.com/profile/johndoe123"
}]
}
return (<Head>
<script
type="application/ld+json"
dangerouslySetInnerHTML={{
__html: JSON.stringify(structuredData),
}}
/>
</Head>)
这样就完成了对页面富媒体搜索结果的配置,还有一点值得注意的是,你可以在单个页面上配置多个结构体申明,有多少个申明就写多少个 <script/>
即可。
我想要别的类型
没问题!谷歌目前一共支持这些类型的结构体:
- Article
- Book
- 面包屑导航
- 轮播界面
- Course
- 新冠肺炎 (COVID-19) 公告
- Dataset
- 知识问答
- Employer Aggregate Rating
- 估算工资
- Event
- 事实核查
- FAQ
- 居家活动
- HowTo
- 图片元数据
- Job Posting
- 学习视频
- 本地商家
- Logo
- 数学求解器
- Movie
- 练习题
- Product
- 问答
- Recipe
- 评价摘要
- 站点链接搜索框
- 软件应用
- Speakable
- 订阅和付费内容
- Video
找到你感兴趣的结构体,复制他们的JSON demo,放到自己网站上根据页面内容改改就行。
验证
使用官方的这一工具 https://search.google.com/test/rich-results?hl=zh-cn 你可以轻松地验证你写的结构体是否有效,尤其是某些类型的结构体中某些字段是必填的。
或者偷懒一点,直接将网站部署上线,再将url喂给 search-console 要求更新收录,等一天去看看 菜单中的-> 增强功能-> 活动 页面怎么说。 比如我在一天后就收到了如下报告:
怎么就一个搜索收录啊
总结
就是这样,快去为你的博客也加上搜索增强声明吧!