关键词与描述
搜索引擎除了主要抓取标题外,页面的关键词和描述也会抓取。
在\scaffolds\post.md中添加如下代码,用于生成的文章中添加关键字和描述。
keywords:
description:
开启压缩文件(不成功,以后填坑)
因为hexo生成的文件是静态html,里面占用了大量的空白符。使用gulp进行压缩接口提高访问速度并且降低内存。
npm install gulp -g
npm install gulp-minify-css gulp-uglify gulp-htmlmin gulp-htmlclean gulp --save
npm install gulp-concat
npm install gulp-imagemin
在hexo blog文件夹下创建gulpfile.js:
var gulp = require('gulp'),
uglify = require('gulp-uglify'),
cssmin = require('gulp-minify-css'),
imagemin = require('gulp-imagemin'),
htmlmin = require('gulp-htmlmin'),
htmlclean = require('gulp-htmlclean');
concat = require('gulp-concat');
//JS压缩
gulp.task('uglify', function() {
return gulp.src(['./public/js/**/.js','!./public/js/**/*min.js'])//只是排除min.js文件还是不严谨,一般不会有问题,根据自己博客的修改我的修改为return gulp.src(['./public/**/*.js','!./public/zuoxi/**/*.js',,'!./public/radio/**/*.js'])
.pipe(uglify())
.pipe(gulp.dest('./public/js'));//对应修改为./public即可
});
//public-fancybox-js压缩
gulp.task('fancybox:js', function() {
return gulp.src('./public/vendors/fancybox/source/jquery.fancybox.js')
.pipe(uglify())
.pipe(gulp.dest('./public/vendors/fancybox/source/'));
});
// 合并 JS
gulp.task('jsall', function () {
return gulp.src('./public/**/*.js')
// 压缩后重命名
.pipe(concat('app.js'))
.pipe(gulp.dest('./public'));
});
//public-fancybox-css压缩
gulp.task('fancybox:css', function() {
return gulp.src('./public/vendors/fancybox/source/jquery.fancybox.css')
.pipe(cssmin())
.pipe(gulp.dest('./public/vendors/fancybox/source/'));
});
//CSS压缩
gulp.task('cssmin', function() {
return gulp.src(['./public/css/main.css','!./public/css/*min.css'])
.pipe(cssmin())
.pipe(gulp.dest('./public/css/'));
});
//图片压缩
gulp.task('images', function() {
gulp.src('./public/uploads/*.*')
.pipe(imagemin({
progressive: false
}))
.pipe(gulp.dest('./public/uploads/'));
});
// 压缩 public 目录 html文件 public/**/*.hmtl 表示public下所有文件夹中html,包括当前目录
gulp.task('minify-html', function() {
return gulp.src('./public/**/*.html')
.pipe(htmlclean())
.pipe(htmlmin({
removeComments: true,
minifyJS: true,
minifyCSS: true,
minifyURLs: true,
}))
.pipe(gulp.dest('./public'))
});
gulp.task('build', ['uglify', 'cssmin', 'fancybox:js', 'fancybox:css', 'jsall','images']);
//, 'minify-html'
在根目录下的package.json文件中生成写入scripts
"scripts": {
"build": "hexo clean && hexo g && gulp build"
}
这样每次输入 npm run build
就会自动清理上次生成的文件,然后生成新的文件,最后压缩文件
开启推送
将网站链接提交到百度,百度搜索引擎提交入口 ,然后验证你的网站,这一点网上有很详细的教程我就不复述了,验证确认你的网站后,继续验证你的网站的robots.txt和sitemap文件是否可用,一般都是可用的。
然后就可以开始推送了,基本上推送有三种方式:主动推送>自动推送>sitemap三种,一般主动提交比手动提交效果好。
自动推送
把下面的代码放到D:\hexo\themes\next\source\js\src目录下,文件名为bai.js
<script>
(function(){
var bp = document.createElement('script');
bp.src = '//push.zhanzhang.baidu.com/push.js';
var s = document.getElementsByTagName("script")[0];
s.parentNode.insertBefore(bp, s);
})();
</script>
然后在D:\hexo\scaffolds目录下的post.md文件(模板文件中加入这么一行)<script type="text/javascript" src="/js/src/bai.js"></script>
这样只要访问你的这个页面,就会自动向百度推送你的这个网页。
手动推送
用Python写了一个自动推送的脚本,首先你要在百度站长平台获取你的网址的token
#coding:utf-8
import requests
import time
from bs4 import BeautifulSoup as bp
print unicode('Langzi.Fun 自动推送开启....','utf-8')
time.sleep(0.5)
site_url = 'http://www.这里改写成你的网站.com/baidusitemap.xml'
try:
print unicode('Langzi.Fun 获取sitemap链接....','utf-8')
data_ = bp(requests.get(site_url).content,'lxml')
except Exception.e:
print e
list_url=[]
def get_(data):
headers={'User-Agent':'curl/7.12.1 ',
'Content-Type':'text/plain '}
try:
r = requests.post(url='http://data.zz.baidu.com/urls?site=www.这里改写成你的网站.com&token=这里改写成你的token',data=data)
print r.status_code
print r.content
except Exception,e:
print e
print '---------------------------------'
for x,y in enumerate(data_.find_all('loc')):
print x,y.string
list_url.append(y.string.replace('http://','http://www.'))
print '---------------------------------'
print unicode('Langzi.Fun 开始推送....','utf-8')
for x in list_url:
print unicode('Langzi.Fun 当前推送条目为:','utf-8') + x
get_(x)
修改完后双击启动一次即可,每次写完文章后,都启动推送一次。已经使用主动推送的站点,依然可以部署自动推送的JS代码,二者一起使用。
获取关键词
现在搜关键词全是广告,其实百度已经提供了一个接口,每次使用过百度搜索的时候下面的下拉条会出现一堆相关的关键词,这下关键词的权重是非常高的,采集这些关键词然后用在自己的文章中效果还可以,但是要记住不能堆砌关键词。
接口:[https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=](https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=)
例如:[https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=](https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=)敲黑板
搜过结果:
window.baidu.sug({q:”langzi”,p:false,s:[“浪子彦”,”朗姿女装”,”朗姿”,”朗姿唯品会”,”浪子彦直播”,”浪子心声”,”浪子”,”浪子回头”,”朗姿股份”,”浪子燕青”]});
一般回显10个关键词
提取代码如下:
#coding:utf-8
import requests
import time
print unicode('Langzi.Fun 关键词采集开启....','utf-8')
#time.sleep(0.5)
key = raw_input(unicode('输入关键词:','utf-8'))
site_url = 'https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=' + (str(key))
r = requests.get(site_url)
print r.content.replace('window.baidu.sug({q:','').replace('});','').replace(',p:false,s:','').replace('"','').replace(str(key),'')
网上也有很多百度下拉框工具,可以去找一下。
title优化
搜索引擎在抓取网页时,最先读取的就是网页标题,所以title是否正确设置极其重要。title一般不超过80个字符,而且词语间要用英文“-”隔开,因为计算机只对英语的敏感性较高,对汉语的敏感性不高。用法:<title>网站标题</title>
注意点:
首页title写法:首页的title写法格式一般是“总标题-特别重要的关键词或者一句话含有特别重要关键词的描述”。注意这里的“-”是英文,要问我为什么呢?这个因为互联网不是我们国内开发的,汉语不是标准,计算机只对英语敏感性较高,而对汉语敏感性不太高。
栏目页title写法:栏目页title的写法有两种,关键词名称命名写法是“栏目名称-总名称”,非关键词命名写法是:“栏目名称 栏目关键词-总名称”。
分类列表页的title写法:用关键词为这个栏目起名,然后按照下列顺序填写便可了“分类列表页名称-栏目名称-总名称”。
注意事项:
每个标题应该是根据当前内容设置的独特不重复的。
字数限制。不能太长,要不然搜索引擎结果列表会显示不全。最好不超过 25 个中文字。最好是在 10~20 之间。
切勿堆砌关键词。这是很多人常犯的错误
关键词最好出现在最前面
标题有吸引力。毕竟有吸引力的标题才能让用户点击
连词符的使用。可以使用 |->
不要使用没有意义的句子
keywords优化
主要作用是告诉搜索引擎,这个网站内容是什么。因为,好多站长在keywords堆砌关键词,所以好多搜索引擎不太重视keywords了。建议大家还是认真填写keywords,有的搜索引擎还是很重视的,由于现在词频和密度对于 SEO 影响不大,所以只要保持你的正文中出现 4~6 次关键词就可以了。千万不能堆砌关键词。
注意点:
首页keywords写法:首页keywords按照选定的栏目名称,在首页的keywords中加入总名称、栏目名称和一两个关键词。
栏目keywords写法:栏目的keywords其栏目下所有分类列表的名称列出,加上栏目关键字,写法是“栏目名称,栏目关键字,栏目分类列表名称”
分类列表页keywords写法:将你这个栏目中的主要关键字写入。
Description优化
功能让搜索引擎是判断整个页面内容的,当中要写入的内容是你页面内容的简介。description一般不超过100个字符。对于个人站点而言,描述标签最好是一句通顺的句子,如果不能的话,则宁可不要。
注意点:
首页description写法:description的写法就是将首页的标题、关键词和一些特殊栏目的内容融合到里面,写成简单的介绍形式,不要只写关键词。
栏目description写法:将栏目的标题、关键字、分类列表名称,尽量的写入description中,仍是尽量写成介绍形式。
分类description写法:是将你这个栏目中的主要关键字写入。
H标签优化
H 标签的重要性可能是仅次与页面标签。H1->H6 的重要性依次降低。
所以建议在页面的 H1 和 H2 标签中混入关键词
图片 ALT 文字优化
插入图片的时候会提示输入文字,这个不能敷衍。图片 ALT 文字出现的关键词对页面相关性也有一定的影响。同样的,也不要在 ALT 上堆砌关键词。
内部链接及锚文字优化
内部链接对于爬行和收录具有很重要的意义。内部链接对页面关键词相关性也有影响,最主要的就是在内部链接中使用锚文字。
锚文字是告诉搜索引擎被链接页面主题内容的最重要依据之一。我们有时候可能无法控制外部链接的锚文字,但是对于站内的内部链接锚文字我们可以控制。不过有几点需要注意:
适当出现匹配关键词的锚文字
锚文字不能集中导航或者页尾,要分散在正文中
不要过度优化锚文字,要不然有可能会被搜索引擎惩罚
搜索引擎食用方法
首先给你的文章生成sitemap文件
- 谷歌
npm install hexo-generator-sitemap —save #sitemap.xml适合提交给谷歌搜素引擎 - 百度
npm install hexo-generator-baidu-sitemap —save #baidusitemap.xml适合提交百度搜索引擎
然后在站点配置文件_config.yml中添加以下代码
自动生成sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml
最后修改站点配置文件_config.yml
# URL
## If your site is put in a subdirectory, set url as 'http://yoursite.com/child' and root as '/child/'
url: http://你的网站
每次hexo g后都会在/public目录下生成sitemap.xml和baidusitemap.xml,这就是你的站点地图。
robots.txt:
robots.txt 是一种存放于网站根目录下的 ASCII 编码的文本文件,它的作用是告诉搜索引擎此网站中哪些内容是可以被爬取的,哪些是禁止爬取的。robots.txt 放在博客目录下的 source 文件夹中,博客生成后在站点目录 /public/ 下。
我的 robots.txt 文件内容如下:
User-agent: *
Allow: /
Allow: /archives/
Allow: /categories/
Allow: /about/
Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
robots.txt 文件更新至网站后可进入 Google Search Console - 抓取 - robots.txt 测试工具进行测试。
其他SEO优化
SEO优化应该说是一个收益延迟的行为,可能你做的优化短期内看不到什么效果,但是一定要坚持,seo优化也是有很深的可以研究的东西,从我们最初的网站设计,和最基础的标签的选择都有很大的关系,网站设计就如我们刚刚说的,要让用户点击三次可以到达网站的任何一个页面,要增加高质量的外链,增加相关推荐(比如说我们经常见到右侧本站的最高阅读的排名列表),然后就是给每一个页面加上keyword和描述
在代码中,我们应该写出能让浏览器识别的语义化HTML,这样有助于爬虫抓取更多的有效信息:爬虫依赖于标签来确定上下文和各个关键字的权重;并且对外链设置nofollow标签,避免spider爬着爬着就爬出去了(减少网站的跳出率),并且我们要尽量在一些比较大的网站增加我们站点的曝光率,因为spider会经常访问大站,比如我们在掘金等技术社区发表文章中带有我们的站点,这样spider是很有可能爬到我们中的站点的,所以说,重要的还是:
网站外链的推广度、数量和质量
网站的内链足够强大
网站的原创质量
网站的年龄时间
网站的更新频率(更新次数越多越好)
网站的服务器
网站的流量:流量越高网站的权重越高
网站的关键词排名:关键词排名越靠前,网站的权重越高
网站的收录数量:网站百度收录数量越多,网站百度权重越高
网站的浏览量及深度:用户体验越好,网站的百度权重越高
每篇文字独立生成文件夹
npm install https://github.com/CodeFalling/hexo-asset-image --save
优化hexo的url
SEO搜索引擎优化认为,网站的最佳结构是用户从首页点击三次就可以到达任何一个页面,但是我们使用hexo编译的站点打开文章的url是:sitename/year/mounth/day/title四层的结构,这样的url结构很不利于seo,爬虫就会经常爬不到我们的文章,于是,我们需要优化一下网站文章url
方案一:
我们可以将url直接改成sitename/title的形式,并且title最好是用英文,在根目录的配置文件下修改permalink如下:
url: https://www.zdyn.cn
root: /
permalink: :title.html
permalink_defaults:
方案二:
使用插件优化url
插件hexo-abbrlink实现了这个功能,它将原来的URL地址重新进行了进制转换和再编码。
安装hexo-abbrlink:
npm install hexo-abbrlink --save
配置博客根目录下的_config.yml文件:
# permalink: :title/
permalink: archives/:abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(default) and crc32
rep: hex # 进制:dec(default) and hex