SEO (Search Engine Optimization)胳搞,即搜索引擎優(yōu)化卸例。簡單來說,SEO就是您可以使用提升網(wǎng)站排名的所有方法的總稱肌毅,SEO用于確保您的網(wǎng)站及其內(nèi)容在搜索引擎結(jié)果頁面(SERP)上的可見性筷转。
驗(yàn)證你的網(wǎng)站(讓你博客被搜索引擎找到)
查看你的博客是否被收入
在谷歌或者百度的搜索鏈接中,使用以下格式可以直接搜索自己的域名悬而, 如果能搜索到就說明已經(jīng)被收錄呜舒,反之則沒有”康欤可以直接搜索自己的域名袭蝗,或者加一些關(guān)鍵詞來更好地判斷,例如:
site: https://jimmyju.github.io/
提交我們的網(wǎng)站
若未被搜索引擎收錄般婆,則需進(jìn)行以下配置呻袭,首先要讓搜索引擎先驗(yàn)證我們對網(wǎng)站的所有權(quán),兩個搜索引擎提交的入口分別為:
Google Search Console
有多種驗(yàn)證方式腺兴,這里推薦 HTML
文件上傳方式左电。下載 HTML
驗(yàn)證文件,拷貝到 Hexo/sources/
文件夾下,為了使 hexo 不處理這兩個驗(yàn)證文件,并且不生成關(guān)于這兩個文件的 sitemap
篓足,我們需要打開驗(yàn)證文件段誊,在最上面添加以下代碼:
layout: false
---
然后執(zhí)行 hexo 部署命令
hexo clean
hexo g
hexo d
最后返回驗(yàn)證頁面,就可以查看驗(yàn)證是否通過了
生成Sitemap
Sitemap即網(wǎng)站地圖栈拖,它的作用在于便于搜索引擎更加智能地抓取網(wǎng)站连舍。最簡單和常見的sitemap形式,是XML文件涩哟,在其中列出網(wǎng)站中的網(wǎng)址以及關(guān)于每個網(wǎng)址的其他元數(shù)據(jù)
安裝sitemap生成插件
npm install hexo-generator-sitemap --save
npm install hexo-generator-baidu-sitemap --save
編輯站點(diǎn)目錄下的_config.yml索赏,添加一下字段
#hexo sitemap
sitemap:
path: sitemap.xml
baidusitemap:
path: baidusitemap.xml
之后在執(zhí)行 hexo g 后, public目錄下發(fā)現(xiàn)生成了 sitemap.xml
和baidusitemap.xml
就表示配置成功了贴彼。
提交sitemap
向谷歌提交
向谷歌提交 sitemap 比較簡單潜腻,登錄 Google Search Console ,選擇已經(jīng)驗(yàn)證過的站點(diǎn)器仗,在抓取
-> 站點(diǎn)地圖
中融涣,右上角可看到 添加 / 測試站點(diǎn)地圖
,添加 sitemap.xml
的鏈接即可精钮,谷歌效率較高威鹿,一般當(dāng)天或者第二天就能搜到微博了。如圖:
向百度提交
與谷歌類似轨香,我們可以直接向百度交 sitemap忽你,登錄 百度站長平臺,點(diǎn)擊 網(wǎng)頁抓取
-> 鏈接提交
臂容,在 自動提交
中選擇 sitemap
檀夹,輸入自己的域名加 baidusitemap.xml 即可,之后可查看 url 提取是否成功策橘。
由于 GitHub 屏蔽了百度的爬蟲,即使提交成功娜亿,百度知道這里有可供抓取的鏈接丽已,也不一定能抓取成功。 首先我們先檢測一下百度爬蟲是否可以抓取網(wǎng)頁买决。在百度站長平臺網(wǎng)頁抓取
->抓取診斷
中沛婴,選擇PC UA
點(diǎn)擊抓取 , 查看抓取狀態(tài), 如果顯示 抓取失敗
督赤, 則需要進(jìn)一步的配置嘁灯。
主動推送和自動推送
百度提供了多種鏈接提交的方式,可以綜合使用躲舌,互為補(bǔ)充丑婿。
如何選擇鏈接提交方式
1、主動推送:最為快速的提交方式,推薦您將站點(diǎn)當(dāng)天新產(chǎn)出鏈接立即通過此方式推送給百度羹奉,以保證新鏈接可以及時被百度收錄秒旋。
2、自動推送:最為便捷的提交方式诀拭,請將自動推送的 JS 代碼部署在站點(diǎn)的每一個頁面源代碼中迁筛,部署代碼的頁面在每次被瀏覽時,鏈接會被自動推送給百度耕挨∠肝裕可以與主動推送配合使用。
3筒占、sitemap:您可以定期將網(wǎng)站鏈接放到 sitemap 中贪庙,然后將 sitemap 提交給百度。百度會周期性的抓取檢查您提交的 sitemap赋铝,對其中的鏈接進(jìn)行處理插勤,但收錄速度慢于主動推送。
4革骨、手動提交:一次性提交鏈接給百度农尖,可以使用此種方式
自動推送
next 主題已經(jīng)部署了自動推送的代碼,我們只需在主題配置文件 中找到 baidu_push
字段 , 設(shè)置其為 true
即可良哲。
主動推送
我這里用的python自動推送腳本(Mac環(huán)境)如下所示:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# @Author: LoveNight
# @Last Modified by: LoveNight
# @Last Modified by: Keith
import os
import sys
import json
from bs4 import BeautifulSoup as BS
import requests
#import msvcrt
"""
hexo 博客專用盛卡,向百度站長平臺提交所有網(wǎng)址
本腳本必須放在hexo博客的根目錄下執(zhí)行!需要已安裝生成百度站點(diǎn)地圖的插件筑凫。
百度站長平臺提交鏈接:http://zhanzhang.baidu.com/linksubmit/index
主動推送:最為快速的提交方式滑沧,推薦您將站點(diǎn)當(dāng)天新產(chǎn)出鏈接立即通過此方式推送給百度,以保證新鏈接可以及時被百度收錄巍实。
從中找到自己的接口調(diào)用地址
python環(huán)境:
pip install beautifulsoup4
pip install requests
xcode-select --install
pip install lxml
"""
# ??? 抄的需要更改這個URLW壹肌!棚潦!???
url = 'http://data.zz.baidu.com/urls?site=jimmyju.github.io&token=6Q3qdoIrzAtnwLWj'
baidu_sitemap = os.path.join(sys.path[0], 'public', 'baidusitemap.xml')
google_sitemap = os.path.join(sys.path[0], 'public', 'sitemap.xml')
sitemap = [baidu_sitemap, google_sitemap]
assert (os.path.exists(baidu_sitemap) or os.path.exists(
google_sitemap)), "沒找到任何網(wǎng)站地圖令漂,請檢查!"
# 從站點(diǎn)地圖中讀取網(wǎng)址列表
def getUrls():
urls = []
for _ in sitemap:
if os.path.exists(_):
with open(_, "r") as f:
xml = f.read()
soup = BS(xml, "xml")
tags = soup.find_all("loc")
urls += [x.string for x in tags]
if _ == baidu_sitemap:
tags = soup.find_all("breadCrumb", url=True)
urls += [x["url"] for x in tags]
return urls
# POST提交網(wǎng)址列表
def postUrls(urls):
urls = set(urls) # 先去重
print("一共提取出 %s 個網(wǎng)址" % len(urls))
print(urls)
data = "\n".join(urls)
return requests.post(url, data=data).text
if __name__ == '__main__':
urls = getUrls()
result = postUrls(urls)
print("提交結(jié)果:")
print(result)
# msvcrt.getch()
添加robots.txt
robots.txt(統(tǒng)一小寫)是一種存放于網(wǎng)站根目錄下的ASCII編碼的文本文件丸边,它的作用是告訴搜索引擎此網(wǎng)站中哪些內(nèi)容是可以被爬取的叠必,哪些是禁止爬取的。
在 source
目錄下增加 rebots.txt
文件妹窖,網(wǎng)站生成后在網(wǎng)站的根目錄(站點(diǎn)目錄/public/
)下纬朝。
(請將域名改為自己的網(wǎng)站)
User-agent: *
Allow: /
Allow: /archives/
Allow: /categories/
Allow: /tags/
Disallow: /vendors/
Disallow: /js/
Disallow: /css/
Disallow: /fonts/
Disallow: /vendors/
Disallow: /fancybox/
Sitemap: https://你的域名/sitemap.xml
Sitemap: https://你的域名/baidusitemap.xml
Allow表示允許被訪問的,Disallow是不允許的意思骄呼。注意后面兩個Sitemap就是網(wǎng)站地圖了共苛。而網(wǎng)站地圖前面說了是給爬蟲用的判没。這里配置在robots中。
Url持久化
我們可以發(fā)現(xiàn)hexo默認(rèn)生成的文章地址路徑是 【網(wǎng)站名稱/年/月/日/文章名稱】俄讹。這種鏈接對搜索爬蟲是很不友好的哆致,第一它的url結(jié)構(gòu)超過了三層,太深了患膛。
下面我推薦一種方式:
安裝 hexo-abbrlink
npm install hexo-abbrlink --save
然后配置_config.yml
# permalink: :title/
permalink: archives/:abbrlink.html
abbrlink:
alg: crc32 # 算法:crc16(default) and crc32
rep: hex # 進(jìn)制:dec(default) and hex
之后部署一下摊阀,就看到你的鏈接變成了這樣:添加 nofollow 標(biāo)簽
給非友情鏈接的出站鏈接添加「nofollow」標(biāo)簽,nofollow 標(biāo)簽是由谷歌領(lǐng)頭創(chuàng)新的一個「反垃圾鏈接」的標(biāo)簽踪蹬,并被百度胞此、yahoo 等各大搜索引擎廣泛支持,引用 nofollow 標(biāo)簽的目的是:用于指示搜索引擎不要追蹤(即抓仍镜贰)網(wǎng)頁上的帶有 nofollow 屬性的任何出站鏈接漱牵,以減少垃圾鏈接的分散網(wǎng)站權(quán)重。
首先修改 footer.swig
(your-hexo-site\themes\next\layout_partials)
{{ __('footer.powered', '<a class="theme-link" ) }}
改成
{{ __('footer.powered', '<a class="theme-link" rel="external nofollow">Hexo</a>') }}
<a class="theme-link" >
改成
<a class="theme-link" rel="external nofollow">
再修改 sidebar.swig
(your-hexo-site\themes\next\layout_macro)
<a href="{{ link }}" target="_blank">{{ name }}</a>
改成
<a href="{{ link }}" target="_blank" rel="external nofollow">{{ name }}</a>
<a href="http://creativecommons.org/licenses/{{ theme.creative_commons }}/4.0" class="cc-opacity" target="_blank">
改成
<a href="http://creativecommons.org/licenses/{{ theme.creative_commons }}/4.0" class="cc-opacity" target="_blank" rel="external nofollow">
優(yōu)化都完成后可通過谷歌搜索文章標(biāo)題疚漆,測試是否被收錄及排名酣胀。
頁面關(guān)鍵字優(yōu)化
title
文件路徑是your-hexo-site\themes\next\layout\index.swig,打開編輯:
{% block title %}{{ config.title }}{% if theme.index_with_subtitle and config.subtitle %} - {{config.subtitle }}
改為:
{% block title %}{{ config.title }}{% if theme.index_with_subtitle and config.subtitle %} - {{config.subtitle }}{% endif %}{{ theme.description }} {% endblock %}
keywords(關(guān)鍵詞、關(guān)鍵字)
keywords在你_config.yml配置文件中就有娶聘。注意的是除了根目錄上的要修改以外還有主題里的闻镶。否則就會出現(xiàn)默認(rèn)的keywords。
description
description就是這個頁面的描述丸升,隨便寫什么铆农。
Next主題自帶SEO優(yōu)化選項(xiàng)
主題配置文件_config.yml
中有個選項(xiàng)是seo,默認(rèn)是false狡耻,改成true 即開啟了seo優(yōu)化墩剖,如改變博文title等,然后相同文件下有個關(guān)鍵字選項(xiàng)keywords填充上夷狰,寫博文時最好每篇博文都加上keywords岭皂。hexo的根目錄配置文件_config.yml中title、subtitle和description也建議填上沼头。
個人博客
參考鏈接
Hexo 博客搜索 SEO 優(yōu)化 -- 谷歌篇
hexo的博客讓百度收錄
hexo博客SEO優(yōu)化
提交 sitemap 及解決百度爬蟲無法抓取 GitHub Pages 鏈接問題