星火计划2.0介绍
百度星火计划项目,是百度搜索为打造绿色搜索新生态,构筑良好的原创环境,让原创者得到应有回报的产品。在项目初期,我们将优先解决被转载的原创内容利益受损的问题,对被转载的原创进行保护。
目前星火计划2.0采用主动邀请内测制,并逐步放开名额,内测站点需要遵守《百度星火计划原创规范v2.0》,将每日站点产生的原创内容使用链接提交-主动推送方式提交给百度,百度会对原创内容做识别,进行及时保护。
星火计划带来的收益
原创内容排名不会被转载超越,获得应得收益!优质原创内容将获得优先位置展现并标示原创!主动推送内容让更快被百度发现,及时识别保护!
如何加入星火计划
站点需要获得百度站长平台星火计划2.0内测邀请,详情见站内信!站点推送的原创内容需要遵守《百度星火计划原创规范v2.0》
第一时间将站点原创内容使用链接提交-主动推送方式进行提交,详情见百度站长平台帮助文档 《如何使用主动推送功能》
百度星火计划2.0违规处理说明
内测站点请按照《百度星火计划2.0官方文档》和《百度星火计划原创规范v2.0》中的要求,原创内容页面在HEAD中加入META标签,并使用链接提交主动推送功能提交数据。对于违反官方文档和原则规范的内测站点:
以每天为标准,站点推送数据被系统识别为非原创1次或用户有效投诉1次,给予警告
发现违规内容2-5次,视情节取消站点星火计划收益1-3个月
发现违规内容5次以上,永久取消站点星火计划收益
《百度星火计划原创规范v2.0》
百度星火计划所服务的原创内容,需要遵守星火计划原创规范,按照规范要求在原创内容中进行标识,同时使用百度站长平台提供的链接提交-主动推送方式进行提交。
一、原创规范
针对网站产生的原创内容,无论PC站还是移动站,需要站长在页面文本中包含以下内容:发布时间、作者及来源(或出处)。我们不对该内容的摆放位置做严格要求,但建议放置在文章标题下方。同时,需要在页面HTML源代码中使用meta标签来标注。
【星火计划可支持以下类型】
文章:<metaproperty=”og:type” content=”article”/>
新闻:<meta property=”og:type”content=”news”/>
社区,如论坛、跟帖、问题社区:<metaproperty=”og:type” content=”bbs”/>
博客,用户专栏:<meta property=”og:type”content=”blog”/>
文学作品,如小说:<meta property=”og:type”content=”novel”/>
文档,如技术文章、翻译文档:<metaproperty=”og:type” content=”document”/>
同一个站点根据内容不同可以使用多个类型,比如知乎的用户答案页面可以使用content=bbs,用户专栏页面可以使用content=blog
【星火计划中原创规范关注的三点内容】
发布时间:指文章的第一发表时间,即系统将文章发布到全网可见状态的时间,而不是文章更新时间,此时间需要至少精确至分钟级
作者:指文章内容的实际创作者,可以使用真名或笔名,允许作者为多人,需要以空格间隔
来源(或出处):指发布原创内容的站点名称,同时站点名称需要链接到当前原创内容页URL
在HEAD中加入META标签,以文章类型举例,格式如下:
<meta property=”og:type” content=”article” />
<meta property=”article:published_time” content=”YYYY-MM-DDTHH:MM:SS+时区”/>
<meta property=”article:author” content=”作者姓名”/>
<meta property=”article:published_first” content=”原发媒体名称, 原发网页URL” />
以百度站长学院文章《站点切换https不会对流量产生负面影响》为例,站长需要添加的代码如下(每一行下面的斜体
字部分是解释):
<meta property=”og:type” content=”article”/>
-该字段是固定且必选的,表明当前页面类型符合OG协议中的文章作品类型
<meta property=”article:published_time” content=”2015-12-16T17:47:53+08:00″ />
-最早发布时间,该字段必选,可以不在页面中做展示,内容格式要求符合ISO8601规范的UTC格式,标准格式应当是“YYYY-MM-DDTHH:MM:SS+时区”
<meta property=”article:author” content=”百度站长平台” />
-作者署名字段必选,需要在页面做展示
*如果该文章由多个作者共同完成,可再加一行作者署名代码:<meta property=”article:author” content=”百度站长学院”/>
<meta property=”article:published_first” content=”百度站长平台, http://zhanzhang.baidu.com/college/articleinfo?id=744″ />
-原发媒体名称和链接,用于区分原创和转载,该字段为可选。原创时,链接与自身相同;转载时,链接是另外不同的地址
二、原创推送
为保证原创内容能够第一时间被百度发现,网站需要将原创内容页面在发布后第一时间使用百度站长平台提供的链接提交-主动推送方式进行提交。
步骤引导:
1、已在百度站长平台http://zhanzhang.baidu.com 验证站点;
2、进入百度站长平台,登录账号;
3、点击 工具——链接提交——自动提交——主动推送;
4、看到如下的数据格式信息,以及推送方法,如下图:
5、请注意提交地址是:http://data.zz.baidu.com/urls?site=www.xxx.com&token=xxx&type=original,其中site和token参数随站点和账号不同而不同,请关注实际页面内容;同时,如果是原创内容,一定要记得在后面加type字段标示,否则,不用带type参数。
6、在第二部分的推送示例中给出了curl、php、post和ruby的实现方式,也可用其他语言实现。
7、推送的文件内容必须是每行一个url的格式。
8、推送返回码为200,说明文件接收成功,返回的各个字段的说明详见帮助文档,其他错误码为4xx,并且返回具体的错误信息。
【推送示例】
有本地文件urls.txt,内容如下:
www.example.com/1.html
www.example.com/2.html
www.example.com/3.html
www.example.com/4.html
推送方法1:
curl推送示例:
将要提交的链接按照每行一条的格式写入一个文本文件中,命名此文件为urls.txt, 然后进入该文件所在目录,执行如下命令:
curl -H’Content-Type:text/plain’ –data-binary @urls.txt”http://data.zz.baidu.com/urls?site=www.xxx.com&token=xxx&type=original”
使用php、python、java等可以参照这个过程推送结构化数据。
推送方法2:
post推送示例:
POST/urls?site=www.sina.com.cn&token=ozrH9Eg8DmmDDyLd&type=originalHTTP/1.1
User-Agent:curl/7.12.1
Host:data.zz.baidu.com
Content-Type:text/plain
Content-Length: 83
http://www.example.com/1.html
http://www.example.com/2.html
推送方法3:
php推送示例:
$urls = array(
‘http://www.example.com/1.html’,
‘http://www.example.com/2.html’,
);
$api = ‘http://data.zz.baidu.com/urls?site=www.xxx.com&token=xxx&type=original’;
$ch = curl_init();
$options = array(
CURLOPT_URL => $api,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POSTFIELDS =>implode(“n”, $urls),
CURLOPT_HTTPHEADER =>array(‘Content-Type: text/plain’),
);
curl_setopt_array($ch,$options);
$result =curl_exec($ch);
echo $result;
推送方法4:
ruby推送示例:
require ‘net/http’
urls =[‘http://www.example.com/1.html’, ‘http://www.example.com/2.html’]
uri = URI.parse(‘http://data.zz.baidu.com/urls?site=www.xxx.com&token=ozrH9Eg8DmmDDyLd&type=original’)
req =Net::HTTP::Post.new(uri.request_uri)
req.body =urls.join(“n”)
req.content_type =’text/plain’
res =Net::HTTP.start(uri.hostname, uri.port) { |http| http.request(req) }
puts res.body