内容来源:微信官方文档
内容接入
内容接入是面向有优质内容的小程序提供一种接入微信搜索的能力。小程序可以通过该功能推送优质内容的页面路径、参数和结构化数据等信息,让微信搜索可以更及时地收录到小程序内容,推送的内容将会被用于微信搜索结果展示。
一、功能介绍
当用户搜索到接入的内容后,点击会跳转到开发者的小程序页面。同时开发者可以针对微信内用户的搜索需求做定向优化,从而带来更多流量的增长。
1. 内容接入目前支持的页面类型有:
1)图文页 :适用于所有内容,尤其是文本类内容;
2)问答页 :适用于问答类内容,精准问答内容也是应用该类型,如果排序在首位,会富展现;
3)精选页 :适用于页面有导航的优质内容,该页面如果排序在首位,会富展现。
2. 页面展现形式如下:
3. 开发者接入流程如下:
- 开发者需在小程序后台开通“内容接入”功能,并且声明类目信息。具体操作可以参见 【二、权限开通流程】;
- 开发者需按照要求的内容接入方式推送内容到微信搜索,并且定期更新内容。具体操作可以参见 【三、内容接入方式】。
二、权限开通流程
内容接入权限需要使用小程序账号登录微信开放平台申请开通。
具体操作流程如下:
1. 开通内容接入功能
使用小程序账号登录微信开放平台,在左侧导航栏点击“微信搜一搜”,点击“内容接入”,进行“开通”。只有认证的小程序账号能够看到内容接入功能。
2. 声明内容接入的类目
请开发者谨慎选择,选择和自己内容相符的类目。类目信息一旦提交,不支持修改。支持一个月可以提交一次类目声明。
3. 推送测试数据,用于系统调试和数据格式校验,不在搜索结果中展示
- 开发者需要根据内容接入方式(参见【内容接入方式】),推送测试数据,同时在内容接入的后台,点击测试数据的“提交审核”按钮;
- 搜一搜会针对推送的测试数据在7天内完成审核,并且给予反馈;
- 测试数据审核通过后,开发者可以往正式环境传数据。
4. 推送正式数据,审核通过可能在线上被搜索到
- 开发者需要继续推送正式数据,同时在内容接入的后台,点击正式数据的“提交审核”按钮;
- 搜一搜会针对推送的正式数据在7天内完成审核,并且给予反馈;
- 数据审核通过后,推送的正式数据可能在线上被搜索到。
注意:
- 内容上线后,需要保持定期更新,否则更新不及时会出现死链情况,影响前端用户体验。最终会影响开发者内容的排序结果。针对非时新性内容,需要保持至少一周一次的推送频率,需要更新新生产的内容同时需要删除已经不存在的内容; 针对时新性内容,根据需要的更新频率更新。
- 内容更新后,一般会在隔天被同步进入索引。除去内容因为低质问题被过滤掉,内容在24小时内至少可以通过搜索标题出现。针对时新性内容,需要提前声明,有特殊的时新性队列可以实时建立索引,保证推送的内容可以更快被搜索到。
三、内容接入方式
1. 接口调用请求说明
HTTP请求方式:POST
https://api.weixin.qq.com/wxa/search/wxaapi_submitpages?access_token=TOKEN
2. 请求参数说明
- 请求参数参数类型说明access_tokenstring小程序access_token。放在URL里。pagesPageObject数组请求提交的小程序页面信息数组,一次可提交多个页面的信息。放在POST body里。
- PageObject结构说明参数类型说明pathstring小程序页面路径querystring小程序页面请求参数data_listPageData数组小程序页面的数据,一个页面可以同时提交多个结构化信息,用于不同业务注意:path+query标识唯一一个页面,微信侧会使用这个信息构造唯一id。
- PageData结构说明参数类型说明@typestring数据结构类型,用于标识目标业务系统,必填其他目标业务所需的结构化数据
- @type="wxsearch_cpdata"时,对应的数据将发往搜一搜正式环境,并可能在搜索结果中展示。
- @type="wxsearch_testcpdata"时,对应的数据将发往搜一搜测试环境,用于系统调试和数据格式校验,不在搜索结果中展示。
- 发往搜一搜正式/测试环境的数据,所对应的数据结构,详见【搜一搜结构化数据】。
3. 返回参数说明
参数 | 类型 | 说明 |
---|---|---|
errcode | int32 | 错误码 |
errmsg | string | 错误信息 |
常见错误码:
errcode | errmsg | 说明 |
---|---|---|
40066 | invalid url | 小程序url配置了sitemap disallow |
40211 | invalid scope_data | 数据结构校验失败,附带进一步错误字段,如unexpected instance type: /content_id,表示content_id类型错误。 |
40212 | invalid query | 不合法query |
40219 | pages is empty | pages参数为空 |
45002 | content size out of limit | http请求包过大,建议拆分或使用压缩 |
47001 | data format error | http请求包不是合法Json |
47004 | submit pages count more than each quota | 每次提交的页面数超过1000(备注:每次提交页面数应小于或等于1000) |
47006 | submit pages count reach daily limit, please try tomorrow | 当天提交页面数达到了配额上限,请明天再试 |
85091 | search status was turned off | 小程序的搜索开关被关闭。请访问设置页面打开开关再重试 |
85083 | search status is banned | 小程序的搜索功能被禁用 |
其他错误码可从全局错误码 找到说明。
4. 搜一搜结构化数据
a. 图文页
字段 | 名称 | 数据类型 | 是否必填 | 字段说明及要求 |
---|---|---|---|---|
update | 更新字段 | uint32 | 是 | 1-新增;3-删除;内容更新按照新增处理,如果页面路径(page+query)相同,微信会做覆盖更新 |
content_id | 数据方自定义id | string | 是 | 数据方自定义id |
page_type | 页面类型 | uint32 | 是 | 固定填2 |
category_id | 内容类目 | uint32 | 是 | 详见【四、附录-内容类目定义】 |
h5_url | H5链接 | string | 否 | 如果该页面有对应的H5链接,则填上 |
title | 标题 | string | 是 | 建议长度:20个字符以内 |
subtitle | 副标题 | string数组 | 否 | 支持多个副标题 |
abstract | 摘要 | string数组 | 否 | 添加摘要有利于召回 |
referer | HTTP Referer | string | 否 | 如果图片有防盗链逻辑,需要设置referer头,用于图片下载 |
cover_img | 封面图 | Object数组 | 否 | 用于展示,最多支持3个 |
- cover_img_url | 封面图URL | string | 是 | URL,用于外显 |
- cover_img_size | 封面图规格 | uint32 | 是 | 用于说明图片的规格,支持大图、三图和小图;须严格符合规格要求,详情见【附录】 |
mainbody | 正文 | string | 是 | 正文,不可带有html标签 |
author | 作者 | Object | 否 | 作者信息,权威作者信息跟更有利于内容被召回 |
- author_name | 作者名字 | string | 是 | |
- author_title | 作者职务 | string | 否 | |
- author_portrait | 作者头像URL | string | 否 | 头像尺寸不低于36px*36px |
video | 视频 | Object数组 | 否 | |
- video_title | 视频标题 | string | 否 | 如不填,则视为与页面标题一致 |
- video_length | 视频时长 | uint32 | 是 | 单位为秒,优先五分钟内短视频 |
- video_img | 视频封面图URL | string | 是 | URL,用于外显,尺寸不低于686px*288px |
time_publish | 发布时间 | uint32 | 是 | unix时间戳,单位秒 |
time_modify | 更新时间 | uint32 | 是 | unix时间戳,单位秒 |
tag | 关键词列表 | string数组 | 否 | 文章的keyword,支持多个,样例见附录 |
searchword | 搜索词列表 | string数组 | 否 | 用于绑定微信官方提供的query |
pv | 页面阅读数 | uint32 | 否 | 近3个月的累计值 |
like | 页面点赞数 | uint32 | 否 | 近3个月的累计值 |
extra_info | 补充字段 | Object | 否 | 通用字段无法满足要求时,需要额外补充的字段,具体字段内容需要与微信协商 |
b. 问答页
字段 | 名称 | 数据类型 | 是否必填 | 字段说明及要求 |
---|---|---|---|---|
update | 更新字段 | uint32 | 是 | 1-新增;3-删除;内容更新按照新增处理,如果页面路径(page+query)相同,微信会做覆盖更新 |
content_id | 数据方自定义id | string | 是 | 数据方自定义id |
page_type | 页面类型 | uint32 | 是 | 固定填4 |
page_attribute | 页面属性 | uint32 | 否 | 0-普通问答;1-精准问答;默认填0 |
category_id | 内容类目 | uint32 | 是 | 详见【四、附录-内容类目定义】 |
h5_url | H5链接 | string | 否 | 如果该页面有对应的H5链接,则填上 |
title | 标题 | string | 是 | 建议长度:20个字符以内 |
subtitle | 副标题 | string数组 | 否 | 支持多个副标题,可以用于放置问题描述 |
abstract | 摘要 | string数组 | 否 | 添加摘要有利于召回 |
referer | HTTP Referer | string | 否 | 如果图片有防盗链逻辑,需要设置referer头,用于图片下载 |
cover_img | 封面图 | Object数组 | 否 | 用于展示,最多支持3个 |
- cover_img_url | 封面图URL | string | 是 | URL,用于外显 |
- cover_img_size | 封面图规格 | uint32 | 是 | 用于说明图片的规格,支持大图、三图和小图;须严格符合规格要求,详情见附录 |
mainbody | 正文 | Object数组 | 是 | 问题的答案,支持多个。 |
- answer_content | 答案内容 | string | 是 | 不可带有html标签 |
- answer_timestamp | 回答时间 | uint32 | 否 | unix时间戳 |
- author_name | 作者名字 | string | 否 | |
- author_title | 作者职务 | string | 否 | |
- author_portrait | 作者头像URL | string | 否 | 头像尺寸不低于36px*36px |
answer | 答案摘要 | Object | 否 | 控制外显答案摘要的样式和内容 |
- answer_style | 答案摘要的展示样式 | uint32 | 是 | 0-图文样式;1-短答案;2-长答案;3-步骤答案;默认填0 |
- short_answer | 短答案摘要 | string | 否 | 如果answer_style为1,则必填 |
- long_answer | 长答案摘要 | string | 否 | 如果answer_style为2,则必填 |
- intro_answer | 导语摘要 | string | 否 | 如果answer_style为3,填写后会展示 |
- step_answer | 步骤摘要 | string数组 | 否 | 如果answer_style为3,则必填 |
video | 视频 | Object数组 | 否 | 控制外显的视频信息 |
- video_title | 视频标题 | string | 否 | 如不填,则视为与页面标题一致 |
- video_length | 视频时长 | uint32 | 是 | 单位为秒,优先五分钟内短视频 |
- video_img | 视频封面图URL | string | 是 | URL,用于外显,尺寸不低于686px*288px |
service | 服务 | Object | 否 | 控制外显的服务信息 |
- service_title | 服务标题 | string | 是 | 建议6个字以内,最多不超过8个字 |
- service_weapp_id | 服务跳转小程序appid | string | 否 | 如果填写小程序url,则必填 |
- service_weapp_url | 服务跳转小程序URL | string | 否 | 小程序url或者H5的url必填一个 |
- service_h5_url | 服务跳转H5_URL | string | 否 | |
time_publish | 发布时间 | uint32 | 是 | unix时间戳,单位秒 |
time_modify | 更新时间 | uint32 | 是 | unix时间戳,单位秒 |
tag | 关键词列表 | string数组 | 否 | 文章的keyword,支持多个,样例见附录 |
searchword | 搜索词列表 | string数组 | 否 | 用于绑定微信官方提供的query |
similar_question | 相似问题 | string数组 | 否 | 语义相同,一个问题的不同表述。如,“番茄炒蛋做法”“番茄炒蛋怎么做” |
pv | 页面阅读数 | uint32 | 否 | 近3个月的累计值 |
like | 页面点赞数 | uint32 | 否 | 近3个月的累计值 |
extra_info | 补充字段 | Object | 否 | 通用字段无法满足要求时,需要额外补充的字段,具体字段内容需要与微信协商 |
c. 精选页(限制开放)
字段 | 名称 | 数据类型 | 是否必填 | 字段说明及要求 |
---|---|---|---|---|
update | 更新字段 | uint32 | 是 | 1-新增;3-删除;内容更新按照新增处理,如果页面路径(page+query)相同,微信会做覆盖更新 |
content_id | 数据方自定义id | string | 是 | 数据方自定义id |
page_type | 页面类型 | uint32 | 是 | 固定填1 |
category_id | 内容类目 | uint32 | 是 | 详见【四、附录-内容类目定义】 |
h5_url | H5链接 | string | 否 | 如果该页面有对应的H5链接,则填上 |
title | 标题 | string | 是 | 建议长度:20个字符以内 |
subtitle | 副标题 | string数组 | 否 | 支持多个副标题 |
abstract | 摘要 | string数组 | 否 | 添加摘要有利于召回 |
referer | HTTP Referer | string | 否 | 如果图片有防盗链逻辑,需要设置referer头,用于图片下载 |
cover_img | 封面图 | Object数组 | 否 | 用于展示,最多支持3个 |
- cover_img_url | 封面图URL | string | 是 | URL,用于外显 |
- cover_img_size | 封面图规格 | uint32 | 是 | 用于说明图片的规格,支持大图、三图和小图;须严格符合规格要求,详情见附录 |
section | 栏目 | Object数组 | 是 | 页面的不同栏目,最多支持4个 |
- section_name | 栏目名称 | string | 是 | 4-12个字符,尽量用中文 |
- section_url | 栏目下级URL | string | 是 | 为小程序格式的URL |
mainbody | 正文 | string | 是 | 正文,不可带有html标签 |
time_publish | 发布时间 | uint32 | 是 | unix时间戳,单位秒 |
time_modify | 更新时间 | uint32 | 是 | unix时间戳,单位秒 |
tag | 关键词列表 | string数组 | 否 | 文章的keyword,支持多个,样例见附录 |
searchword | 搜索词列表 | string数组 | 否 | |
pv | 页面阅读数 | uint32 | 否 | 近3个月的累计值 |
like | 页面点赞数 | uint32 | 否 | 近3个月的累计值 |
extra_info | 补充字段 | Object | 否 | 通用字段无法满足要求时,需要额外补充的字段,具体字段内容需要与微信协商 |
数据样例
{
"pages": [
{
"path": "packages/pages/webview/test1",
"query": "articleId=254276079",
"data_list": [
{
"@type": "wxsearch_testcpdata"
"category_id": 7,
"page_type": 2,
"h5_url": "",
"weapp_url": "packages/pages/webview/test1?articleId=254276079",
"others": "其他字段..."
}
]
},
{
"path": "packages/pages/webview/webview",
"query": "articleId=123&videoId=1005",
"data_list": [
{
"@type": "wxsearch_testcpdata"
"category_id": 7,
"page_type": 2,
"h5_url": "",
"weapp_url": "packages/pages/webview/webview?articleId=123&videoId=1005",
"others": "其他字段..."
}
]
}
]
}
四、附录
1. 内容类目定义
类目编号 | 类目定义 |
---|---|
1 | 综合 |
2 | 新闻 |
3 | 教育 |
4 | 娱乐 |
5 | 体育 |
6 | 汽车 |
7 | 旅游 |
8 | IT科技 |
9 | 医疗 |
10 | 财经 |
11 | 时尚 |
12 | 美食 |
13 | 法律 |
14 | 文化 |
15 | 游戏 |
16 | 房产 |
17 | 母婴 |
18 | 商品 |
19 | 生活 |
20 | 政务 |
2. 字段解释
1. cover_img_size规格说明(用于外显展示,需谨慎)
- 正方形小图(不低于125px*125px),即填写cover_img_size = 1;
- 长方形大图(不低于686px*288px),即填写cover_img_size = 2;
- 长方形三图(不低于224px*168px),即填写cover_img_size = 3。 示例如下:

2. tag:页面内容的标签,是用于搜索引擎可以个更好地理解和召回内容。例如:
针对于美食类目,建议可以同时打上菜名、食材、工艺、菜式、调料等标签。比如: 《水煮肉片的做法》建议 tag=[“水煮肉片”,“煮”,“猪肉”,“川菜”,“四川”], 《煎牛排》建议 tag=[“牛排”,“煎”,“西式菜”]。 这样微信不仅会根据标题做语义相关性的召回,还会通过判断标签与用户搜索词相关性做文章的召回。比如用户搜索“川菜”,也会召回《水煮肉片的做法》这篇文章。
3. 通过answer_style控制问答页展示的样式
- 图文样式,answer_style = 0
- 短答案样式,answer_style = 1
- 长答案样式,answer_style = 2
- 步骤答案样式,answer_style = 3