星期日, 九月 27, 2009 Categorized under 网站分析

谷歌分析实践-谁转载了我的文章?

如何利用谷歌分析追踪外部媒体对本站原创文章的转载?如果您的网站是个人博客,或者技术类门户,定期都会有一些有价值的原创文章,那您应该经常会看到一些线上媒体时常会转载您的文章. 那么问题来了,这些线上媒体转载我的文章为我带来多少有价值的访问?如果外部媒体没有使用谷歌分析或者第三方网站分析软件,标记您的网址。那么您很难确定是哪些媒体转载了您的文章,或者只能得到简单的流量来源推介数据。

谷歌分析文章转载追踪

在谷歌分析报表中,您是否注意到,外部媒体对新闻转载带来的访问数据如下:

  • 来源(Source)=adsem.cn,pcpcp.com,或者xxx.com
  • 媒介(Medium)=referral
  • 广告系列/活动(Campaign)=(not set)

我相信您不会太重视以上的数据,因为它告诉您的数据很少,您不知道具体 是哪个媒介和文章系列带来的更多的访问,也无法对比哪些媒体的转载给您网站带来更多有价值的用户。

下面的示例将可以帮助您更好的分析与评估外部媒体转载对于本站的贡献

  • 来源(Source)=adsem.cn
  • 媒介(Medium)=press_release
  • 广告系列/活动(Campaign)=sem_practice

为了解决来源不明的链接 无法处理标记的问题,提出了以下思路和处理方法。

  1. 在网站所有的文章中,添加链接参数。(示例:http://www.adsem.cn/myfile.html#id=1)
  2. 检查目标文章URL:http:www.adsem.cm/myfile.html的”id”参数值
  3. 如果”id”参数值等于”1″ ,将使用以下UTM参数,替换现有网址参数。(媒体源utm_source, 媒体类型utm_medium and 广告系列/活动utm_campaign) 必须在 pageTracker之前调用.
  4. 如果”id”参数值不等于”1″,将正常调用GA的pageTracker参数.

查看以下完整源代码:

<script type="text/javascript">
var srcPage = getDomain (document.referrer);
var parameter = get_parameter('id');

function get_parameter(name)
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&#]"+name+"=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(window.location.href);
  if( results == null )
    return "";
  else
    return results[1];
}

function getDomain (thestring) {
var urlpattern = new RegExp("(http|ftp|https)://(.*?)/.*$");
var parsedurl = thestring.match(urlpattern);
return parsedurl[2];
}

if (parameter == '1')
{
window.location.hash = "utm_source="+srcPage+"&utm_medium=press_release&utm_campaign=sem_practice";
alert(window.location.href);
alert(window.location.hash);
}
</script>

<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>

<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("UA-XXXXXXX-X");
pageTracker._setAllowAnchor(true);
pageTracker._trackPageview();
} catch(err) {}</script>

让我们来分析部分重要代码作用

var parameter = get_parameter('id');

function get_parameter(name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&#]"+name+"=([^&#]*)";
var regex = new RegExp(regexS);
var results = regex.exec(window.location.href);

if( results == null )
  return "";
else
  return results[1];
}

这部分代码,将从URL参数值返回”id”值。

if (parameter == '1')
{
window.location.hash = "utm_source="+srcPage+"
&utm_medium=press_release&utm_campaign=sem_practice";
}

如果该页面的URL中包含的”id”参数其值为”1″,那么该URL标记将更新并覆盖UTM定义的参数值。

链接网址:http://www.adsem.cn/myfile.html#id=1

UTM参数更新网址: http://www.adsem.cn/myfile.html#utm_source=www.xxx.com&utm_medium=press_release

特别提示:请注意不要使用”window.location.href”函数,因为此功能会载入一个新的URL浏览,这不是我们希望看到的。这会造成一定的统计误差。我们只需要附加网址参数到URL地址,以便于
分析访问来源于访问媒介类型及广告系列.

还有一个重要问题,我们如何获取推介站点(referral site)到utm_source参数?

var srcPage = getDomain (document.referrer);

 function getDomain (thestring)
 {
 var urlpattern = new RegExp("(http|ftp|https)://(.*?)/.*$");
 var parsedurl = thestring.match(urlpattern);
 return parsedurl[2];
 }

这部分代码,负责把推介网站的URL发送到srcPage变量。”getDomain”参数是为了识别与解析来源媒体域名。

该代码的最后一部分,需要适当定制GA的代码,需要使用到”setAllowAnchor”参数,该命令允许”#”来传递参数值。

pageTracker._setAllowAnchor(true);

好吧。现在我们大功告成了! 现在我们可以使用谷歌分析来分析外部线上媒体转载为我们带来的访客,并分析这些访客的行为与价值。我们也可以使用谷歌分析高级群体功能,来为这些线上媒体
带来的用户建立一个独立群体。辅助我们更好的去分析。
外部媒体转载-高级群体分析

如果大家对以上方法有什么疑问或者有更好的建议,请给我留言吧!

相关文章


12条 评论 来自 “谷歌分析实践-谁转载了我的文章?”

  1. Lonmen 说道:

    有点技术门槛的感觉,看着头晕。

  2. scjdmm 说道:

    有两个问题想请教下
    1.我们公司一个电商网站,投放了cps广告联盟的广告,cpc广告也投放了,因为是属于内容广告,链接地址并不是我们网站的原始地址,而是通过联盟推广链接的参数地址。那么我应该如何在统计中查看设置呢。
    2.Google/adwords中投放内容网络联盟广告,统计代码应该如何设置才能统计到来路地址呢。
    非常期待您的解答,谢谢~

  3. david.wu 说道:

    问题1:链接地址应该是通过联盟的统计地址跳转到你们网站的原始地址是吧。 你可以对跳转到的地址使用工具网址构建器来做相关标记。 这样就可以识别到你具体到哪个源获得了转换。 例如完整地址为.http://u2.778669.com//qqcode.php?id=126855&eteref=&etetopu=http://www.xxx.cn/lp.html,前面的“http://u2.778669.com//qqcode.php?id=126855&eteref=&etetopu=”这部分地址为联盟跳转地址,而”http://www.xxx.cn/lp.html”是你投放广告的地址,那么你可以在你投放广告的地址放入GA代码,并使用工具网址构建器建立标记处理,这样你可以可以获得具体是哪个联盟获得了好的转换。例:“http://www.xxx.cn/lp.html?utm_source=Union&utm_medium=cps&utm_campaign=2009yiqifa ”将这个经过标记的地址到联盟投放则可以获取到相应的媒体源转换数据. 如果你想获取更详细的数据,可以让将联盟将站长ID参数传递到GA标记地址,这样你可以获得每个站长ID给你网站带来的转换值。
    问题2:我的论坛中已经有相关的方法,来分析内容联盟广告来路。如果是手动指定的站点,那么GA本身就可以很好的获取的网站源路径,如果您使用的自动匹配网站模式,那么您可以使用以下方法可以获取到网站源路径, http://www.adsem.cn/324

  4. scjdmm 说道:

    非常感谢您的回答!
    但是在问题一中还是有点没明白。我主要是想看到某个站长ID带来的效果及转化数据,那么我该如何设置呢。因为在联盟投放广告,不可能是一个站长。如何能批量统计到所有的站长数据呢。能否查看到站长投放广告的具体地址。该如何设置?
    因为小弟不知道如何将所有站长的ID传递到 GA标记中。
    另外想请问下,就是问题2中因为我原来的统计数据已经有一年的统计历史了,里面有很多有价值的数据,包括转化率,的确也给我做电子商务带来很大的帮助。如果现在我直接在原来的统计中设置的话,覆盖掉原来的数据是不是就意味着我原来的数据清空了,还是在我原来的数据中显示之前没有统计到的更多有价值的数据呢?
    要是全部覆盖掉清空的话我想我还是不能冒这个险,呵呵!
    期待您的回答,再次表示感谢!

  5. david.wu 说道:

    如果你纯是监测联盟广告的话,你可以这样处理。我们以易特广告联盟为例:你可以通过谷歌工具网址构建器构建对一个联盟的监测。 http://www.adsem.cn/?utm_source=ete&utm_medium=union&utm_term={用来传递站长ID)&utm_content=300*250&utm_campaign=20090325
    其中ete是代表易特联盟,union是代表联盟广告。utm_content=200*300 可以用来表示你投放的广告规格。
    “utm_campaign= “这个你可以让联盟帮你把站长ID传递到utm_term=,就可以获取相应的数据。

  6. scjdmm 说道:

    我的目的不仅是想监控到站长的ID,还想监控到站长实际投放的网站地址广告参数等,因为监控联盟的CPC话,站长投放广告的推广链接URL地址点击后是跳转到实际着陆地址上的.所以没办法统计到站长实际投放广告的地址.

  7. david.wu 说道:

    那用GA是无法解决这个问题的。GA只能监测到每个站长ID对应的转换质量。

  8. scjdmm 说道:

    停止Adwords窃取关键词数据的那个方法查看内容广告的来路URL地址这个方法不知道用在这个上面能否查看。
    因为Google内容广告的URL地址也是和联盟推广URL地址一样,带很多参数。不知您的看法如何?
    我得测试下试下,谢谢你!

  9. sidney song 说道:

    非常好的实用文章。GA的高级应用。学习了!

  10. Tenly 说道:

    UTM参数更新网址: http://www.adsem.cn/myfile.html#utm_source=www.xxx.com&utm_medium=press_release
    文章这里后面漏了&utm_campaign=sem_practice。

    我的问题是,为什么一定要加id=1,用复杂地几行代码特意去截取1这个值呢?
    为什么不直接用var srcPage = getDomain (document.referrer);window.location.hash = “utm_source=”+srcPage+”&utm_medium=press_release&utm_campaign=sem_practice”;
    这样不一定可以把来源的domain加进去了?

  11. david.wu 说道:

    Tenly :

    UTM参数更新网址: http://www.adsem.cn/myfile.html#utm_source=www.xxx.com&utm_medium=press_release
    文章这里后面漏了&utm_campaign=sem_practice。

    我的问题是,为什么一定要加id=1,用复杂地几行代码特意去截取1这个值呢?
    为什么不直接用var srcPage = getDomain (document.referrer);window.location.hash = “utm_source=”+srcPage+”&utm_medium=press_release&utm_campaign=sem_practice”;
    这样不一定可以把来源的domain加进去了?

    1、使用#id=1,更多了考虑到了SEO优化,如果其它站点转载文章时是含有”http://www.adsem.cn/myfile.html#utm_source=www.xxx.com&utm_medium=press_release”, 含有GA参数的URL,那么对于URL也有一定负面作用,转载网站也无法为本站带来一定的权重传递。
    2、加入#id=1另外一个作用是,不会干扰搜索引擎对文章收录,搜索引擎会把#认为是锚点而不是实际的URL,只会抓取#前面部分的网址。

  12. Tenly 说道:

    谢谢.我也刚好在http://analytics.blogspot.com/2009/03/control-your-search-result-url.html找到官方对于SEO方面的说明.很有收获.

在此发表评论