一般的大网站会划分产品,运营,销售,营销,研发等部门。其中几乎所有职能部门都会给研发部提需求,排期,上线,改BUG。营销中的SEO往往是被排在优先级靠后的位置,SEO的需求实现很慢,而出了BUG也比较靠后才会修复。为了解决这个问题,我提出一个“SEO PUSH API”的概念。 相信很多公司已经这么做了,比如的友情链接管理(全站每个页面都不同,不是说首页的),TDK的单独定制。我所描述的这个API,无非是将所有SEO需求都综合到一起了,没什么难理解的。

SEO PUSH API

好处有三点:

一,可以任意定制每个页面的SEO元素:

举个例子(临时找的,如果不准确请原谅),先说好几个前提:

  1. 我们先假设例子中的模板是没有问题的,命中了大部分的用户的需求。
  2. 百度指数真实反应了实际用户查询需求。
  3. 假设这个网站上没有更好的页面来匹配“花冠和卡罗拉的区别”。
  4. 更换完title之后,内容仍然是100%符合用户需求的。
url  :  http://price.pcauto.com.cn/pk/sid-487-2734.html
title: 【花冠和卡罗拉哪个好?】发动机、油耗、空间等对比_太平洋汽车网

他的模板是:

【{车型1}和{车型2}哪个好?】发动机、油耗、空间等对比_太平洋汽车网

他想匹配的用户需求是:xx和xx哪个好

但是从百度指数上看“花冠和卡罗拉的区别”指数不错,而“花冠和卡罗拉哪个好”,却没有记录。

“花冠和卡罗拉的区别”的百度指数 “花冠和卡罗拉哪个好”的百度指数

那么这个页面的title应该被定制为:

【花冠和卡罗拉的区别】发动机、油耗、空间等对比_太平洋汽车网

下面说理论。如图所示,当用户访问产品的Web服务器时,看到的页面是经过SEO人员定制的,模板化的页面。比如:

title       = {车型名称}_{车型名称}价格_{车型名称}评估_{车型名称}怎么样
keywords    = {车型名称},油耗,评估,怎么样
description = {车型简介}。市场价:{市场最低价}~{市场最高价},油耗:{油耗},好评度:{好评度}。
h1          = {车新名称}
h2          = ...
介绍部分      = ...
友情链接      = ...
(其他需求暂不赘述)

模板基本可以满足大部分需求,也便于技术实现。但对于有些商品,用户的搜索习惯却和模板不一致。当发现这种需求量大的时候,需要SEO运营人员在后台针对某个URL定制有针对性的SEO元素,还可能需要人工手写差异化的内容,或者由SEO的技术团队从其他的数据源对接。

二,便于SEO需求和产品需求的隔离:

SEO的很多需求是关于内容相关性,而产品的很多需求往往是关于用户体验的。两类需求都由同一个技术团队来实现,必然顾此失彼。在大型网站中,SEO团队是可以专门配置技术人员的。这样就可以将两类需求分割给不同团队来实现,再通过API对接,展示到前端。这样可以使得产品和SEO的需求并行实现,极大提升了生产效率。并行的意思就是,SEO的很多需求完全可以通过后台运营实现,而不需要麻烦web技术团队了。而web技术团队可以集中精力改善用户体验和网站稳定性。

三,SEO的需求可以随时上线,而不必等迭代周期:

友情链接的时效性就不用说了。其他方面的改动,如果运气好的话,第二天就可以看到效果。改动周期越短,越能提高工作效率。

完整的格式定义

总原则:      若任何一个key的value没有内容(null或""),则跳过,不做任何处理,避免生成一个奇怪的html标签。
title:        替换<title>标签内容
keywords:     替换或生成<meta name="keywords">标签中的content属性内容
description:    替换或生成<meta name="description">标签中的content属性内容
canonical:    替换或生成<link rel='canonical' >标签中的href属性内容
location:     替换或生成<meta name="location" >标签中的content属性内容
robots:       替换或生成<meta name="robots">标签中的content属性内容
device:     替换或生成<meta name="applicable-device" >中的content属性内容
cache:      替换或生成<meta http-equiv="cache-control" >中的content属性内容
inlinks:      生成“相关链接”栏目的链接内容,用于网站内部链接
outlinks:       生成“友情链接”栏目的链接内容,用于给其他网站的链接
agent:        生成或替换<meta name="mobile-agent" content="format=html5; url="/> 中的url
introduction:     生成N个栏目,栏目名称根据name字段定义。比如“北京酒店的相关评论”,“西直门附近比较好的快捷酒店”。栏目内容是对应的text字段
require 'json'

SEO = Hash.new

SEO['title']        = '【艺龙旅行网】酒店预订_机票查询_酒店团购_电话4009-333-333'
SEO['keywords']     = '酒店预订,机票查询,酒店团购,艺龙旅行网'
SEO['description']  = '艺龙网-中国领先的在线旅行服务提供商,纳斯达克上市公司.提供全球20万家酒店预订服务:高星酒店返现101元起,经济酒店返现30元,酒店团购1折起!海外酒店全场9折!低价有房保障-无房赔付首晚房费,差额3倍赔付.订酒店,用艺龙!'
SEO['canonical']    = 'http://www.elong.com'
SEO['location']     = 'province=广西;city=百色;coord=106.658,23.0294'
SEO['robots']       = 'all'
SEO['device']       = 'pc,mobile'
SEO['cache']        = 'no-transform'
SEO['inlinks']      = [
                       0 =>  {
                               'text'   => '北京酒店预订',
                               'url'   => 'http://hotel.elong.com/beijing/'
                             },
                       1 =>  {
                               'text'   => '上海酒店预订',
                               'url'   => 'http://hotel.elong.com/shanghai/'
                             }
                     ]

SEO['outlinks']    =[
                     0 =>  {
                             'text'  => '携程旅行网',
                             'url'   => 'http://www.ctrip.com'
                           },
                     1 =>  {
                             'text'  => '同程旅游网',
                             'url'   => 'http://www.ly.com'
                           },
                     2 =>  {
                           'text'  => '途牛旅游网',
                           'url'   => 'http://www.tuniu.com'
                         }
                   ]

SEO['introduction'] = [
                       0 =>  {
                               'name' =>   '艺龙旅行网简介',
                               'text' =>   '酒店预订。艺龙旅行网提供全球50万家酒店的预订服务和酒店团购服务。通过真实的酒店照片、酒店评价,无论您是和家人一起旅游度假还是商务出行,我们都能为您提供称心如意的酒店。
                                           艺龙酒店地标大全。为了方便用户快速定位酒店而存在,我们涵盖了北京、西安、上海、成都、广州、武汉、南京、东莞、长沙、深圳、重庆等城市的常见地标类型。'
                             },
                       1 =>  {
                               'name' =>   '国内酒店预订方法',
                               'text' =>   '国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介国内酒店简介'
                             },
                       2 =>  {
                               'name' =>   '国际酒店预订流程',
                               'text' =>   '国际酒店预订流程国际酒店预订流程国际酒店预订流程国际酒店预订流程国际酒店预订流程国际酒店预订流程国际酒店预订流程国际酒店预订流程'
                             }
                     ]


puts SEO.to_json

技术方面再啰嗦几句 ========== 1. 这个API所推送的内容,在Web端必须有缓存(以URL为key)。如果使用主动缓存(有新内容则及时覆盖旧内容),那么SEO需求的改动可以随时生效。 2. SEO部门只运维离线数据库,单机即可,不保证可用性。生产库必须由Web技术部门运维,必须有负载均衡或其他手段保证可用性。即使离线数据库挂掉1年,也不能影响线上的内容。 3. API其实是由Web部门提供的,采取push的方式(可以用http post),由SEO部门从离线库push到生产库。千万不要从离线库pull数据,毕竟这是单点服务。 4. 请一定做好语法风险控制,即api中的内容不应该包含html语法符号。否则很可能导致页面排版错乱。

【译】APP索引&SEO的下一个战场:苹果搜索 + iOS APP索引

译者定义:1. 应用页面 的原文叫“app screen”,相当于一个网页,比如你在看知乎APP中的一篇帖子,那么这个帖子就是一个“应用页面”。2. TDK的意思是“标题 描述 关键词”============================================...… Continue reading

百度蜘蛛(Baiduspider)的referer

Published on June 23, 2015

如何避免大量URL重复收录

Published on June 09, 2015