微信搜一搜

内容接入

内容接入是面向有优质内容的小程序提供一种接入微信搜索的能力。小程序可以通过该功能推送优质内容的页面路径、参数和结构化数据等信息,让微信搜索可以更及时地收录到小程序内容,推送的内容将会被用于微信搜索结果展示。

一、功能介绍

当用户搜索到接入的内容后,点击会跳转到开发者的小程序页面。同时开发者可以针对微信内用户的搜索需求做定向优化,从而带来更多流量的增长。

1. 内容接入目前支持的页面类型有:

1)图文页 :适用于所有内容,尤其是文本类内容;

2)问答页 :适用于问答类内容,精准问答内容也是应用该类型,如果排序在首位,会富展现;

3)精选页 :适用于页面有导航的优质内容,该页面如果排序在首位,会富展现。

2. 页面展现形式如下:

页面类型展示.png

3. 开发者接入流程如下:

  • 开发者需在小程序后台开通“内容接入”功能,并且声明类目信息。具体操作可以参见 【二、权限开通流程】;

  • 开发者需按照要求的内容接入方式推送内容到微信搜索,并且定期更新内容。具体操作可以参见 【三、内容接入方式】。

二、权限开通流程

内容接入权限需要使用小程序账号登录微信开放平台申请开通。

具体操作流程如下:

1. 开通内容接入功能

使用小程序账号登录微信开放平台,在左侧导航栏点击“微信搜一搜”,点击“内容接入”,进行“开通”。只有认证的小程序账号能够看到内容接入功能。 wxapages.entry.png

2. 声明内容接入的类目

请开发者谨慎选择,选择和自己内容相符的类目。类目信息一旦提交,不支持修改。支持一个月可以提交一次类目声明。 wxapages.category.png

3. 推送测试数据,用于系统调试和数据格式校验,不在搜索结果中展示

  1. 开发者需要根据内容接入方式(参见【内容接入方式】),推送测试数据,同时在内容接入的后台,点击测试数据的“提交审核”按钮; wxapages.submittest.png
  2. 搜一搜会针对推送的测试数据在7天内完成审核,并且给予反馈;
  3. 测试数据审核通过后,开发者可以往正式环境传数据。

4. 推送正式数据,审核通过可能在线上被搜索到

  1. 开发者需要继续推送正式数据,同时在内容接入的后台,点击正式数据的“提交审核”按钮; wxapages.submit.png
  2. 搜一搜会针对推送的正式数据在7天内完成审核,并且给予反馈;
  3. 数据审核通过后,推送的正式数据可能在线上被搜索到。

注意:

  • 内容上线后,需要保持定期更新,否则更新不及时会出现死链情况,影响前端用户体验。最终会影响开发者内容的排序结果。针对非时新性内容,需要保持至少一周一次的推送频率,需要更新新生产的内容同时需要删除已经不存在的内容; 针对时新性内容,根据需要的更新频率更新。

  • 内容更新后,一般会在隔天被同步进入索引。除去内容因为低质问题被过滤掉,内容在24小时内至少可以通过搜索标题出现。针对时新性内容,需要提前声明,有特殊的时新性队列可以实时建立索引,保证推送的内容可以更快被搜索到。

三、内容接入方式

1. 接口调用请求说明

HTTP请求方式:POST

https://api.weixin.qq.com/wxa/search/wxaapi_submitpages?access_token=TOKEN

2. 请求参数说明

  • 请求参数

    参数 类型 说明
    access_token string 小程序access_token。放在URL里。
    pages PageObject数组 请求提交的小程序页面信息数组,一次可提交多个页面的信息。放在POST body里。
  • PageObject结构说明

    参数 类型 说明
    path string 小程序页面路径
    query string 小程序页面请求参数
    data_list PageData数组 小程序页面的数据,一个页面可以同时提交多个结构化信息,用于不同业务

    注意:path+query标识唯一一个页面,微信侧会使用这个信息构造唯一id。

  • PageData结构说明

    参数 类型 说明
    @type string 数据结构类型,用于标识目标业务系统,必填
    其他 目标业务所需的结构化数据
    • @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_prefix 步骤摘要前缀 string 如果answer_style为3,不填则为默认1、2,如前缀为“步骤”,前端展示为“步骤1、步骤2”
- step_answer 步骤摘要 string数组 如果answer_style为3,则必填
video 视频 Object数组 控制外显的视频信息
- video_title 视频标题 string 如不填,则视为与页面标题一致
- video_length 视频时长 uint32 单位为秒,优先五分钟内短视频
- video_img 视频封面图URL string URL,用于外显,尺寸不低于686px*288px
- video_weapp_url 视频跳转小程序URL string 视频落地的小程序页面
- video_play_url 视频播放URL string 视频播放链接
voice 音频 Object数组 控制外显的音频信息
- voice_url 音频url string 音频播放链接
- voice_desc 音频描述 string 建议8个字以内
anchor 锚点 Object 控制外显的锚点信息
- anchor_text 锚点文案 string 锚点文案
- anchor_url 锚点链接 string 跳转到的锚点位置
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
reproduce_source 转载内容来源 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)相同,微信会做覆盖更新
page_type 页面类型 uint32 固定填4,问答页
page_attribute 页面属性 uint32 固定填1,精准问答
category_id 内容类目 uint32 固定填3,教育类目
sub_category_id 内容子类目 uint32 固定填30001,知识点子类目
title 标题 string 知识点标题,建议长度:20个字符以内
referer HTTP Referer string 如果图片有防盗链逻辑,需要设置referer头,用于图片下载
cover_img 封面图 Object数组 用于展示,最多支持3个
- cover_img_url 封面图URL string URL,用于外显
- cover_img_size 封面图规格 uint32 固定填1,展示小图
answer 答案摘要 Object 外显答案摘要的样式和内容
- answer_style 答案摘要的展示样式 uint32 2-长答案;4-知识点答案;99-非文本问答
- long_answer 长答案摘要 string 如果answer_style为2,则必填
- structure_answer 知识点摘要 Object 如果answer_style为4,则必填;具体字段内容参见下面注意事项
video 视频 Object数组 视频信息
- video_title 视频标题 string 知识点标题,如不填,则视为与页面标题一致
- video_length 视频时长 uint32 单位为秒,优先五分钟内短视频
- video_img 视频封面图URL string URL,用于外显,尺寸不低于686px*288px
- video_weapp_url 视频跳转小程序URL string 视频落地的小程序页面
- video_play_url 视频播放ULR string 视频播放链接
time_publish 发布时间 uint32 unix时间戳,单位秒
time_modify 更新时间 uint32 unix时间戳,单位秒
tag 关键词列表 string数组 文章的keyword,支持多个,样例见附录

注意:

  1. 针对英语语法类或者数学公式类知识点内容,structure_answer字段包含
字段 名称 数据类型 是否必填 字段说明及要求
structure_id 知识点类型 uint32 1-英语语法,2-数学公式
description 知识点描述 string 语法的用法或者公式的定义
list 列表 Object数组 数组类型,用于放置英语例句或者数学公式
- text 文本 string 具体英语例句文本,具体需要加粗字段使用加粗标签;数学公式文本,使用MathML或者LaTex描述
- pic_url 图片链接 string 如果用文本表示不了,可以换用图片形式

d. 问答页(限医疗类目)

字段 名称 数据类型 必填 字段说明及要求
update 更新字段 uint32 1-新增;3-删除;内容更新按照新增处理,如果页面路径(page+query)相同,微信会做覆盖更新
content_id 数据方自定义id string 数据方自定义id
page_type 页面类型 uint32 固定填4,问答页
page_attribute 页面属性 uint32 固定填1,精准问答
category_id 内容类目 uint32 固定填9,医疗类目
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
- author_id 作者id string 医生对应id,每个cp内保证唯一即可
- author_depart 作者科室 string 作者归属的科室,如“五官科-口腔科”,支持多个科室,格式需为“一级科室-二级科室”
- author_homepage 作者主页 string url,作者的个人主页
answer 答案摘要 Object 控制外显答案摘要的样式和内容
- answer_style 答案摘要的展示样式 uint32 0-图文样式;1-短答案;2-长答案;3-步骤答案;默认填0
- short_answer 短答案摘要 string 如果answer_style为1,则必填
- short_answer_type 短答案样式 uint32 如果answer_style为1,填写后会改变短答案颜色,不填默认为0-普通样式。0-普通样式(黑色),1-禁止类(红色)
- long_answer 长答案摘要 string 如果answer_style为2,则必填
- intro_answer 导语摘要 string 如果answer_style为3,填写后会展示
- step_answer_prefix 步骤摘要前缀 string 如果answer_style为3,不填则为默认1、2,如前缀为“步骤”,前端展示为“步骤1、步骤2”
- step_answer 步骤摘要 string数组 如果answer_style为3,则必填
video 视频 Object数组 控制外显的视频信息
- video_title 视频标题 string 如不填,则视为与页面标题一致
- video_length 视频时长 uint32 单位为秒,优先五分钟内短视频
- video_img 视频封面图URL string URL,用于外显,尺寸不低于686px*288px
- video_weapp_url 视频跳转小程序URL string 视频落地的小程序页面
- video_play_url 视频播放URL string 视频播放链接
voice 音频 Object数组 控制外显的音频信息
- voice_url 音频url string 音频播放链接
- voice_desc 音频描述 string 建议8个字以内
anchor 锚点 Object 控制外显的锚点信息
- anchor_text 锚点文案 string 锚点文案
- anchor_url 锚点链接 string 跳转到的锚点位置
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
reproduce_source 转载内容来源 string 注:转载文章必须转载官方文章且需与微信协商后打此标识,此字段填写转载来源,如:“小米”
medical 医疗相关字段 Object 医疗相关字段
- type 数据类型 uint32 标识内容类型:10-医院类;11-医生类;12-药物类;13-疾病类
- hospital_rank 医院等级 string 页面作者所在医院等级,格式需为【X级X等】,如一级甲等
- department 科室 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 通用字段无法满足要求时,需要额外补充的字段,具体字段内容需要与微信协商

e. 精选页(限制开放)

字段 名称 数据类型 是否必填 字段说明及要求
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。 示例如下:

coverimgsize.png

2. tag:页面内容的标签,是用于搜索引擎可以个更好地理解和召回内容。例如:

针对于美食类目,建议可以同时打上菜名、食材、工艺、菜式、调料等标签。比如: 《水煮肉片的做法》建议 tag=[“水煮肉片”,“煮”,“猪肉”,“川菜”,“四川”], 《煎牛排》建议 tag=[“牛排”,“煎”,“西式菜”]。 这样微信不仅会根据标题做语义相关性的召回,还会通过判断标签与用户搜索词相关性做文章的召回。比如用户搜索“川菜”,也会召回《水煮肉片的做法》这篇文章。

3. 通过answer_style控制问答页展示的样式

  • 图文样式,answer_style = 0
  • 短答案样式,answer_style = 1
  • 长答案样式,answer_style = 2
  • 步骤答案样式,answer_style = 3 wxapages.category.png