知道开放平台
知道开放平台
合作细则
1、合作简介:
百度知道开放平台是基于问答需求的数据开放平台:通过与第三方合作网站的问答数据互通,将用户需求推送给合作站点,为合作站点扩展问题来源,提升品牌曝光和影响力;同时通过第三方网站的回答支持,为用户带来及时、准确的问答体验,形成良性的问答互动平台。
2、合作模式:
百度知道通过API接口向您的网站每日推送至少1000条领域问题(推送问题数量和问题分类按双方约定的邮件协议为准),需要您网站的网友或运营编辑人员在您的网站解答问题(注意:不是在百度知道平台上回答问题),再通过API接口同步返回答案数据到百度知道,提升您的网站品牌曝光及影响力。
3、合作目标:
@网站或论坛:扩展问题来源,提升品牌曝光及影响力;
@百度知道:引入网站或论坛提供的优质答案,提升垂直领域内的解答力;
4、合作指标:
您的网站需要保证在上线后的1个月内,设法使得这批问题24h内的解答率达到80%以上(解答率指“有靠谱回答的问题数/推送问题总数”)随着百度知道规模增长,允许知道同步更多问题给您的网站进行解答,具体数值届时通过邮件约定。
5、合作案例:
论坛模式合作案例:https://zhidao.baidu.com/question/1732517743676920547.html
问答网站合作案例:https://zhidao.baidu.com/question/135158109278808325.html
6、合作流程:
1)申请合作:申请接入百度知道开放平台,点击申请接入
2)协议确认:知道员工会与申请合作方联系再次确认合作协议细节,
电子合作协议双方确认后—》开通申请权限,由百度知道统一发送纸质协议,进行双方盖章(注意:合同章和骑缝章)
3)审核资料:
考核指标和奖惩措施
一. 开放平台合作原则:
百度知道开放平台通过与第三方合作网站的问答数据互通,将用户需求推送给合作站点,为合作站点扩展问题来源,提升品牌曝光和影响力;同时通过第三方网站的回答支持,为用户带来及时、准确的问答体验,形成良性的问答互动平台。因此,开放平台严格要求合作网站对用户提问的解答质量。
二. 对合作网站的考核指标和相应奖惩办法:
百度知道将监控合作网站的推送问题量、24h回答覆盖率,并不定期对合作网站的回答质量进行抽检,并根据各项指标指导对合作站点的奖惩。如发现考核指标不符合预期,或存在回答中作弊、推广品牌或有其它不符合知道回答规范的行为,将视情节严重程度,予以指导、沟通协调、暂停合作等处理。具体说明如下:
1. 接收问题量
1) 最低接收问题量为1000条/天,达到1000条/天的站点均可享受开放平台V1级合作展示;如因合作站点原因无法达到最低值,将暂停双方合作。
2) 接收问题量达到5000条/天,百度知道将予以合作站点V2级合作展示。
3) 接收问题量达到10000条/天,百度知道将予以合作站点V3级合作展示。
2. 24h回答覆盖率(覆盖率=有回答问题数/推送问题总数)
(注:合作网站若是由编辑或运营解答问题的站点,节假日和周六日可不计入考核期)
1) 按合作网站每日接收问题量,24h回答覆盖率期望达到80%以上,可保持良好合作关系
2) 如连续3天覆盖率低于30%,百度知道将和合作网站沟通协调,建议合作网站改进;如沟通失败或改进无效果,问题推送量将降低50%;如覆盖率仍低于30%,将暂停双方合作。
3. 回答质量
优质回答指可以解决当前提问的回答;
低质回答指回答灌水、答非所问、不解决提问等情况,且不仅限于此;
违规回答指回答内容包含违法、淫秽、诈骗、侵权、广告等内容,且不仅限于此。
1) 优质回答占比80%以上,可保持良好合作关系;且百度知道会和合作网站沟通继续提升接受问题量。
2) 优质回答占比低于30%,百度知道将和合作网站沟通协调,给予指导,希望合作网站在7天内优化改进;如改进无效,将暂停双方合作。
3) 低质回答占比达到10%以上,百度知道将和合作网站沟通协调,给予指导,希望合作网站在7天内优化改进;如改进无效,将暂停双方合作。
4) 如发现合作网站有违规回答,百度知道将予以警告;警告1次,希望合作网站在3天内优化改进;如再犯,给予第2次警告,且问题推送量降低50%;如再犯,将直接取消双方合作。
百度知道开放平台,希望和合作网站携手,共同为广大网民排忧解难,共建中文互联网最大的问答平台,希望合作网站了解以上考核指标和奖惩办法,积极合作,实现共赢。
本条例百度知道有最终解释权。
开发指南
接入流程 本文主要面向百度知道开放平台的开发者,开发者可通过此文学习如何接入百度知道。
接入的具体步骤如下:
1、注册百度账号;如果您已有百度账号,忽略此步骤,否则请点击这里:注册成为百度用户
2、申请接入百度知道开放平台,如果您已申请,忽略此步骤,否则请点击这里:申请接入
3、等待百度知道的审核邮件,如果审核通过,您将会收到一封通过的邮件,否则感谢您的关注
4、熟悉接入百度知道的功能流程,详情见下述说明
5、开发接口与百度知道对接,见API接口
接入功能 要接入百度知道开放平台,您的站点跟百度知道需要至少包含两个核心交互点:
1、订阅提问(百度知道 --> 您的站点)
当一个新问题产生时,百度知道开放平台会判断该问题是否符合您的定制需求,如果符合,百度知道将把这个问题的内容字段打包,用HTTP协议的POST方式发送给您提供的提问接口。当接收到一个新提问时,您可以把这个问题转化成适合您站点性质的方式去展现,以便获取回复。
2、回答提交(您的站点 --> 百度知道)
当您把接收到的问题以某种形式发布在您的站点后,如果一旦有人回复了该问题,需要您将该用户的回复内容,通过HTTP协议发送给我们的回答提交接口。这样,您站点的内容就会作为回答在百度知道的问答页面展现了,同时您的站点也得到了曝光。
所以,要进行基本的对接,需要您完成至少以下两个功能的开发:
1、开发一个能接收提问的http接口;点此查看提问订阅接口
2、当回复产生时,调起百度知道提供的回答提交的http接口;点此查看回答提交接口
完成了以上两步操作,恭喜您,最基本的对接开发已经完成。
这时,您可进入开放平台开发者中心,进行自主测试联调,完成后您将可以接收到百度知道的问题,同时把回答提交给百度知道,让您的站点得到曝光!
【举例说明】
假设您的站点是论坛性质,那可以把一个新问题当做一个新主题发到某个版块中,当这个主题下有人回复后,把该回复当做回答提交给百度知道就可以了;
假设您的站点本身就是问答网站,那就把这个问题加入至您本身的问题列表里,当这个问题下有人回答后,把该回答也同步给百度知道就可以了;
SDK下载 开发SDK
PHP-SDK:点此下载
API接口-提交接口-联调环境
联调环境 联调时,请使用域名前缀:
https://180.149.133.113:8080/具体接口url
所有的提交接口,除了回答提交,其他默认都是没有权限的,如果需要,请向百度知道申请。
线上环境 待联调成功后,百度知道会为您开通正式的线上权限。
届时,提交域名请使用:
https://zhidao.baidu.com/具体接口urlAPI接口-提交接口-必读规范
接入规范 百度知道一旦通过您的应用接入申请,将会以邮件的形式发送给您以下两个参数:
appkey:应用在百度知道的唯一标识;
securitykey:应用提交时计算签名需使用的安全秘钥;
以上秘钥各站点需要严格保护,不允许泄露,一旦泄露将取消接入资格。
该秘钥在联调环境和线上环境同样适用。
安全参数 百度知道提供的所有提交接口,在请求时都必须携带以下两个安全参数:
参数1:appkey(int类型),在接入时由百度知道分配;
参数2:sign(string类型),签名参数,该值生成方式见以下“签名认证安全算法”说明;
特殊说明:
因百度的网络安全设置,请在所有的提交请求中设置header的Expect项为空,否则提交可能会出现超时现象。
举例:(php下curl的设置方式)
curl_setopt($curl, CURLOPT_HTTPHEADER, array('Expect: '));
编码规范 所有接口涉及的字符,均使用UTF8编码。提交方式均采用POST方式。
返回格式 百度知道提供的所有提交接口,返回格式统一为json格式,且内容如下所示:
{
'errno' : 0, //操作是否成功,0成功,非0失败,具体原因见errmsg
'errmsg' : 'xxx', //操作结果文字描述
'data' : {}, //部分接口存在该字段,例如回答成功时返回replyid,具体请查看接口说明
}签名认证安全算法 第1步:从当前您正准备要发给百度知道提交接口的POST数据包里,提取questionid参数,如果该参数不存在,用空字符串替代;
第2步:结合审核通过邮件中发送的appkey和securitykey,将以下3个参数组成字符串,中间用&分割;
securitykey&appkey&questionid
第3步:计算上述字符串的MD5值,即为签名的值,如:
sign=MD5(securitykey&appkey&questionid)
【举例】
假设分配给您的appkey为1000,securitykey为8777F555E8C16715EBA5C85341684C58,
您此刻正要调用百度知道的回答提交接口,且已经准备好要发送的POST数据了,数组里有这么几个字段:
appkey 1000 应用标识id questionid 1238790666 问题标识id content 这是回答内容 回答内容 app_uid 123 回答用户uid 这时,您计算sign的方式应该是这样的:
$sign = MD5(“8777F555E8C16715EBA5C85341684C58&1000&1238790666”)
【示例代码】
/**
* 根据本次请求内容,动态构建sign参数
* $appKey 百度知道为您分配的appkey
* $securityKey 百度知道为您分配的安全秘钥
* $post 本次您将要发送给百度知道的POST数据,数组格式,UTF8编码
*/
function buildSign($appKey, $securityKey, $post) {
$qid = isset($post['questionid']) ? $post['questionid'] : '';
return md5("$securityKey&$appKey&$qid");
}
API接口-提交接口-回答
接口概述 本接口,用来对某个指定的问题进行回答,提交成功后,返回回答ID。
接入URL /openapi/submit/reply
域名前缀请查看联调环境介绍,点此查看
请求方式 仅支持HTTP协议的POST方式,UTF-8编码。
接入参数 在使用本接口时,请务必遵守提交规范,携带安全参数,点此查看
参数名
类型
必需
描述
questionid
string
是
问题标识id,不超过32个字符
content
string
是
回答内容,最大19999个字符(9999个汉字)
app_uid
uint
否
站点用户ID,建议填写
app_uname
string
否
站点用户名,建议填写
app_uavatar
string
否
站点用户头像url
app_uprofile
string
否
站点用户主页链接
app_uinterest
string
否
站点用户擅长领域
app_url
string
否
站点链接
pic_urls
string
否
回答图片url,多个用逗号分隔
说明:如果回答中包含图片,需要保证该图片可被百度抓取;
接口返回 格式:json响应
规则:接口调用成功会返回questionid和replyid,否则有相关errno和errmsg标识错误原因。范例:
{
“errno”:0,
“errmsg”:”sucess”,
“data” : {“questionid”:”125500604044”, “replyid”:”12394838223”}
}如果返回的errno不为0,可以查看错误码含义和常见问题,点此查看
示例代码 <?php
/************************************回答提交demo******************************************/
/**
* 根据本次请求内容,动态构建sign参数
* $appKey 百度知道为您分配的appkey
* $securityKey 百度知道为您分配的安全秘钥
* $post 本次您将要发送给百度知道的POST数据,数组格式,UTF8编码
*/
function buildSign($appKey, $securityKey, $post) {
$qid = isset($post['questionid']) ? $post['questionid'] : '';
$title = isset($post['title']) ? $post['title'] : '';
$content = isset($post['content']) ? $post['content'] : '';
return md5("$securityKey&$appKey&$qid&$title&$content");
}
//百度知道分配的两个key
$appKey = '1000';
$securityKey = '918FD1F01DAE2F0F039B25EE0B64486D';
//组织发送包
$post = array();
$post['questionid'] = '1378130862187018300';
$post['content'] = '这是回答内容';
$post['app_uid'] = '345';
$post['app_uname'] = '小丽';
$post['app_uprofile'] = 'heihei';
//其他参数可按照api文档填充即可
//组织发送包里的2个权限参数
$post['appkey'] = $appKey;
$post['sign'] = buildSign($appKey, $securityKey, $post);
//发起post请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_COOKIESESSION, false);
curl_setopt($ch, CURLOPT_URL, "https://https://220.181.163.143:8080/openapi/submit/reply");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($field));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Expect: '));
//解析结果
$chRes = curl_exec($ch);
//交互失败
if ($chRes === false) {
echo 'send failed, error' . curl_errno($ch);
exit();
}
//解析返回结果
$js = json_decode($chRes, true);
//打印返回的json数据
Header('Content-type:application/json; charset=UTF-8');
var_export($js);
?>API接口-提交接口-追答
接口概述 本接口,用来对某个问题下的指定回答进行追答。
接口URL /openapi/submit/rereply
接口参数 参数名
类型
必需
描述
questionid
string
是
问题标识id
replyid
uint
是
回答标识id
content
string
是
追答内容,最长2000字符或1000汉字。
app_uid
uint
否
站点用户ID
app_uname
string
否
站点用户名
pic_urls
string
否
追答包含的图片url,多个用逗号分隔
返回接口 格式:json响应
规则:接口调用成功时会返回errno为0,否则有相关errno和errmsg标识错误原因。
举例:
{
“errno”:30000,
“errmsg”:”Request params not valid”
}API接口-订阅接口-必读规范
订阅规范 百度知道一旦通过您应用的订阅申请,将会实时地将您订阅的消息推送给您提供的接口。
安全参数 当百度知道向您的接口提交数据时,您可以提供您所需要的安全校验方式,目前支持两种:
方式一:静态安全参数,可以指定必须携带的固定参数,参数可以为多个;
【举例】
假设给您的所有提交都需要携带key和token参数,您可以给我们提供这样的字符串:
key=xxxxx&token=xxxx,这样我们的所有请求都会携带这两个参数了。方式二:动态安全参数,如果您的安全参数不是固定的,那么需要您提供相应的生成函数(使用php语言实现),该函数名固定为buildSecurity,输入固定为本次请求的POST字段列表(数组形式),输出为需要携带的安全参数。
【举例】
某网站需要根据key和qid、title、create_time一起生成一个sign字段,于是他们需要提供这个函数给我们:
function buildSecurity($data) {
$key = ‘xxxxxxxxxxx’;
$qid = isset($data[‘questionid’]) ? $data[‘questionid’] : ‘’;
$title = isset($data[‘title’]) ? $data[‘title’] : ‘’;
$ctime = isset($data[‘create_time’]) ? $data[‘create_time’] : ‘’;
$sign = md5(“$qid$title$ctime$key”);
return “sign=$sign”;
}
我们在请求时,会获取这个函数的返回并携带到提交请求里。编码规范 所有接口涉及的字符,均使用UTF8编码。提交均采用POST方式。
接口返回 百度知道回调的所有接口,不论成功与否,请务必返回json格式,且包含的字段必须如下所示:
{
“errno”:0, //操作是否成功,0成功,非0不成功
“errmsg”:”success”, //操作结果描述,如果中文,请使用utf8编码
}如果回调返回的http code为200,且errno字段存在(不论是否为0),则认为本次交互已经成功,操作结束。
否则认为回调失败,会一直重试直至成功。
API接口-订阅接口-提问通知
接口概述 本接口用来做待解决问题的推送,当百度知道产生符合应用规则的问题时,将通知到应用方,应用方接收到该问题后,可以推送到各个回答入口去引导用户回答。
订阅要求 如果您需要订阅该接口,需要您提供以下信息:
订阅信息项
说明
接收通知的url
必填
展现图片的域名
可选,如果您需要展现百度知道的图片,请提供域名
订阅规则
可选
订阅规则 接入的应用可根据自身应用特点定制一些问题特性,只有当问题符合您定制的特性时,该问题才会推送给您的应用。
特性列表
说明
每日问题上限
默认不设上限
每日问题下限
默认不设下限
定制分类
可定制多个分类,一旦问题属于该分类,将优先推送
定制关键词
可定制多个关键词,一旦问题标题匹配该关键词,将优先推送
定制地理标签
可定制多个地理标签,一旦问题匹配该地理标签,将优先推送
屏蔽分类
可屏蔽多个分类,一旦问题属于该分类,将取消推送
屏蔽关键词
可屏蔽多个关键词,一旦问题标题匹配该关键词,将取消推送
屏蔽富文本
可屏蔽多类富媒体,一旦问题包含该富媒体,将取消推送
接口参数 在使用此接口前,请您仔细阅读订阅规范,点此查看
参数名
类型
描述
question_id
string
问题编号,不超过32个字符
title
常见问题 申请加入百度知道开放平台需要什么条件?
1、BBS论坛或网站已有问答类产品
2、有一定的用户基础
3、具有较强的贡献能力
如何加入百度知道开放平台?
注册百度账号;如果您已有百度账号,忽略此步骤,否则请点击这里:注册成为百度用户
申请接入百度知道开放平台,如果您已申请,忽略此步骤,否则请点击这里:申请接入
百度知道开放平台与百度知道企业开放平台的区别?
百度知道开放平台是以API接口的形式提供给站长,需要在您的网站(BBS论坛或问答类网站)进行解答问题后,再调用接口同步给百度知道;
知道企业开放平台是在百度知道平台上解答企业相关问题;
提交申请后,审核期需要多长时间?
我们将在10个工作日内对您提交的申请进行审核,请随时注意查收邮件和保持手机畅通;
审核通过与否通过什么方式通知我?
审核未通过,通知会以邮件的形式发送至您提交申请时填写的电子邮箱中,请注意查收;
审核通过,知道工作人员会以QQ或电话主动与您沟通,确认合作细节,请确保手机畅通和QQ在线;
审核通过后站长需要做什么?
审核通过后,请查收知道开放平台将AppKey以邮件形式发送至您提交申请时填写的电子邮箱,具体操作请按邮件每步操作流程执行,API接口详情文档,请点击这里:API接口
回答质量
优质回答指可以解决当前提问的回答;
低质回答指回答灌水、答非所问、不解决提问等情况,且不仅限于此;
违规回答指回答内容包含违法、淫秽、诈骗、侵权、广告等内容,且不仅限于此。
1) 优质回答占比80%以上,可保持良好合作关系;且百度知道会和合作网站沟通继续提升接受问题量。
2) 优质回答占比低于30%,百度知道将和合作网站沟通协调,给予指导,希望合作网站在7天内优化改进;如改进无效,将暂停双方合作。
3) 低质回答占比达到10%以上,百度知道将和合作网站沟通协调,给予指导,希望合作网站在7天内优化改进;如改进无效,将暂停双方合作。
4) 如发现合作网站有违规回答,百度知道将予以警告;警告1次,希望合作网站在3天内优化改进;如再犯,给予第2次警告,且问题推送量降低50%;如再犯,将直接取消双方合作。
如有疑问请随时反馈“知道开放平台互助QQ群”:52325831
正式上线后,关于24h回答覆盖率和回答质量考核,请点击详情介绍 https://help.baidu.com/question?prod_en=zhidao&class=611&id=1001242
24h回答覆盖率(覆盖率=有回答问题数/推送问题总数)
(注:合作网站若是由编辑或运营解答问题的站点,节假日和周六日可不计入考核期)
1)按合作网站每日接收问题量,24h回答覆盖率期望达到80%以上,可保持良好合作关系
2) 如连续3天覆盖率低于30%,百度知道将和合作网站沟通协调,建议合作网站改进;如沟通失败或改进无效果,问题推送量将降低50%;如覆盖率仍低于30%,将暂停双方合作。
正式上线后,如需增加关键词,请进入“申请信息页”(https://zhidao.baidu.com/opendev/center/apply)
下载官方推荐的关键词表选择适合的关键词提供给百度官方负责人
测试成功后,请点击“申请上线”(https://zhidao.baidu.com/opendev/develop/index?type=10),等待官方审核通过后正式上线
需要站点调用API接口启动开发完成后,
需要进入百度知道开放平台自助联测平台(https://zhidao.baidu.com/opendev/develop/index?type=1)
您可以对您所订阅的百度知道开放平台各个接口进行线下联调测试,祝您一切顺利!
审核通过后,知道开放平台系统会将AppKey以邮件形式发送至您提交申请时填写的电子邮箱中,请注意查收;
审核未通过,同样会收到知道开放平台系统发出的邮件,请按邮件上标明的联系方式与我们联系;
4)正式上线:
最后更新:2016-12-28 13:50:17