Panduan Hexo SEO
cara melakukan SEO pada sebuah Hexo situs — Node.js static situs generator. Hexo outputs pure HTML so konten adalah dapat di-crawl pada pertama fetch, tetapi sitemaps, robots.txt, deskripsi meta, canonicals, data terstruktur, dan stable permalinks semua bergantung pada plugins dan config.
Bahasa
Hexo adalah sebuah Node.js static situs generator: hexo generate compiles Markdown ke pure static HTML, so Googlebot membaca Anda penuh konten pada pertama fetch dengan Tidak JavaScript rendering queue. itu's crawlability floor — tetapi ini adalah tidak finished SEO. sebagian besar default themes ship Tidak sitemap, Tidak robots.txt, Tidak per-post deskripsi meta, Tidak canonical, dan Tidak data terstruktur; Anda tambahkan itu dengan _config.yml settings, front penting fields, theme edits, dan plugins (hexo-generator-sitemap, hexo-generator-robotstxt, hexo-generator-feed, hexo-abbrlink). big traps adalah sebuah wrong url: di _config.yml, date-based default permalink itu breaks tautan pada rename, dan auto-generated category/tag archives itu buat thin duplicate konten. untuk Baidu-facing situs, static output menghapus sebuah nyata crawling obstacle — though itu's tidak sebuah jaminan dari Baidu pengindeksan atau peringkat.
TL;DR — Hexo membangun Anda blog ke plain HTML files ahead dari time, so Google sees Anda konten moment ini fetches sebuah halaman — Tidak menunggu pada JavaScript. itu’s easy bagian. catch: Hexo tidak tambahkan sebuah sitemap, sebuah
robots.txt, meta deskripsi, atau tag canonical pada -nya own. Anda turn itu pada dengan sebuah sedikit plugins dan config settings.
Apa Hexo adalah
Hexo adalah sebuah free blogging kerangka kerja dibangun pada Node.js. Anda tulis posts di Markdown,
jalankan hexo generate, dan Hexo turns semuanya ke finished HTML files. Anda upload
itu files untuk sebuah host (GitHub halaman, Netlify, Cloudflare halaman, dan so pada). Ketika
Google atau sebuah reader permintaan sebuah halaman, mereka mendapatkan menyelesaikan HTML right away — ada
tidak ada apa pun left untuk browser untuk bangun. Evidence for this claim Hexo generates static site files from source content. Scope: Hexo static generation. Confidence: high · Verified: Hexo documentation
itu’s great untuk SEO: Anda text dan tautan adalah di halaman dari pertama byte, so Google tidak memiliki untuk jalankan apa pun JavaScript untuk temukan Anda konten. Hexo sits di yang sama family sebagai Hugo dan Jekyll — semua dari them pre-bangun semuanya (see Static situs Generators).
Apa Hexo melakukan tidak melakukan untuk Anda
Di sini’s di mana beginners mendapatkan caught: sebuah fresh Hexo situs dengan sebuah default theme adalah missing sebagian besar basic SEO pieces. Anda biasanya memiliki untuk tambahkan:
- sebuah sitemap XML — install
hexo-generator-sitemapplugin. Evidence for this claim The official Hexo sitemap generator creates sitemap.xml output. Scope: hexo-generator-sitemap plugin. Confidence: high · Verified: Hexo sitemap generator - sebuah
robots.txt— installhexo-generator-robotstxt(atau drop sebuah file di Anda sumber folder). - deskripsi meta — tambahkan sebuah
description:untuk setiap post, dan sebagian besar themes perlu sebuah kecil template edit untuk sebenarnya print ini. - tag canonical — theme-dependent; popular Berikutnya theme dapat melakukan ini setelah Anda set hal up.
dua settings itu penting sebagian besar sebelum Anda launch
di Anda _config.yml file:
url:harus menjadi atur ke Anda nyata langsung address denganhttps://(misalnyahttps://yourdomain.com). Mendapatkan ini wrong dan Anda sitemap, canonical, dan feed tautan semua poin untuk wrong place.permalink:controls Anda URL pattern. default puts date di setiap URL. banyak orang prefer sebuah cleaner:title/. Whatever Anda pick, jangan perubahan sebuah post’s URL kemudian tanpa sebuah redirect — ini breaks tautan dan loses sinyal peringkat.
hal sebagian besar orang mendapatkan wrong
“ini static HTML, so SEO adalah automatic.” (terjemahan) “ini adalah static HTML, so SEO adalah automatic.” Tidak. Static HTML berarti Google dapat crawl Anda konten easily — itu’s sebuah head mulai, tidak sebuah finish line. Anda masih perlu sitemap, deskripsi meta, tag canonical, dan baik konten. static bagian hanya berarti Anda tidak akan memiliki JavaScript pengindeksan masalah itu single-halaman apps memiliki.
ingin penuh versi — setiap plugin, Berikutnya theme memperbaiki, category/tag duplicate-konten trap, data terstruktur, dan Baidu targeting? Switch untuk Advanced tab.
TL;DR — Hexo (
hexo generate) emits pure static HTML, so Anda konten adalah di pertama byte dari respons — Tidak Web rendering Service, Tidak Wave 2 delay. itu’s crawlability floor, tidak finished SEO. Default themes ship Tidak sitemap, Tidak robots.txt, Tidak per-post deskripsi meta, Tidak canonical, dan Tidak data terstruktur; Anda tambahkan them melalui_config.yml, front penting, theme template edits, dan plugins (hexo-generator-sitemap,hexo-generator-robotstxt,hexo-generator-feed,hexo-abbrlink,hexo-indexnow). three traps itu sebenarnya bite: sebuah wrongurl:di_config.ymlbreaks canonicals/sitemap/feed; date-based default permalink ties URLs untuk filenames so sebuah rename breaks tautan; dan auto-generated category/tag archives buat thin duplicate konten. untuk Baidu-facing situs static output adalah sebuah nyata advantage.
Hexo’s static output adalah crawling advantage
hexo generate berjalan Anda Markdown dan theme templates melalui sebuah bangun langkah dan menulis
sebuah folder dari finished HTML, CSS, dan assets. SEO-relevant fact adalah ketika HTML
ada: di bangun time, setelah, untuk everyone — tidak per permintaan, dan tidak di browser. Evidence for this claim The Hexo generate command builds static files into the configured public directory. Scope: Hexo generate command. Confidence: high · Verified: Hexo: Commands
Google mendeskripsikan sebuah dua-phase proses untuk JavaScript halaman: Wave 1 fetches mentah HTML dan indeks static konten immediately; Wave 2 adalah sebuah deferred headless-Chromium rendering queue itu dapat take seconds untuk days. Hexo output skips Wave 2 entirely — setiap halaman adalah mentah HTML pada pertama fetch. Google’s own guidance adalah blunt itu ini adalah recommended path: dynamic rendering adalah “a workaround dan tidak a long-term solution… gunakan server-side rendering, static rendering, atau hydration sebagai a solution,” (terjemahan) “sebuah workaround dan tidak sebuah panjang-istilah solusi… gunakan rendering sisi server, static rendering, atau hydration sebagai sebuah solusi,” dan Hexo produces static rendering, satu dari three explicitly recommended approaches.
Dua lebih wins fall out dari ini:
- dapat di-crawl tautan oleh default. Hexo templates emit plain
<a href>anchors di static HTML, so mereka satisfy Google’s requirement itu tautan menjadi nyata, dapat di-crawl URLs — Tidak JavaScript-generated navigation untuk design sekitar. - Cheap untuk crawl. Static files disajikan dari sebuah CDN memiliki effectively zero server-processing cost per permintaan, so Googlebot dapat crawl di -nya diizinkan rate tanpa tripping crawl-rate throttling. sebagai Gary Illyes put ini, “jika Anda adalah membuat expensive database calls, itu going untuk cost itu server a lot” (terjemahan) “jika Anda adalah membuat expensive database panggilan, itu’s going untuk cost server sebuah lot” — Hexo membuat none.
caveat: zero render-blocking untuk crawler adalah tidak yang sama sebagai zero render-blocking untuk pengguna. Theme JS/CSS masih memengaruhi Core Web Vitals (lebih di bawah).
Configure _config.yml pertama — url: adalah big satu
Set ini global keys sebelum Anda pertama deploy:
url: https://yourdomain.com # must match your live domain, with https://
permalink: :title/ # or :year/:month/:day/:title/ (the default)
title: Site Title
description: Global meta description fallback
author: Your Name
language: en
meta_generator: false # removes the <meta name="generator" content="Hexo"> tagurl:adalah single sebagian besar consequential setting. ini adalah situs’s configured base URL, yang themes dan generators dapat gunakan untuk tag canonical, feeds, sitemaps, dan pagination. sebuah wrong nilai dapat propagate ke itu outputs. Evidence for this claim Hexo's url configuration supplies the website URL used by themes and generators. Scope: Exact downstream fields depend on the installed theme and plugins. Confidence: high · Verified: Hexo: Configurationpermalink:— default:year/:month/:day/:title/produces date-based URLs itu look stale di atas time dan tie slug untuk filename. Cleaner options adalah/:title/atau/:category/:title/.meta_generator: falsestrips Hexo’s generator fingerprint dari<head>.- Deploying untuk sebuah subdirectory?
url:alone tidak cukup — setroot:untuk subdirectory path too (e.g.root: /blog/). Hexo’surl_forhelper membangun root-relative tautan, sementarafull_url_forprepends penuhurl:nilai; mendapatkanroot:wrong pada sebuah subdirectory deploy dan tautan internal, feeds, dan sitemap entries end up pointing di domain root alih-alih sebenarnya path. - Config precedence: situs’s
_config.ymlsets baseurl/root/permalinknilai; sebuah theme’s own config (-nya bundled_config.yml, atau sebuah_config.<theme>.ymldi project root) layers pada top untuk display dan template settings, tetapi tidak override situs-tingkat struktur URL — sebuah theme dapat’t perbaiki sebuah wrongurl:. - Testing di safe mode?
hexo server --safe(atauhexo --safe) disables setiap plugin dan script, so output Anda’re viewing adalah missing Anda sitemap, robots.txt, dan apa pun SEO plugin’s tags. jangan gunakan safe-mode preview untuk periksa SEO output — jalankan sebuah wajarhexo generatepertama.
Front penting SEO controls (dan apa missing)
Native Hexo front penting Anda dapat rely pada:
---
title: "Article Title for the <title> tag"
date: 2024-01-15
updated: 2024-06-01
tags: [tag1, tag2]
categories: [Category]
permalink: /custom-url/ # overrides the global pattern for this post
published: true
sitemap: false # exclude this post from sitemap.xml
---Apa adalah tidak di native front penting dan perlu theme mendukung atau sebuah template edit:
description( deskripsi meta) — sebagian besar themes jangan print ini tanpa sebuah patch.keywords(per-post keyword meta) — dan largely pointless anyway; Google memiliki ignored<meta name="keywords">since 2009. Treatkeywordssebagai sebuah organizational aid, tidak sebuah peringkat lever.canonical(override canonical URL) — theme-dependent.
pertahankan updated: field saat ini ketika Anda revise sebuah post — sitemap freshness bergantung
pada ini (berikutnya bagian).
Essential plugins
Sitemap — hexo-generator-sitemap (official):
npm install hexo-generator-sitemap --savesitemap:
path:
- sitemap.xml
tags: true
categories: trueini membaca lastmod dari setiap post’s updated field (falling back untuk date) — yang
penting karena Bing warns itu lastmod “seharusnya reflect itu benar terakhir modification
time dari itu halaman konten, tidak itu sitemap file itself.” (terjemahan) “seharusnya reflect benar terakhir modification
time dari halaman konten, tidak sitemap file itself.” setelah hexo generate, submit
resulting sitemap.xml di Google Search Console dan Bing Webmaster alat. dan
heed Bing’s lainnya warning: “Lakukan tidak submit a static sitemap dan forget it. New halaman
tidak akan mendapatkan picked up” (terjemahan) “melakukan tidak submit sebuah static sitemap dan forget ini. baru halaman
tidak akan mendapatkan picked up” — untuk Hexo itu berarti re-deploying dan re-submitting (atau menggunakan
IndexNow) setelah setiap baru post.
robots.txt — hexo-generator-robotstxt:
npm install hexo-generator-robotstxt --saverobotstxt:
useragent: "*"
allow:
- /
disallow:
- /private/
sitemap: https://yourdomain.com/sitemap.xmlTanpa ini, Hexo produces Tidak robots.txt di semua — Tidak sitemap pointer untuk crawler.
RSS — hexo-generator-feed: relevant untuk aggregators dan Google News eligibility;
John Mueller mencakup sebuah RSS feed pada his own static situs.
IndexNow — hexo-indexnow: Bing recommends pairing sitemaps dengan IndexNow untuk
nyata-time, URL-tingkat submission. Drop generated key file ke source/ so ini
deploys sebagai yourdomain.com/<key>.txt. Note ini adalah untuk Bing, Yandex, dan others —
tidak Google, yang tidak gunakan IndexNow untuk umum halaman.
Permalink stability — abbrlink perbaiki
default permalink memiliki dua SEO masalah: renaming Markdown file perubahan URL
(karena slug muncul dari filename), dan non-Latin judul (Chinese, emoji)
produce garbled URLs. hexo-abbrlink decouples URL dari filename oleh writing sebuah
stable hash back ke front penting:
npm install hexo-abbrlink --savepermalink: posts/:abbrlink/
abbrlink:
alg: crc32 # crc16 or crc32
rep: hex # dec or hexAnda mendapatkan sesuatu like /posts/3a9c2b1d/ itu survives file renames, category
perubahan, dan date edits. underlying aturan stands either cara: setelah sebuah URL adalah
published, jangan perubahan ini tanpa sebuah 301 redirect — sebuah rename tanpa satu destroys
tautan equity dan apa pun accumulated sinyal peringkat.
Dua lebih permalink pitfalls worth knowing sebelum Anda pick sebuah pattern:
- jangan gunakan
:idtoken. Hexo documents post IDs sebagai tidak persistent di seluruh sebuah database cache reset — jika Anda permalink pattern mencakup:id, sebuah cache rebuild dapat silently perubahan setiap post’s URL. Stick untuk:title,:abbrlink, atau lainnya stable token. trailing_indexdantrailing_htmladalah terpisah controls, tidak satu setting. Hexo’spretty_urlsconfig toggles them independently — satu governs apakah sebuah trailingindex.htmladalah stripped dari generated tautan, lainnya apakah sebuah trailing slash adalah ditambahkan. jika ini jangan match bagaimana Anda host sebenarnya resolves URLs (beberapa hosts redirect/postuntuk/post/, others jangan), Anda dapat end up dengan internal tautan, canonicals, dan sitemap entries disagreeing dengan URL server sebenarnya menyajikan.
Berikutnya theme SEO configuration
Berikutnya adalah paling-digunakan Hexo theme, configured di _config.next.yml:
canonical: true # builds canonical from url: + page path
webmaster_tools:
google: VERIFICATION_STRING
bing: VERIFICATION_STRING
baidu: VERIFICATION_STRING
open_graph:
enable: true
twitter_card: summary_large_image** Berikutnya meta-deskripsi kesenjangan:** Berikutnya melakukan tidak secara otomatis inject sebuah per-post
<meta name="description"> dari front penting description:. Anda patch theme’s
head template untuk fall back dari page.description untuk situs deskripsi. ini adalah
single sebagian besar umum Berikutnya SEO miss. (Berikutnya melakukan mendukung canonical: true dan dibangun-di
Open Graph / Twitter Cards, so itu setidaknya berfungsi setelah enabled.)
untuk non-Berikutnya themes, Anda biasanya buat atau edit sebuah head sebagian untuk emit og:title,
og:description, og:image, og:url, dan twitter:card — mendukung varies widely oleh
theme.
Siapa owns setiap tag ketika sebuah theme dan sebuah plugin keduanya emit ini. sebuah theme’s dibangun-di
Open Graph/canonical mendukung dan sebuah semua-di-satu plugin like hexo-seo (yang
generates -nya own breadcrumb, situs web, dan artikel schema) dapat keduanya try untuk tulis
sama tag. Mengubah keduanya pada produces duplicate atau conflicting <meta> tags, canonicals,
atau JSON-LD blocks di yang sama <head>. Pick satu layer sebagai owner untuk setiap tag
category — theme atau plugin, tidak keduanya — dan disable corresponding fitur pada
lainnya sebelum Anda ship.
Category dan tag halaman: duplicate-konten trap
Hexo auto-generates sebuah archive halaman untuk setiap category dan setiap tag, setiap filled dengan post excerpts itu juga muncul pada posts themselves. di scale itu’s hundreds dari thin halaman competing untuk yang sama kueri dan diluting crawl attention. Anda options:
sitemap: falseper archive (impractical di scale).- Theme-tingkat
noindexpada category/tag archive templates. - pertahankan them terindeks hanya jika sebuah category adalah sebuah genuine, curated topic hub dengan nyata nilai.
- Self-referencing canonical pada setiap paginated archive halaman (halaman 2 canonicalizes untuk itself, tidak halaman 1).
Satu caveat pada option 2: panjang-istilah noindex eventually membuat Google berhenti berikut
tautan pada itu halaman, so noindexing tag halaman dapat reduce crawling dari posts itu adalah hanya
ditautkan dari itu tags. pastikan such posts adalah reachable beberapa lainnya cara.
Anda route inventory adalah bigger daripada source/. Category, tag, archive, dan
pagination halaman jangan come dari Markdown files — Hexo’s generator API adalah apa
sebenarnya membuat them, dan themes atau plugins dapat register mereka own generators too.
itu berarti dapat di-crawl URL surface dapat silently expand beyond apa Anda’d expect
dari browsing Anda source/ folder. setelah installing atau updating sebuah theme atau plugin,
jalankan hexo generate dan diff route list di public/ alih-alih assuming Anda
know setiap URL Hexo adalah producing.
data terstruktur / JSON-LD
Hexo injects Tidak data terstruktur oleh default. Either tambahkan sebuah BlogPosting JSON-LD block untuk
Anda theme’s post template (headline, datePublished, dateModified, author,
publisher, url) atau gunakan semua-di-satu plugin like hexo-seo itu generates
breadcrumb, situs web, dan artikel schema untuk Anda.
Core Web Vitals
Static output adalah fast, tetapi themes dapat undo itu. Berikutnya dan banyak themes bundle besar
JS/CSS dan icon-font libraries (Font Awesome adalah sebuah frequent LCP/render-blocking
culprit). Audit dengan Lighthouse, lalu reach untuk hexo-all-minifier (HTML/CSS/JS
compression di bangun time), hexo-lazyload-image, dan defer/async pada ketiga-party
scripts like analytics dan ads.
Targeting Baidu (Chinese-audience situs)
Baidu’s crawler menangani JavaScript poorly, so Hexo’s static HTML menghapus satu obstacle
untuk Baidu penemuan. tambahkan baidu_site_verification di Berikutnya, generate sebuah Baidu-format
sitemap dengan hexo-generator-baidu-sitemap, dan push URLs actively dengan
hexo-submit-urls-to-search-engine. Satu hosting note: GitHub halaman adalah blocked di
mainland China — gunakan Gitee halaman, Cloudflare, atau sebuah Chinese CDN untuk Baidu traffic.
Treat itu sebagai sebuah crawlability advantage, tidak sebuah jaminan. Static HTML tidak oleh itself prove Baidu adalah discovering, pengindeksan, atau peringkat Anda halaman — konfirmasi sebenarnya crawl activity dan pengindeksan status secara langsung di Baidu Ziyuan (Baidu’s webmaster alat) rather daripada assuming static output alone secures visibilitas.
Deploying untuk GitHub halaman — SEO gotchas
- Set
url:untuk Anda langsung address (custom domain denganhttps://) sebelum pertama deploy. - Put sebuah
CNAMEfile disource/untuk custom domains so ini tidak reset pada setiaphexo deploy. - Enforce HTTPS di repo Settings → halaman setelah DNS propagates.
- Prefer sebuah GitHub tindakan workflow di atas
hexo-deployer-gituntuk hindari CNAME-reset issues.
Hexo vs. Hugo vs. Jekyll vs. Astro, untuk SEO
semua four ship pure static HTML, so indexability floor adalah identical — ada Tidak kerangka kerja-tingkat SEO disadvantage di Hexo. differences adalah operational: Hugo (Go) membangun far lebih cepat di besar scale dan memiliki sebuah dibangun-di sitemap; Jekyll adalah GitHub halaman default; Astro ships zero JS oleh default melalui islands. Hexo’s edge adalah sebuah rich npm plugin ecosystem dan sebuah besar Chinese-language community. konten quality, tidak generator, decides rankings — sebagai Mueller mengatakan dari switching generators, “Will your site’s SEO suddenly explode? No. Also No.” (terjemahan) “akan Anda situs’s SEO suddenly explode? Tidak. juga Tidak.”
untuk cluster overview dan lainnya generators, see Static situs Generators; untuk lebih luas rendering picture, see JavaScript SEO.
AI summary
sebuah condensed take pada Advanced versi:
- Hexo adalah sebuah Node.js static situs generator.
hexo generateoutputs pure static HTML, so konten adalah di pertama byte dari respons — Tidak Web rendering Service, Tidak Wave 2 rendering-queue delay. dapat di-crawl<a href>tautan dan cheap-untuk-crawl CDN files come free. - Static HTML adalah crawlability floor, tidak finished SEO. Default themes ship Tidak sitemap, Tidak robots.txt, Tidak per-post deskripsi meta, Tidak canonical, dan Tidak data terstruktur.
- Configure
_config.ymlpertama.url:adalah paling consequential setting — ini feeds canonicals, sitemap, RSS, dan pagination; sebuah wrong nilai breaks semua dari them. Subdirectory deploys juga perluroot:set. Pick sebuah bersihpermalink:(hindari:idtoken — ini tidak persistent di seluruh sebuah cache reset) dan setmeta_generator: false. sebuah theme’s own config dapat’t override situs-tingkaturl/root/permalink, dan sebuah safe-mode preview (--safe) disables setiap plugin dan script, so jangan periksa SEO output di sana. - Plugins melakukan berat lifting:
hexo-generator-sitemap(membacalastmoddariupdatedfield),hexo-generator-robotstxt,hexo-generator-feed,hexo-indexnow(Bing/Yandex, tidak Google),hexo-abbrlinkuntuk stable permalinks. - Berikutnya theme: mendukung canonical + Open Graph, tetapi melakukan tidak auto-print sebuah per-post deskripsi meta — sebuah template patch adalah paling umum perbaiki. jika sebuah theme dan sebuah SEO plugin dapat keduanya emit yang sama tags, enable hanya satu per tag category untuk hindari duplicates.
- Three traps: wrong
url:; date-based default permalink itu breaks tautan pada rename (tidak pernah perubahan sebuah URL tanpa sebuah 301); dan auto-generated category/tag archives itu buat thin duplicate konten (noindex atau canonicalize). itu archive/tag/ pagination routes come dari Hexo’s generator API, tidaksource/files — sebuah theme/plugin perbarui dapat silently expand dapat diindeks URL surface, so diffpublic/setelah perubahan. - Baidu: static output menghapus sebuah nyata obstacle (Baidu’s crawler menangani JS poorly), tetapi ini adalah sebuah crawlability advantage, tidak sebuah jaminan dari pengindeksan atau peringkat — konfirmasi di Baidu Ziyuan. GitHub halaman adalah blocked di China — gunakan Gitee/Cloudflare/sebuah Chinese CDN.
- Vs. Hugo/Jekyll/Astro: sama indexability floor; Hexo’s edge adalah npm plugin ecosystem dan Chinese community. konten quality decides rankings, tidak generator.
Dokumentasi resmi
Utama-sumber documentation — dari Hexo, mesin pencari, dan key plugins.
Hexo
- Hexo documentation — kerangka kerja overview.
- Configuration —
url,permalink,meta_generator, dan rest dari_config.yml. - Permalinks — URL pattern variables dan tradeoffs.
- Front penting — per-post fields Hexo mendukung natively.
- GitHub halaman deployment — official deploy guide.
Plugins
- hexo-generator-sitemap — official sitemap plugin.
- hexo-abbrlink — stable hash-based permalinks.
- Berikutnya theme SEO settings — canonical, webmaster verification, Open Graph.
mesin pencari — rendering, tautan, sitemaps
- JavaScript SEO basics — crawl → render → indeks phases sebuah static bangun lets Anda skip untuk konten.
- Dynamic rendering (deprecated) — Google recommending static rendering alih-alih.
- membuat Anda tautan dapat di-crawl —
<a href>requirement Hexo satisfies oleh default. - SEO Guide untuk Web Developers — judul, deskripsi, canonicals, sitemaps, data terstruktur.
- Bing — Mempertahankan konten Discoverable dengan Sitemaps — XML preference,
lastmodaccuracy, dan IndexNow.
Quotes dari sumber
pada—record statements dari Google, Bing, dan John Mueller itu bear secara langsung pada sebuah Hexo (static) situs.
Google — static rendering adalah recommended path
- “Dynamic rendering adalah a workaround dan tidak a long-term solution untuk problems dengan JavaScript-generated konten di penelusuran engines… Alih-alih, we merekomendasikan itu Anda gunakan server-side rendering, static rendering, atau hydration sebagai a solution.” (terjemahan) “Dynamic rendering adalah sebuah workaround dan tidak sebuah panjang-istilah solusi untuk masalah dengan JavaScript-generated konten di mesin pencari… Alih-alih, kami merekomendasikan itu Anda gunakan rendering sisi server, static rendering, atau hydration sebagai sebuah solusi.” — Hexo produces static rendering. Sumber
- “Server-side atau pre-rendering adalah masih a great idea karena it membuat Anda website lebih cepat untuk users dan crawlers, dan tidak all bots dapat jalankan JavaScript.” (terjemahan) “server-side atau pre-rendering adalah masih sebuah great idea karena ini membuat Anda situs web lebih cepat untuk pengguna dan crawler, dan tidak semua bot dapat jalankan JavaScript.” Sumber
Bing — sitemaps dan freshness
- “XML tetap itu preferred format untuk sitemaps” (terjemahan) “XML tetap preferred format untuk sitemaps” — karena ini mendukung structured metadata like
lastmoduntuk freshness assessment. Sumber - pada
lastmod: ini “should reflect the true last modification time of the page content, not the sitemap file itself.” (terjemahan) “seharusnya reflect benar terakhir modification time dari halaman konten, tidak sitemap file itself.” — Hexo gotcha ituupdatedfield harus menjadi dipertahankan saat ini. Sumber - “Oleh combining sitemaps untuk comprehensive site coverage dengan IndexNow untuk fast, URL-level submission, Anda sediakan itu strongest foundation untuk mempertahankan Anda konten fresh, discoverable, dan visible.” (terjemahan) “oleh combining sitemaps untuk comprehensive situs coverage dengan IndexNow untuk fast, URL-tingkat submission, Anda menyediakan strongest foundation untuk mempertahankan Anda konten fresh, discoverable, dan terlihat.” Sumber
Gary Illyes, Google — static situs adalah cheap untuk crawl
- “If you are making expensive database calls, that’s going to cost the server a lot.” (terjemahan) “jika Anda adalah membuat expensive database panggilan, itu’s going untuk cost server sebuah lot.” — static HTML dari sebuah CDN membuat none. Coverage
John Mueller — switching generators tidak itself sebuah SEO win
- “Will this change how your site appears in all search engines? Will your site’s SEO suddenly explode? No. Also No.” (terjemahan) “akan ini perubahan bagaimana Anda situs muncul di semua mesin pencari? akan Anda situs’s SEO suddenly explode? Tidak. juga Tidak.” — konten quality, tidak generator pilihan, drives rankings. Sumber
Hexo SEO checklist
sebuah lulus untuk konfirmasi sebuah Hexo situs adalah penelusuran-friendly — sebagian besar dari ini adalah off oleh default:
-
url:di_config.ymladalah Anda langsung domain denganhttps://(tidak sebuah placeholder, tidakhttp://). Deploying untuk sebuah subdirectory?root:adalah set too. - sebuah permalink pattern adalah chosen dan tidak akan churn — ideally
:title/atauhexo-abbrlinkuntuk stable hashes.:idtoken adalah tidak digunakan (ini tidak persistent di seluruh sebuah database cache reset). - jika keduanya sebuah theme dan sebuah SEO plugin dapat emit canonical/OG/JSON-LD tags, persis satu dari them adalah enabled untuk setiap tag category — tidak keduanya.
-
meta_generator: falseatur ke drop Hexo fingerprint (opsional tetapi tidy). -
hexo-generator-sitemapinstalled;sitemap.xmlgenerates dan adalah submitted di Google Search Console dan Bing Webmaster alat. -
updated:front penting adalah dipertahankan saat ini so sitemaplastmodadalah accurate. -
hexo-generator-robotstxtinstalled (atau sebuah manualrobots.txtdisource/) dengan sitemap pointer. - setiap post memiliki sebuah
description:, dan theme sebenarnya prints<meta name="description">(patch Berikutnya jika needed). - tag canonical adalah emitted dan resolve untuk langsung HTTPS URLs (Berikutnya:
canonical: true). - Open Graph / Twitter Card tags present (Berikutnya dibangun-di, atau sebuah head-sebagian edit).
-
BlogPostingJSON-LD ditambahkan (template snippet atauhexo-seoplugin). - Category/tag archives handled — noindexed, canonicalized, atau dipertahankan hanya sebagai nyata topic hubs (tidak left sebagai thin duplicates).
- Paginated archive halaman self-canonicalize (halaman 2 → halaman 2, tidak halaman 1).
- Theme JS/CSS audited di Lighthouse; minifier + lazy-muat image plugins considered.
- GitHub halaman:
CNAMEdisource/, HTTPS enforced, deploy melalui tindakan untuk hindari CNAME reset. - Baidu situs: tidak pada GitHub halaman; Baidu verification + Baidu sitemap + URL push configured.
- Tidak URL ever changed tanpa sebuah 301 redirect di place.
Hexo SEO — cheat sheet
pada oleh default vs. Anda harus tambahkan ini
| SEO fitur | Hexo default | cara mendapatkan ini |
|---|---|---|
| Static HTML / dapat di-crawl konten | Ya | hexo generate |
dapat di-crawl <a href> tautan | Ya | theme templates |
| sitemap XML | Tidak | hexo-generator-sitemap |
| robots.txt | Tidak | hexo-generator-robotstxt atau manual file |
| RSS feed | Tidak | hexo-generator-feed |
| Per-post deskripsi meta | Tidak (theme-dependent) | description: + theme patch |
| tag canonical | Tidak (theme-dependent) | Berikutnya canonical: true |
| Open Graph / Twitter Card | Tidak (theme-dependent) | Berikutnya dibangun-di atau head-sebagian edit |
| data terstruktur (JSON-LD) | Tidak | template snippet atau hexo-seo plugin |
| Stable permalinks | Tidak (date/filename based) | hexo-abbrlink |
| IndexNow submission | Tidak | hexo-indexnow (Bing/Yandex, tidak Google) |
Key _config.yml settings
| Setting | mengapa ini penting |
|---|---|
url: | Base untuk canonical, sitemap, RSS, pagination — wrong nilai breaks semua dari them |
root: | Subdirectory path untuk sebuah subdirectory deploy — diperlukan alongside url: atau root-relative tautan break |
permalink: | Default adalah date-based; :title/ adalah cleaner; tidak pernah perubahan setelah penerbitan; hindari non-persistent :id token |
meta_generator: false | menghapus <meta name="generator" content="Hexo"> tag |
Plugin install commands
npm install hexo-generator-sitemap --save
npm install hexo-generator-robotstxt --save
npm install hexo-generator-feed --save
npm install hexo-abbrlink --save
npm install hexo-indexnow --saveFast facts
- Hexo output skips Google’s Wave 2 rendering queue — konten adalah di pertama fetch.
lastmodmuncul dariupdatedfield (falls back untukdate) — pertahankan ini saat ini.<meta name="keywords">adalah ignored oleh Google (since 2009) — organizational hanya.- Category/tag archives adalah auto-generated dan thin → noindex atau canonicalize.
- Baidu dapat’t crawl JS well → static Hexo adalah sebuah advantage, tetapi GitHub halaman adalah blocked di China.
bangun, sajikan, dan verify sebuah Hexo situs
basic Hexo bangun loop adalah yang sama di mana-mana; shell differs.
macOS / Linux
# install dependencies and the SEO plugins
npm install
npm install hexo-generator-sitemap hexo-generator-robotstxt hexo-generator-feed --save
# clean stale output, then build the static HTML
npx hexo clean && npx hexo generate
# preview locally before deploying
npx hexo server
# confirm the sitemap and robots.txt were actually generated
ls public/sitemap.xml public/robots.txtWindows (PowerShell)
# install dependencies and the SEO plugins
npm install
npm install hexo-generator-sitemap hexo-generator-robotstxt hexo-generator-feed --save
# clean stale output, then build the static HTML
npx hexo clean; npx hexo generate
# preview locally before deploying
npx hexo server
# confirm the sitemap and robots.txt were actually generated
Get-ChildItem public\sitemap.xml, public\robots.txtKonfirmasi konten adalah di mentah HTML (tidak JS-dirender)
seluruh poin dari Hexo adalah itu konten adalah sudah di HTML. Verify ini oleh memeriksa itu Anda post text muncul di mentah respons, sebelum apa pun JavaScript berjalan.
macOS / Linux
# fetch the raw HTML and search for a phrase from your post body
curl -s https://yourdomain.com/your-post/ | grep -i "a sentence from your post"
# confirm the canonical tag points at the live HTTPS URL
curl -s https://yourdomain.com/your-post/ | grep -i 'rel="canonical"'Windows (PowerShell)
# fetch the raw HTML and search for a phrase from your post body
(Invoke-WebRequest https://yourdomain.com/your-post/).Content | Select-String "a sentence from your post"
# confirm the canonical tag points at the live HTTPS URL
(Invoke-WebRequest https://yourdomain.com/your-post/).Content | Select-String 'rel="canonical"'jika phrase menampilkan up di curl/Invoke-WebRequest output, ini adalah di static HTML
dan Google sees ini pada Wave 1 — persis apa Anda ingin.
alat untuk Hexo SEO
Hexo plugins ( SEO toolkit)
- hexo-generator-sitemap — official sitemap XML generator; membaca
lastmoddariupdatedfield. - hexo-generator-robotstxt — generates
robots.txtdengan sebuah sitemap pointer. - hexo-generator-feed — RSS/Atom feed untuk aggregators dan Google News eligibility.
- hexo-abbrlink — stable, hash-based permalinks itu survive file renames.
- hexo-indexnow / hexo-submit-urls-untuk-penelusuran-mesin — push changed URLs untuk Bing (IndexNow) dan Baidu respectively.
- hexo-semua-minifier / hexo-lazyload-image — Core Web Vitals helpers.
- hexo-seo — semua-di-satu option dengan structured-data generation.
Testing dan monitoring
- Google Search Console — submit sitemap, inspect URLs, watch pengindeksan.
- Bing Webmaster alat — submit sitemap, configure IndexNow, jalankan situs Scan.
- Baidu Webmaster (Ziyuan) — verification dan URL push untuk Chinese-audience situs.
- Lighthouse / PageSpeed Insights — audit theme JS/CSS untuk Core Web Vitals regressions.
- View Sumber / curl — konfirmasi konten, canonical, dan deskripsi meta adalah di mentah HTML (see Scripts tab).
Hexo SEO mistakes untuk hindari
Concrete mistakes orang sebenarnya membuat ketika mereka siapkan atau migrate sebuah Hexo situs — prevention, tidak diagnosis (see Troubleshooting tab untuk itu).
Leaving url: sebagai placeholder atau pada http://
Penerbitan dengan url: http://yoursite.com masih atur ke scaffold default atau
wrong protocol adalah mengapa ini adalah wrong: tag canonical, sitemap, RSS tautan, dan
pagination semua bangun off ini satu nilai, so setiap satu dari them silently poin di
wrong address. Apa untuk melakukan alih-alih: set url: untuk Anda nyata langsung domain dengan https://
sebelum Anda pertama hexo generate, dan re-periksa ini apa pun time Anda move domains.
Renaming sebuah post file (atau mengubah -nya slug) dengan Tidak redirect
default permalink derives URL dari post’s filename dan date, so renaming
Markdown file atau editing date perubahan langsung URL. Mengapa ini adalah wrong: setiap
inbound tautan dan apa pun accumulated sinyal peringkat pada old URL adalah now pointing di sebuah
404. Apa untuk melakukan alih-alih: switch untuk hexo-abbrlink untuk sebuah stable hash-based permalink
sebelum Anda memiliki tautan untuk lose, dan jika Anda ever harus perubahan sebuah published URL, tambahkan sebuah 301
redirect di Anda host atau CDN.
Shipping tanpa hexo-generator-sitemap dan hexo-generator-robotstxt
Assuming sebuah static situs generator “just handles” (terjemahan) “hanya menangani” crawler basics adalah mengapa ini adalah wrong: sebuah
default Hexo install produces neither sebuah sitemap nor sebuah robots.txt — ada Tidak
sitemap pointer untuk crawler untuk temukan. Apa untuk melakukan alih-alih: install keduanya plugins,
konfirmasi public/sitemap.xml dan public/robots.txt exist setelah hexo generate, dan
submit sitemap di Search Console dan Bing Webmaster alat.
Leaving category dan tag archives open untuk pengindeksan di scale
Letting Hexo’s auto-generated category/tag halaman accumulate sebagai post count grows adalah mengapa ini adalah wrong: setiap archive adalah filled dengan post excerpts itu duplicate posts themselves, so Anda end up dengan hundreds dari thin halaman competing untuk yang sama kueri dan diluting crawl attention. Apa untuk melakukan alih-alih: noindex archive templates, self-canonicalize paginated archive halaman, atau pertahankan sebuah category terindeks hanya ketika ini adalah sebuah genuine, curated topic hub.
Assuming hexo-indexnow covers Google too
Installing IndexNow dan expecting ini untuk speed up Google pengindeksan adalah mengapa ini adalah wrong: IndexNow adalah sebuah Bing/Yandex/Baidu protocol — Google tidak consume ini untuk umum halaman, so Anda masih perlu sebuah submitted sitemap untuk Google-side penemuan. Apa untuk melakukan alih-alih: gunakan IndexNow untuk Bing/Yandex freshness dan rely pada sitemap plus wajar crawling untuk Google.
Deploying untuk GitHub halaman tanpa sebuah durable CNAME
Relying pada hexo-deployer-git alone untuk sebuah custom domain adalah mengapa ini adalah wrong: beberapa
deploy paths reset atau omit CNAME file, yang silently drops Anda custom domain
back untuk default github.io address (dan breaks HTTPS enforcement). Apa untuk melakukan
alih-alih: pertahankan sebuah CNAME file di source/ so ini ships dengan setiap bangun, dan prefer sebuah
GitHub tindakan workflow itu publishes dibangun public/ folder intact.
umum Hexo SEO masalah
Symptom-pertama lookup untuk issues Anda sudah memiliki pada sebuah Hexo situs.
Sitemap.xml mengembalikan sebuah 404 setelah deploy
Symptom: https://yoursite.com/sitemap.xml 404s, atau Search Console reports ini
tidak dapat fetch sitemap.
mungkin penyebab: hexo-generator-sitemap tidak installed, tidak listed di
_config.yml, atau public/ bangun output tidak fully deployed (sebuah sebagian upload
atau sebuah deploy langkah itu excludes dotfiles/XML).
Perbaiki + periksa: jalankan npm install hexo-generator-sitemap --save, tambahkan sebuah sitemap:
block untuk _config.yml, lalu jalankan hexo clean && hexo generate dan konfirmasi
public/sitemap.xml ada locally sebelum deploying. setelah redeploying, fetch
langsung URL secara langsung (curl -I https://yoursite.com/sitemap.xml) dan konfirmasi sebuah 200.
Google Search Console menampilkan halaman sebagai “Discovered — currently not indexed” (terjemahan) “ditemukan — saat ini tidak terindeks”
Symptom: Posts adalah dapat di-crawl dan muat fine di sebuah browser, tetapi Search Console’s halaman pengindeksan report leaves them di “Discovered, not indexed” (terjemahan) “ditemukan, tidak terindeks” untuk weeks.
mungkin penyebab: thin category/tag archive halaman adalah eating sebuah disproportionate share dari crawl attention, atau posts themselves adalah thin/duplicative dari archives itu excerpt them.
Perbaiki + periksa: noindex atau canonicalize auto-generated category/tag archives (see anti-patterns entry di atas), permintaan pengindeksan pada sebuah handful dari affected URLs di Search Console, dan re-periksa halaman pengindeksan report setelah sebuah sedikit days untuk sebuah couple dari weeks — ini tidak sebuah immediate sinyal.
deskripsi meta tidak menunjukkan up di penelusuran snippets
Symptom: Anda post memiliki sebuah description: field di front penting, tetapi Google menampilkan sebuah
auto-generated snippet alih-alih, atau view-source: menampilkan Tidak
<meta name="description"> tag di semua.
mungkin penyebab: theme’s head template tidak pernah prints page.description — ini adalah
single sebagian besar umum Berikutnya kesenjangan, dan ini memengaruhi lainnya themes too.
Perbaiki + periksa: patch theme’s head sebagian untuk output
<meta name="description" content="{{ page.description or config.description }}">
(Berikutnya-style templating), rebuild, lalu curl -s https://yoursite.com/your-post/ | grep -i 'name="description"' untuk konfirmasi tag adalah present di mentah HTML sebelum Anda tunggu
pada sebuah snippet refresh.
tag canonical adalah missing atau poin di wrong URL
Symptom: curling sebuah post menampilkan Tidak rel="canonical" tag, atau ini resolves untuk http://
alih-alih https://, atau untuk sebuah stale domain.
mungkin penyebab: theme’s canonical fitur tidak enabled (Berikutnya perlu
canonical: true di _config.next.yml), atau url: di main _config.yml adalah wrong
— tag canonical bangun off itu base URL.
Perbaiki + periksa: konfirmasi url: adalah correct pertama, enable theme’s canonical option,
rebuild, dan periksa dengan curl -s https://yoursite.com/your-post/ | grep -i 'rel="canonical"' — nilai seharusnya persis match langsung HTTPS URL.
Custom domain reverts untuk username.github.io setelah sebuah deploy
Symptom: sebuah berfungsi custom domain pada GitHub halaman berhenti resolving setelah sebuah routine
hexo deploy, falling back untuk default github.io address.
mungkin penyebab: deploy proses overwrote atau omitted CNAME file itu GitHub
halaman membaca untuk know Anda custom domain.
Perbaiki + periksa: put (atau restore) sebuah CNAME file containing hanya Anda domain di
source/ so ini adalah copied ke setiap bangun, redeploy, dan konfirmasi di repo’s
Settings → halaman itu custom domain field masih menampilkan Anda domain dengan HTTPS
enforced.
Baidu tidak pengindeksan situs di semua
Symptom: Baidu Ziyuan (Baidu Webmaster) menampilkan little untuk Tidak crawling activity bahkan though Google indeks situs fine.
mungkin penyebab: situs adalah hosted pada GitHub halaman, yang adalah blocked di mainland China, so Baidu’s crawler sering dapat’t reach ini consistently.
Perbaiki + periksa: move Baidu-facing hosting untuk Gitee halaman, Cloudflare, atau sebuah Chinese
CDN, tambahkan Baidu situs verification dan sebuah Baidu-format sitemap
(hexo-generator-baidu-sitemap), lalu watch Baidu Ziyuan crawl-frequency report
di atas berikut weeks untuk renewed activity.
Uji pemahaman Anda: Hexo SEO
Five quick pertanyaan pada melakukan SEO dengan Hexo static situs generator. Pick sebuah jawaban untuk setiap, lalu periksa.
Resources worth Anda time
My related writing
- JavaScript SEO: sebuah Definitive Guide — rendering, DOM parity, dan mengapa static/pre-dirender output adalah rendah-risk end dari spectrum.
- Beginner’s Guide untuk SEO teknis — di mana rendering architecture fits di bigger picture.
My speaking
- Bagaimana Penelusuran berfungsi (SlideShare) — my walkthrough dari crawling, rendering, pengindeksan, dan peringkat. (My standing disclaimer applies: “Ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.” (terjemahan) “ini adalah my understanding dari sistem… tidak going untuk menjadi 100% menyelesaikan atau accurate.”)
dari sekitar industry
- Hexo documentation — official docs untuk config, permalinks, front penting, dan deployment.
- hexo-generator-sitemap — official sitemap plugin README.
- Berikutnya theme SEO settings — canonical, webmaster verification, dan Open Graph untuk paling-digunakan theme.
- Google — JavaScript SEO basics — crawl → render → indeks phases sebuah static bangun lets Anda skip untuk konten.
- Bing — Mempertahankan konten Discoverable dengan Sitemaps — XML preference,
lastmodaccuracy, dan IndexNow. - John Mueller — beberapa design decisions — bagaimana he berjalan his own static blog (sitemap + RSS + artikel data terstruktur), dan mengapa switching generators tidak itself sebuah SEO win.
Log perubahan
Diperbarui 9 Agu 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.
Diperbarui 18 Jul 2026.
Ringkasan editorial dan detail perubahan yang tercatat.Detail perubahan
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
-
Catatan perubahan terperinci saat ini tersedia dalam bahasa Inggris.
Perbandingan lengkap tidak tersedia — tidak ada cuplikan sebelumnya yang diarsipkan untuk revisi ini.