Hướng dẫn về Eleventy SEO
Eleventy (11ty) ships zero client-side JavaScript theo mặc định, so nội dung của bạn là trong đó thô HTML on đó đầu tiên fetch. Đó catch — điều này generates không tiêu đề tags, meta các mô tả, canonicals, hoặc sitemaps. Ở đây cách configure SEO on an Eleventy site, được xây dựng khoảng đó dữ liệu cascade.
Ngôn ngữ
1 tín hiệu bằng chứng trên trang này
- Công cụ trực tuyến liên quanHTTP Status & Redirect Checker
Eleventy outputs đơn giản HTML với zero client-side JavaScript theo mặc định, mà là đó safest có thể starting point cho indexability — nội dung là trong đó đầu tiên byte, không có gì để render. Đó trade-off: Eleventy generates không SEO markup tại all. Mỗi tiêu đề, mô tả meta, canonical, sitemap, và bit of dữ liệu có cấu trúc là điều gì đó bạn implement yourself. Đó dữ liệu cascade (_data/site.js → directory dữ liệu → front quan trọng → eleventyComputed) là đó architecture đó làm đó scalable: declare defaults khi, derive canonicals tự động. Plugin như eleventy-plugin-seo và @11ty/eleventy-img thêm convenience, không khả năng. Pick bất kỳ template language — điều này không ảnh hưởng SEO.
TL;DR — Eleventy xây dựng trang web của bạn vào đơn giản HTML files ahead of time, và — unlike hầu hết JavaScript tools — điều này gửi không JavaScript để đó trình duyệt theo mặc định. đó là về as friendly as điều này nhận cho Google. Đó catch: Eleventy sẽ không ghi của bạn tiêu đề tags, meta các mô tả, hoặc sitemap cho bạn. Bạn có để thêm những yourself.
Điều gì Eleventy là
Eleventy (bạn’ll cũng see điều này được viết 11ty) là một static site generator. Bạn ghi nội dung của bạn trong Markdown và trang của bạn templates trong điều gì đó như Nunjucks hoặc Liquid, và Eleventy turns all of điều này vào finished HTML files trước anyone visits. Bạn upload những files để một host, và khi Google hoặc một reader các yêu cầu một trang, they nhận hoàn tất HTML straight away. Evidence for this claim Eleventy transforms templates and data into static output files during a build. Scope: Eleventy static site generation. Confidence: high · Verified: Eleventy documentation
Đó điều đó sets Eleventy apart từ hầu hết JavaScript-based tools là đó điều này ships zero JavaScript để đó trình duyệt theo mặc định. Evidence for this claim Eleventy does not require a client-side JavaScript runtime and ships only the browser JavaScript a developer adds. Scope: Eleventy core output; site code can add JavaScript. Confidence: high · Verified: Eleventy documentation Đó trang một khách truy cập nhận là đơn giản HTML — không có gì có để chạy trong đó trình duyệt để xây dựng điều này. Cho SEO đó là ideal: có không kết xuất step cho Google để chờ on, và các trang load fast.
Vì sao đó helps SEO
- Nội dung của bạn là trong đó thô HTML. Google sees của bạn text và links on đó đầu tiên fetch — không JavaScript có để chạy successfully đầu tiên.
- đây là fast. Đơn giản HTML với không script payload là great cho Core Web Vitals.
- Ít hơn có thể break. Ít hơn moving parts có nghĩa là ít hơn ways cho nội dung để go bị thiếu từ tìm kiếm.
Đó big catch: Eleventy làm không làm SEO cho bạn
Này là đó part mọi người nhận sai. Eleventy cho bạn sạch HTML, nhưng điều này adds none of đó SEO markup tự động:
- Không
<title>tag - Không mô tả meta
- Không canonical link
- Không sitemap
- Không dữ liệu có cấu trúc
All of đó là yours để thêm — thường trong một shared layout file đó wraps mỗi
trang, so bạn ghi điều này khi và mỗi trang inherits điều này. Có plugin đó help
(đó popular một là eleventy-plugin-seo), nhưng họ là conveniences, không magic.
Đó hoạt động vẫn có để happen.
Đó mental model: đó dữ liệu cascade
Eleventy clever trick cho đang làm này không có hand-editing mỗi trang là đó dữ liệu cascade. Bạn set sitewide defaults khi trong một global dữ liệu file (trang web của bạn name, base URL, default social image), và Eleventy áp dụng them mọi nơi. Override them theo section hoặc theo trang chỉ nơi bạn cần để. Điều này even cho phép bạn compute các giá trị — như building mỗi trang canonical URL tự động từ của bạn domain plus đó trang path.
Muốn đó kỹ thuật version — đó đầy đủ dữ liệu cascade, code cho meta tags và canonicals, đó plugin so sánh, sitemaps, image optimization, và pagination SEO? Switch để đó Advanced tab.
TL;DR — Eleventy emits đơn giản HTML tại xây dựng time với zero client-side JS by default, so nội dung là trong đó phản hồi trước đó đầu tiên crawler yêu cầu — đó lowest-risk indexability setup có. Nhưng Eleventy ships không SEO markup: tiêu đề, mô tả, canonical, robots, OG, sitemap, và JSON-LD là all yours để xây dựng. Đó dữ liệu cascade (
_data/site.js→ directory dữ liệu files → front quan trọng →eleventyComputed) là đó architecture đó làm này scale — declare defaults khi, derive canonicals trongeleventyComputed. Plugin (eleventy-plugin-seo,@11ty/eleventy-img,@quasibit/eleventy-plugin-sitemap) thêm convenience, không khả năng.robots.txtlà một passthrough file. Template language là an SEO non-vấn đề — pick by team familiarity. v3 là ESM-đầu tiên và làm đó Image Transform plugin đó default path để CWV-sạch images. Watch three edge cases:eleventyComputeddependency ordering có thể fail silently, collection membership không bảo đảmột URL đã là emitted, và một local xây dựng không phải proof of điều gì production thực ra serves — verify đó deployed artifact trực tiếp.
Vì sao Eleventy là một mạnh SEO baseline
Eleventy xây dựng mỗi route để static HTML tại xây dựng time và, unlike Tiếp theo.js, Nuxt, Gatsby, hoặc Astro, ships không JavaScript để đó trình duyệt trừ khi bạn thêm điều này. Evidence for this claim Eleventy compiles templates to static output and adds no client-side framework runtime by default. Scope: Eleventy core behavior. Confidence: high · Verified: Eleventy documentation có không client-side kết xuất cho một crawler để chờ on, không kết xuất budget impact, và không hydration bundle taxing Core Web Vitals. Real production Eleventy các trang routinely báo cáo Lighthouse scores of 99–100 across đó board và homepages đó ship 0 KB of JavaScript.
đây là cũng fast để xây dựng, mà matters hơn cho SEO hơn điều này looks: nhanh hơn xây dựng
có nghĩa là tighter deploy cycles, so nội dung cácách sửa reach cácông cụ tìm kiếm sooner. On một
4 000-Markdown-file benchmark Eleventy xây dựng trong ~1,93s versus ~22,9s cho Astro,
~29s cho Gatsby, và ~70,6s cho Tiếp theo.js, với một fraction of đó node_modules
footprint (34 MB so với Gatsby 583 MB).
Nhưng — và này là đó toàn bộ point of đó trang — none of đó buys bạn SEO
markup. Eleventy generates sạch HTML và dừng ở đó. Mỗi <title>, meta
mô tả, canonical, sitemap entry, và JSON-LD block là điều gì đó bạn
implement. Đó good news là đó Eleventy dữ liệu model làm implementing them
khi-và-mọi nơi genuinely pleasant.
Đó dữ liệu cascade: của bạn SEO architecture foundation
Đó single hầu hết quan trọng concept cho scalable Eleventy SEO là đó dữ liệu cascade — đó order trong mà Eleventy resolves một giá trị, lowest priority để highest: Evidence for this claim Eleventy's data cascade resolves data from multiple sources according to a documented priority order. Scope: Eleventy data cascade. Confidence: high · Verified: Eleventy: Data cascade
- Eleventy-supplied global dữ liệu
- Global dữ liệu files trong
_data/(e.g._data/site.jsvớititle,description,url,author) - Directory dữ liệu files (e.g.
blog/blog.11tydata.js— cho mỗi blog postog:type: article) - Template front quan trọng (theo-trang overrides)
eleventyComputed(highest — derive các giá trị từ other dữ liệu)
Trong thực tế:
- Declare của bạn SEO defaults khi trong
_data/site.js. - Override tại đó directory level cho một nội dung loại (all posts nhận đó bài viết
OG loại, một
noindexsection nhậnnoindex, etc.). - Override theo trang trong front quan trọng nơi một trang là special.
- Dùng
eleventyComputedcho derived các giá trị — đó canonical đang đó canonical ví dụ:
// _data/eleventyComputed.js (or eleventyComputed in a layout data file)
module.exports = {
canonical: (data) => `${data.site.url}${data.page.url}`,
};Hiện tại mỗi trang có một correct self-referencing canonical với zero theo-trang hoạt động. đó là đó leverage đó cascade cho bạn.
Một trường hợp biên worth kiểm thử thay vì assuming: eleventyComputed các giá trị có thể
phụ thuộc on other computed các giá trị (một tiêu đề đó feeds vào một computed mô tả,
say), và Eleventy có để resolve đó dependency graph trước điều này có thể render
bất cứ điều gì. Straightforward chains hoạt động fine, nhưng một computed giá trị đó
accidentally phụ thuộc vào itself — trực tiếp hoặc qua một sản phẩm khác computed trường —
là một circular reference, và ordering các vấn đề ở đây fail silently as một bị thiếu hoặc
sai giá trị thay vì một loud xây dựng lỗi. Nếu bạn lean on multiple layered
eleventyComputed các trường, kiểm tra đó được kết xuất output cho đó chính xácác giá trị bạn
expect, không chỉ đó xây dựng succeeded. Evidence for this claim Computed Data values can derive from other computed values, so dependency ordering and circular references need testing against the rendered output. Scope: Eleventy eleventyComputed resolution. Confidence: high · Verified: Eleventy: Computed Data
Meta tags trong đó base layout
Tiêu chuẩn architecture là một base layout đó owns đó <head>, với nội dung
layouts extending điều này:
_includes/
layouts/
base.njk ← <head> with all SEO meta tags
post.njk ← extends base, adds BlogPosting schema
_data/
site.js ← sitewide SEO defaultsĐó meta tags bạn cần để implement yourself, tại minimum:
<title>— unique theo trang<meta name="description">— unique theo trang<link rel="canonical">— Eleventy có không được xây dựng-trong canonical; thêm điều này explicitly<meta name="robots">—noindexcho draft/preview các trang (và thin paginated các trang, nếu bất kỳ)- Open Graph —
og:title,og:description,og:image,og:url,og:type - Twitter/X Cards —
twitter:card,twitter:title,twitter:description,twitter:image
MỘT minimal Nunjucks <head> pulling từ đó cascade:
<title>{{ title }} | {{ site.title }}</title>
<meta name="description" content="{{ description or site.description }}">
<link rel="canonical" href="{{ canonical }}">
<meta property="og:title" content="{{ title }}">
<meta property="og:image" content="{{ ogImage or site.defaultImage }}">
<meta name="twitter:card" content="summary_large_image">SEO plugin, compared
Bạn không cần một plugin — một manual base layout plus đó dữ liệu cascade cho bạn đầy đủ control với không dependencies, và nhiều practitioners ưu tiên chính xác đó. Nhưng hai plugin là worth knowing:
eleventy-plugin-seo(artstorm) — đó hầu hết mature và widely dùng. MỘT single{% seo %}shortcode (Liquid) /{% seo "" %}(Nunjucks) emits tiêu đề, mô tả, canonical, robots, Open Graph, Twitter Card, và tác giả từ một config block (site tiêu đề, mô tả, URL, tác giả, Twitter xử lý, default image). Điều này cũng xử lý robot directives on paginated các trang, một tiêu đề divider, và một minimalistic chế độ. Install:npm install eleventy-plugin-seo.eleventy-plugin-metagen(tannerdolby) — hơn granular, với named shortcode parameters; generates charset, viewport, tiêu đề, tác giả, mô tả, generator, OG, Twitter Card, canonical, và CSS/JS tags.
Đó rule of thumb: plugin thêm convenience, không khả năng. Bất cứ điều gì they làm, bạn có thể làm trong đó base layout. Reach cho một nếu bạn’d rather không maintain đó boilerplate.
robots.txt
Eleventy làm không auto-generate robots.txt. Hai approaches:
1 — Static passthrough (simplest). Drop một robots.txt trong của bạn nguồn và copy
điều này verbatim:
eleventyConfig.addPassthroughCopy("src/robots.txt");2 — Template-generated (cho environment-cụ thể output — block mọi thứ on staging, cho phép on production):
---
permalink: /robots.txt
eleventyExcludeFromCollections: true
---
User-agent: *
{% if environment == "production" %}
Allow: /
Sitemap: {{ site.url }}/sitemap.xml
{% else %}
Disallow: /
{% endif %}Remember đó universal rule: Disallow chặn crawling, không lập chỉ mục — và một
noindex tag on một crawl-blocked URL là không bao giờ seen.
Sitemap generation
Cũng không được xây dựng trong. Đó hầu hết-control option là một manual template — tạo
sitemap.xml.njk với permalink: /sitemap.xml và
eleventyExcludeFromCollections: true, loop over collections.all, skip excluded
các trang, và emit <loc> / <lastmod> entries:
---
permalink: /sitemap.xml
eleventyExcludeFromCollections: true
---
<?xml version="1.0" encoding="utf-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{% for page in collections.all %}
{% if not page.data.excludeFromSitemap %}
<url>
<loc>{{ site.url }}{{ page.url }}</loc>
<lastmod>{{ page.date | dateToISO }}</lastmod>
</url>
{% endif %}
{% endfor %}
</urlset>Hoặc dùng @quasibit/eleventy-plugin-sitemap (configure với hostname; điều này cũng
hỗ trợ multilingual alternate links). Either way, mark utility các trang với
eleventyExcludeFromCollections: true so they không leak trong.
Một điều worth đang precise về: looping over collections.all walks
collection membership, không guaranteed output. MỘT template có thể belong để một
collection và vẫn không emit một URL — hầu hết commonly vì của nó permalink
là set để false, hoặc vì một dữ liệu-chỉ file đã là không bao giờ meant để render một
trang ngay từ đầu. Membership trong collections.all không phải proof an item
belongs trong đó sitemap; kiểm tra đó được kết xuất <loc> entries so với đó các trang
bạn thực ra expect để là crawlable. Evidence for this claim Collection membership does not by itself guarantee that an item emits a URL or belongs in the sitemap. Scope: Eleventy collections and permalink interaction. Confidence: high · Verified: Eleventy: Collections
Image optimization cho Core Web Vitals
MỘT static site HTML là fast, nhưng unoptimized images sẽ vẫn tank LCP và CLS.
Đó cách sửa là @11ty/eleventy-img, và trong v3 đó được khuyến nghị path là đó
Image Transform plugin, mà post-xử lý mỗi <img> tag trong của bạn được xây dựng
HTML tự động — không theo-image shortcode needed:
const { eleventyImageTransformPlugin } = require("@11ty/eleventy-img");
eleventyConfig.addPlugin(eleventyImageTransformPlugin, {
formats: ["avif", "webp", "jpeg"],
defaultAttributes: {
loading: "lazy",
decoding: "async",
},
});Điều gì đó buys bạn cho SEO:
- Auto-stamped
widthvàheight→ ngăn layout shift (CLS) srcsetvới multiple widths → responsive images<picture>với AVIF + WebP + JPEG fallback- Không upscaling
Cho trên-đó-fold hero images, override đó lazy default so they load eagerly:
<img src="hero.jpg" loading="eager" fetchpriority="high" eleventy:widths="800,1200">Permalinks và sạch URLs
Eleventy default là sạch URLs với một trailing slash: about.njk →
_site/about/index.html → /about/. Override trong front quan trọng:
permalink: "/blog/{{ title | slugify }}/"Hữu ích flags: permalink: false xử lý một template cho collections nhưng skips
writing điều này để disk (handy cho dữ liệu-chỉ templates), và dynamicPermalink: false
xử lý đó permalink string theo nghĩa đen. Đó một SEO điều để stay disciplined về:
trailing-slash consistency — mixing /page và /page/ là một duplicate-nội dung
own-goal.
Worth stating plainly vì điều này trips mọi người lên: permalink: false suppresses
output hoàn toàn — đó nguồn file compiles và có thể vẫn feed collections và
dữ liệu, nhưng không HTML trang là được viết và không URL tồn tại để crawl. MỘT nguồn file
sitting trong nội dung của bạn directory không phải proof đó một corresponding trang shipped;
nếu một trang là bị thiếu từ tìm kiếm, kiểm tra đó được xây dựng _site output cho đó file
trước assuming đây là an lập chỉ mục vấn đề thay vì một permalink
một. Evidence for this claim A permalink value of false suppresses page output entirely, so a source file's existence is not proof of a crawlable page. Scope: Eleventy permalink output control. Confidence: high · Verified: Eleventy: Permalinks
Pagination SEO
Eleventy pagination splits một collection across output files. Đó đầu tiên trang là
/blog/, thì /blog/1/, /blog/2/, và so on (customizable qua permalink). Mỗi
trang trong đó set cần một unique URL và pagination.alias để expose theo-trang
dữ liệu. Đó SEO decisions:
- Canonicals. Hai schools: point mỗi trang tại trang 1 (consolidates các tín hiệu nhưng buries legitimate deep-trang nội dung), hoặc self-referencing canonicals nơi mỗi trang canonical là của nó own URL — Google được ưu tiên approach trong hiện tại tài liệu. I default để self-referencing trừ khi đó deeper các trang truly có không có gì worth lập chỉ mục.
rel="prev"/rel="next". Google confirmed back trong 2019 điều này không lâu hơn dùng những as các tín hiệu xếp hạng. Some vẫn thêm them để help các crawler understand series structure; nếu bạn làm, wire them từpagination.href.previous/pagination.href.next.noindexon thin các trang. Nếu sau đó các trang có insufficient nội dung, thêmnoindex(qua đónoindextrường nếu bạn là dùngeleventy-plugin-seo, hoặc manually trong đó head).
Dữ liệu có cấu trúc / JSON-LD
Manual là đó hầu hết flexible: define một schema object trong eleventyComputed hoặc một
directory dữ liệu file và serialize điều này trong đó layout. Đó sạch nhất types cho một
nội dung site là Organization / WebSite sitewide trong đó base layout,
BlogPosting / Article theo post, BreadcrumbList nếu bạn có breadcrumbs, và
FAQPage on FAQ sections. @quasibit/eleventy-plugin-schema offers một shortcode
cho BlogPosting và WebPage nếu bạn’d rather không hand-roll điều này (điều này expects ISO
8601 dates, so register một date filter).
Eleventy v2 so với v3 — điều gì changed cho SEO
v3 (hiện tại ổn định) là ESM-đầu tiên: một config file đó dùng require() hiện tại cần
đó .cjs extension, hoặc bạn set "type": "module" trong package.json và dùng
import. CommonJS là vẫn fully supported — chỉ là deliberate về điều này. Đó hai
SEO-relevant wins:
- ~38% nhanh hơn cold xây dựng on các trang over 500 các trang → nhanh hơn deploys, fresher chỉ mục.
- Đó Image Transform plugin là đó default path — declarative post-processing
of mỗi
<img>, mà làm shipping responsive, CLS-safe images đó path of least resistance thay vì một theo-image chore.
Verify đó production artifact, không chỉ đó local xây dựng
Mọi thứ trên là về getting đó nguồn right — đó dữ liệu cascade, đó
layout, đó plugin. None of điều này proves điều gì thực ra ships. MỘT local _site
xây dựng (hoặc eleventy --serve) không tell bạn điều gì production serves: đó
host và path của bạn deploy nền tảng thực ra dùng, các chuyển hướng điều này injects, các header
điều này sets, hoặc liệu một CDN/proxy rewrites bất cứ điều gì on đó way out. Xác nhận đó
installed Eleventy version matches điều gì bạn là kiểm thử so với, thì kiểm tra đó
deployed site trực tiếp, không chỉ đó xây dựng output:
- Thô HTML — view-nguồn đó trực tiếp URL, không chỉ
_site/index.html; xác nhận đó tiêu đề, mô tả meta, và canonical là ở đó và correct. - Absolute canonical host — một canonical được xây dựng từ một staging hoặc
localhostsite.urlsẽ silently ship sai trong production nếu đó giá trị đã không overridden theo environment. - Sitemap XML — fetch đó trực tiếp
/sitemap.xmlvà xác nhận điều này resolves, dùng đó production host, và lists đó URLs bạn expect (see đó sitemap section trên on collection membership không guaranteeing an entry). - Suppressed/utility các trang — spot-kiểm tra rằng
permalink: falsevàeleventyExcludeFromCollections: truecác trang là thực ra absent từ đó trực tiếp site, không chỉ từ của bạn local xây dựng. - Assets — CSS, JS, và images referenced trong đó được xây dựng HTML resolve on đó production host (một relative-so với-absolute path mismatch là easy để miss locally).
- Các mã trạng thái và các chuyển hướng — yêu cầu đó trực tiếp URLs trực tiếp và xác nhận 200s nơi bạn expect 200s; một deploy nền tảng chuyển hướng rules có thể silently turn một canonical trang vào một 301 chain đó không bao giờ cho thấy lên trong một local xây dựng.
Bên thứ ba plugin installation không phải proof of correct output either — điều này thay đổi điều gì nhận generated, không điều gì một cụ thể deploy environment làm với điều này. Treat này as một phát hành-checklist item, không một-time setup. Evidence for this claim Local build output does not by itself prove production hostnames, redirects, headers, or canonical behavior; the deployed artifact needs its own verification pass. Scope: Eleventy production deployment verification. Confidence: medium · Verified: Patrick Stox: Eleventy SEO
Phổ biến Eleventy SEO mistakes
- Assuming Eleventy “xử lý SEO” — điều này xử lý HTML; đó SEO markup là all yours.
- Forgetting đó canonical hoàn toàn (có không được xây dựng-trong một).
- Shipping không sitemap vì bạn assumed điều này đã là tự động.
- Letting unoptimized images undo đó speed advantage.
- Inconsistent trailing slashes creating duplicate URLs.
- Dùng
Disallowtrongrobots.txtđể try để deindex một trang (dùngnoindexthay vì). - Leaving draft/preview các trang indexable vì không
noindexđã là set on đó section.
Cho nơi Eleventy sits among đó other generators, see đó Static Site Generators hub; cho đó kết xuất theory behind vì sao static output là thấp-risk, đó parent JavaScript SEO hub.
AI summary
MỘT condensed take on đó Advanced version:
- Eleventy outputs đơn giản HTML tại xây dựng time với zero client-side JavaScript by default — nội dung là trong đó đầu tiên byte, không có gì để render. Đó lowest-risk architecture cho indexability, với Lighthouse 99–100 và 0 KB JS homepages phổ biến.
- Eleventy generates KHÔNG SEO markup. Không tiêu đề, mô tả, canonical, robots, Open Graph, sitemap, hoặc JSON-LD. Mỗi một of những là điều gì đó bạn implement.
- Đó dữ liệu cascade là đó scaling architecture: global
_data/site.js→ directory dữ liệu files → front quan trọng →eleventyComputed. Declare defaults khi; derive đó canonical vớieleventyComputed(${site.url}${page.url}). - Meta tags trực tiếp trong một shared base layout — either hand-được viết, hoặc qua
eleventy-plugin-seo(artstorm, đó leading plugin: một{% seo %}shortcode cho tiêu đề/mô tả/canonical/robots/OG/Twitter). robots.txtlà một passthrough file (addPassthroughCopy) hoặc một template cho env-cụ thể output — không auto-generated.- Sitemap = một Nunjucks template over
collections.all, hoặc@quasibit/eleventy-plugin-sitemap. Exclude utility các trang vớieleventyExcludeFromCollections: true. - Images:
@11ty/eleventy-img; v3’s Image Transform plugin post-xử lý mỗi<img>(autowidth/height→ không CLS,srcset, AVIF/WebP). Override heroes đểloading="eager"fetchpriority="high". - Pagination: mỗi trang một unique URL +
pagination.alias; default để self-referencing canonicals;rel=prev/nextkhông lâu hơn mộtín hiệu xếp hạng. - Template language không ảnh hưởng SEO — pick by familiarity. v3 là ESM-đầu tiên
(
require()cần.cjshoặc"type":"module") và làm Image Transform đó default. - Plugin thêm convenience, không khả năng — đó manual base-layout approach làmọi thứ they làm.
- Three các trường hợp biên để kiểm thử, không assume: layered
eleventyComputedcác giá trị có thể phụ thuộc on mỗi other và fail silently nếu ordering breaks;collections.allmembership không bảo đảmột URL đã là thực ra emitted (kiểm tra chopermalink: false); và một local_sitexây dựng proves không có gì về production — verify đó trực tiếp canonical host, sitemap, suppressed các trang, assets, và các mã trạng thái trực tiếp on đó deployed site.
Tài liệu chính thức
Chính-nguồn tài liệu — từ Eleventy, đó SEO plugin, và đó tìm kiếm engines.
Eleventy
- Eleventy tài liệu home — đó starting point.
- Image plugin (
@11ty/eleventy-img) — Image Transform, responsive images,width/height. - Permalinks — sạch URLs,
slugify,permalink: false, trailing slashes. - Pagination — splitting collections,
pagination.alias, theo-trang URLs. - Performance — Eleventy xây dựng-speed và zero-JS benchmarks.
- Passthrough copy — cách ship một static
robots.txt. - Community plugin — đó SEO/sitemap/schema plugin chỉ mục.
- Eleventy v3 announcement — ESM-đầu tiên, nhanh hơn xây dựng, Image Transform.
SEO / sitemap / schema plugin
- eleventy-plugin-seo (artstorm) — tiêu đề, mô tả, canonical, robots, OG, Twitter Card.
- eleventy-plugin-metagen (tannerdolby) — granular meta-tag generation.
- @quasibit/eleventy-plugin-sitemap — sitemap với multilingual alternates.
- @quasibit/eleventy-plugin-schema — JSON-LD (BlogPosting, WebPage).
- Consolidate duplicate URLs (canonicals + pagination) — đó canonical và pagination hướng dẫn đó informs đó SEO decisions trên.
Quotes từ đó nguồn
Có không on-đó-record statements từ Google hoặc Bing reps cụ thể về Eleventy — đó cácông cụ tìm kiếm không comment on individual static site generators. Đó applicable hướng dẫn là đó chung principle đó pre-được kết xuất HTML là đó lowest-risk điều bạn có thể serve, mà là chính xác điều gì Eleventy outputs.
Google — pre-được kết xuất HTML là simplest
- John Mueller có repeatedly đã làm đó chung point đó trong khi Google có thể render JavaScript, serving đó HTML trực tiếp là simpler và nhanh hơn. Đó chính xác wording varies across Tìm kiếm Central office-hours và threads, và không statement cụ thể referencing Eleventy đã là được tìm thấy — so I’m không quoting một verbatim line ở đây. Đó takeaway holds regardless: Eleventy default output là đó “just serve the HTML” (bản dịch) «chỉ serve đó HTML» case.
Eleventy SEO checklist
MỘT truyền để xác nhận của bạn Eleventy site là thực ra configured cho tìm kiếm — vì Eleventy đã làm none of điều này cho bạn:
- SEO defaults declared khi trong
_data/site.js(tiêu đề, mô tả,url, tác giả, default OG image). - MỘT base layout owns đó
<head>với<title>, mô tả meta, OG, và Twitter Card tags pulling từ đó cascade. - MỘT canonical là set on mỗi trang (Eleventy có none được xây dựng trong) — ideally
derived trong
eleventyComputedtừsite.url+page.url. - Draft/preview/section các trang đó không nên xếp hạng carry
noindex(set tại đó directory dữ liệu file nơi có thể). - MỘT sitemap là generated — template over
collections.allhoặc@quasibit/eleventy-plugin-sitemap— và utility các trang là excluded vớieleventyExcludeFromCollections: true. -
robots.txttồn tại (passthrough copy hoặc template), references đó sitemap, và làm không block JS/CSS hoặcác trang bạn muốn được lập chỉ mục. - Images chạy qua
@11ty/eleventy-img(Image Transform trong v3) sowidth,height,srcset, và modern formats là emitted — heroes overridden đểloading="eager"fetchpriority="high". - Permalinks là sạch và trailing-slash consistent sitewide.
- Paginated sets cho mỗi trang một unique URL và một self-referencing canonical
(trừ khi deep các trang là genuinely thin →
noindex). - Dữ liệu có cấu trúc (
Organization/WebSitesitewide,BlogPosting/Articletheo post) là emitted trong đó layout hoặc qua một schema plugin. - Nội dung edits trigger một rebuild + redeploy — một static site chỉ reflects của nó cuối cùng xây dựng.
- Đó trực tiếp, deployed site là checked trực tiếp — thô HTML, canonical host,
/sitemap.xml, suppressed/utility các trang, asset paths, và các mã trạng thái — không chỉ đó local_sitexây dựng. MỘT local xây dựng không prove điều gì production serves.
Đó dữ liệu → template → artifact framework
Eleventy SEO các vấn đề thường enter tại một of three stages:
- Dữ liệu: frontmatter và đó dữ liệu cascade define các tiêu đề, các mô tả, canonicals, language, publication state, và structured-dữ liệu các giá trị.
- Template: layouts transform đó dữ liệu vào consistent head markup và links.
- Artifact: đó generated
_siteHTML, sitemap, và robots file là điều gì các crawler nhận.
Validate trong đó order khi diagnosing đó nguồn of một bad giá trị, nhưng validate đó được xây dựng artifact trước phát hành. MỘT correct frontmatter trường là irrelevant nếu một layout không render điều này hoặc một collection vẫn publishes một draft route.
Eleventy SEO — bảng tra nhanh
Ai generates điều gì
| SEO element | Eleventy được xây dựng-trong? | Cách bạn nhận điều này |
|---|---|---|
| Sạch HTML, zero JS | Có (default) | Không có gì để làm |
<title> / mô tả meta | Không | Base layout + cascade |
| Canonical | Không | eleventyComputed: ${site.url}${page.url} |
robots meta / noindex | Không | Front quan trọng / directory dữ liệu |
| Open Graph / Twitter Card | Không | Base layout (hoặc eleventy-plugin-seo) |
robots.txt | Không | addPassthroughCopy hoặc template |
| Sitemap | Không | Template over collections.all hoặc @quasibit/...sitemap |
| Responsive images | Plugin | @11ty/eleventy-img (v3 Image Transform) |
| JSON-LD | Không | Layout / @quasibit/...schema |
Đó dữ liệu cascade (thấp → cao priority)
- Eleventy global dữ liệu
_data/global files (site.js)- Directory dữ liệu files (
blog.11tydata.js) - Template front quan trọng
eleventyComputed(derive canonical ở đây)
Plugin shortlist
eleventy-plugin-seo(artstorm) — đó leading meta-tag plugin;{% seo %}shortcode.eleventy-plugin-metagen— granular meta tags.@quasibit/eleventy-plugin-sitemap— sitemap + multilingual alternates.@quasibit/eleventy-plugin-schema— JSON-LD.@11ty/eleventy-img— images.
Fast facts
- Template language (Nunjucks / Liquid / Markdown / WebC / HTML / JS) → không SEO khác biệt; pick by familiarity.
- v3 là ESM-đầu tiên:
require()config → rename để.cjshoặc set"type": "module". - Exclude utility các trang:
eleventyExcludeFromCollections: true. - Pagination: self-referencing canonicals theo mặc định;
rel=prev/nextkhông lâu hơn mộtín hiệu xếp hạng. - Plugin = convenience, không khả năng.
Scaffold an SEO-ready Eleventy site
MỘT starting point: tạo đó global dữ liệu file và một base-layout <head> so mỗi
trang inherits correct meta tags từ đó cascade.
macOS / Linux
# In your Eleventy project root
mkdir -p src/_data src/_includes/layouts
cat > src/_data/site.js <<'EOF'
module.exports = {
title: "Your Site",
description: "Your default site description.",
url: "https://example.com",
author: "Your Name",
};
EOF
# Derive a self-referencing canonical for every page via the data cascade
cat > src/_data/eleventyComputed.js <<'EOF'
module.exports = {
canonical: (data) => `${data.site.url}${data.page.url}`,
};
EOFWindows (PowerShell)
# In your Eleventy project root
New-Item -ItemType Directory -Force -Path src\_data, src\_includes\layouts | Out-Null
@'
module.exports = {
title: "Your Site",
description: "Your default site description.",
url: "https://example.com",
author: "Your Name",
};
'@ | Set-Content src\_data\site.js
@'
module.exports = {
canonical: (data) => `${data.site.url}${data.page.url}`,
};
'@ | Set-Content src\_data\eleventyComputed.jsXác nhận của bạn được xây dựng HTML có đó SEO markup
Sau một xây dựng, đó nội dung (và của bạn meta tags) nên là trong đó thô HTML — không JS bắt buộc. Kiểm tra đó output directory trực tiếp.
macOS / Linux
# Build, then grep the output for the tags Eleventy does NOT add for you
npx @11ty/eleventy
grep -o '<link rel="canonical"[^>]*>' _site/index.html
grep -o '<title>[^<]*</title>' _site/index.html
# Confirm robots.txt and sitemap.xml actually shipped
ls -l _site/robots.txt _site/sitemap.xmlWindows (PowerShell)
npx @11ty/eleventy
Select-String -Path _site\index.html -Pattern '<link rel="canonical"'
Select-String -Path _site\index.html -Pattern '<title>'
Get-Item _site\robots.txt, _site\sitemap.xmlNếu grep/Select-String tìm thấy không có gì, đó markup không ở đó — remember Eleventy
sẽ không thêm điều này on của nó own.
Tools cho Eleventy SEO
eleventy-plugin-seo(artstorm) — đó leading meta-tag plugin: tiêu đề, mô tả, canonical, robots, OG, và Twitter Card từ một{% seo %}shortcode.eleventy-plugin-metagen(tannerdolby) — granular, parameterized meta-tag generation khi bạn muốn fine control.@11ty/eleventy-img— image optimization; đó v3 Image Transform plugin auto-stampswidth/height, xây dựngsrcset, và emits AVIF/WebP.@quasibit/eleventy-plugin-sitemap— sitemap generation với multilingual alternate links.@quasibit/eleventy-plugin-schema— JSON-LD (BlogPosting,WebPage).@11ty/eleventy-plugin-rss— RSS/Atom feeds (đã cập nhật cho v3).- Lighthouse / PageSpeed Insights — verify đó Core Web Vitals của bạn static output nên là acing.
- Google Search Console URL Inspection — xác nhận đó được kết xuất HTML matches của bạn được xây dựng HTML (điều này nên, since có không có gì để render) và đó canonicals resolve.
- Screaming Frog / Ahrefs Site Audit — crawl đó được xây dựng site để catch bị thiếu các tiêu đề, bị thiếu canonicals, trailing-slash duplicates, và orphaned output files.
Eleventy SEO anti-patterns
Concrete mistakes I see on real Eleventy các trang — mỗi một of them xuất hiện từ treating Eleventy sạch HTML output as nếu điều này đã là finished SEO hoạt động, khi đây là chỉ đó starting point.
Assuming Eleventy “xử lý SEO”
Đó mistake: Shipping một site on đó strength of Eleventy zero-JS output và Lighthouse 99–100 scores, không có bao giờ thêmột tiêu đề, mô tả meta, hoặc canonical.
Vì sao đây là sai: Eleventy chỉ xử lý kết xuất — điều này xây dựng sạch HTML và
dừng ở đó. Fast, crawlable HTML với không <title> tag vẫn không going để xếp hạng
cho bất cứ điều gì cụ thể; Google cần đó thực tế on-trang các tín hiệu, và none of them
là generated cho bạn.
Điều cần làm thay vì: Xây dựng đó SEO meta tags vào của bạn base layout on day một, trước khi bạn ghi một single nội dung trang — see đó Advanced tab “Meta tags in the base layout” (bản dịch) «Meta tags trong đó base layout» section. Mỗi trang nên inherit tiêu đề, mô tả, và canonical từ đó dữ liệu cascade tự động.
Forgetting đó canonical hoàn toàn
Đó mistake: Leaving <link rel="canonical"> out of đó layout vì điều này
“felt automatic” (bản dịch) «felt tự động» — điều này không.
Vì sao đây là sai: Eleventy có không được xây dựng-trong canonical. Không có một, bạn là
relying on Google để guess đó được ưu tiên URL, mà matters hơn điều này seems
khi trailing-slash variants, ?utm_ params, hoặc paginated các trang enter đó
picture.
Điều cần làm thay vì: Derive điều này khi trong eleventyComputed —
canonical: (data) => `${data.site.url}${data.page.url}` — so mỗi trang nhận
một correct self-referencing canonical với zero theo-trang effort.
Shipping không có một sitemap
Đó mistake: Assuming một sitemap nhận generated as part of đó xây dựng, đó giống nhau way Eleventy generates đó HTML files.
Vì sao đây là sai: Điều này không. MỘT bị thiếu sitemap không break crawling on một nhỏ site, nhưng on bất cứ điều gì với hơn một handful of các trang điều này làm chậm phát hiện of new và đã cập nhật nội dung.
Điều cần làm thay vì: Thêmột sitemap.xml.njk template đó loops over
collections.all, hoặc install @quasibit/eleventy-plugin-sitemap. Either way,
tag utility các trang eleventyExcludeFromCollections: true so they không leak vào
điều này.
Letting unoptimized images undo đó speed advantage
Đó mistake: Dropping thô JPEGs/PNGs straight vào templates vì “the site is already fast” (bản dịch) «đó site là đã fast» thanks để zero JS.
Vì sao đây là sai: MỘT zero-JS homepage với một 4 MB hero image vẫn fails LCP và
CLS — đó JS advantage không touch image weight hoặc bị thiếu width/height
các thuộc tính.
Điều cần làm thay vì: Chạy images qua @11ty/eleventy-img (đó Image
Transform plugin trong v3), mà auto-stamps width/height, xây dựng srcset, và
emits AVIF/WebP — thì override trên-đó-fold heroes để
loading="eager" fetchpriority="high" so they không nhận lazy-loaded out of của bạn
LCP window.
Inconsistent trailing slashes
Đó mistake: Linking để /about trong some templates và /about/ trong others,
hoặc letting một chuyển hướng layer paper over cả hai existing.
Vì sao đây là sai: Eleventy default output là /about/ (một directory với an
index.html). Mixed liên kết nội bộ split giá trị liên kết và ngân sách crawl across hai
URLs đó render đó giống nhau nội dung — một duplicate-nội dung own-goal bạn đã tạo
yourself, không một Eleventy đã tạo cho bạn.
Điều cần làm thay vì: Pick một form (Eleventy default trailing slash là đó
path of least resistance) và enforce điều này trong mỗi liên kết nội bộ và trong
permalink overrides. Spot-kiểm tra với một crawl — my
Chuyển hướng Checker sẽ surface chuyển hướng chains nếu một
slash mismatch là đang papered over với 301s thay vì fixed tại đó nguồn.
Dùng Disallow để try để deindex một trang
Đó mistake: Thêmột Disallow rule trong robots.txt để xóa một trang đó là
đã được lập chỉ mục.
Vì sao đây là sai: Disallow chặn crawling, không lập chỉ mục. Nếu đó trang là
đã được lập chỉ mục, blocking đó crawl chỉ có nghĩa là Google có thể không lâu hơn see một
noindex tag bạn thêm sau đó — đó URL có thể persist trong đó chỉ mục với không snippet.
Điều cần làm thay vì: Thêm <meta name="robots" content="noindex"> để đó trang
(qua front quan trọng hoặc một directory dữ liệu file) và let Google crawl điều này dài đủ
để see và honor đó tag. Chỉ thêm Disallow cho nội dung bạn không bao giờ muốn được crawl
ngay từ đầu.
Tự kiểm tra: Eleventy SEO
Five nhanh cácâu hỏi on optimizing an Eleventy (11ty) site cho tìm kiếm. Pick an câu trả lời cho mỗi, thì kiểm tra.
Các tài nguyên worth của bạn time
My related writing
- JavaScript SEO: MỘT Definitive Hướng dẫn — kết xuất, DOM parity, và vì sao static/prerendered output (Eleventy default) là đó thấp-risk end of đó spectrum.
- Đó Beginner Hướng dẫn để SEO kỹ thuật — nơi kết xuất architecture và on-trang configuration fit trong đó bigger picture.
My speaking
- Cách Tìm kiếm Hoạt động (SlideShare) — my walkthrough of crawling, kết xuất, lập chỉ mục, và xếp hạng. (My standing disclaimer áp dụng: “This is my understanding of systems… not going to be 100% complete or accurate.” (bản dịch) «Này là my understanding of các hệ thống… không going để là 100% hoàn tất hoặc chính xác.»)
Từ khoảng đó ngành
- Eleventy tài liệu — đó chính nguồn cho mọi thứ trong này hướng dẫn.
- Eleventy Image plugin — đó v3 Image Transform path để responsive, CLS-safe images.
- eleventy-plugin-seo (artstorm) — đó leading meta-tag plugin README và config reference.
- @quasibit/eleventy-plugin-sitemap — sitemap generation với multilingual alternates.
- Tạo một sitemap cho của bạn Eleventy website (DEV.để) — một clear walkthrough of đó manual
collections.alltemplate approach. - Thêm robots.txt để an Eleventy site (Mike Fallows) — passthrough so với. environment-cụ thể template generation.
- Thêm dữ liệu có cấu trúc để an Eleventy blog (Maxi Vanov) — manual JSON-LD patterns beyond BlogPosting.
Nhật ký thay đổi
Đã cập nhật 22 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 22 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 8 thg 8, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.
Đã cập nhật 17 thg 7, 2026.
Tóm tắt biên tập và chi tiết thay đổi đã ghi nhận.Chi tiết thay đổi
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
-
Ghi chú thay đổi chi tiết hiện chỉ có bằng tiếng Anh.
Không thể so sánh đầy đủ — không có bản lưu trước đó cho lần sửa đổi này.