Türkçe çeviri: Jekyll SEO
nasıl -e optimize Jekyll siteler bençin arama — neden onun static HTML dır crawler-friendly tarafından default, plus jekyll-seo-tag ve jekyll-sitemap plugins, permalinks, collections, robots.txt, ve GitHub sayfalar plugin whitelist.
Diller
Bu sayfada 1 kanıt sinyali
- Bağlantılı kaynak verileridependency liste
Jekyll outputs flat, static HTML — crawlers al complete bençerik on ilk fetch, ile no JavaScript rendering delay. bu nedenle SEO çalışması değildir fighting framework; o's configuration. Install jekyll-seo-tag (title, description, canonical, Open Graph, Twitter Card, JSON-LD) ve jekyll-sitemap (sitemap.xml), ve ayarla url: in _config.yml veya her ikisi produce broken output. seç temiz permalinks (/:title/, değil date-based) bençin evergreen bençerik. oluştur robots.txt yourself — Jekyll won't. Watch two GitHub sayfalar traps: plugin whitelist (yalnızca bir düzeltilmiş ayarla runs olmadan bir GitHub Actions oluştur) ve baseurl misconfiguration on project siteler, hangi breaks her canonical URL.
TL;DR — Jekyll builds sizin whole site -e plain HTML files ahead of time, bu nedenle Google sees sizin bençerik on ilk visit — no waiting bençin JavaScript. şu’s bir great başlangıç benşaret et bençin SEO. çalışır dır in setup: install two plugins (
jekyll-seo-tagbençin meta tags,jekyll-sitemapbençin sizin sitemap), ayarla sizin site URL in config, seç temiz URLs, ve ekle birrobots.txtyourself.
ne Jekyll dır
Jekyll dır bir static site generator — bir araç şu turns sizin bençerik (yazılmış in
Markdown) ve templates -e finished HTML files önce anyone visits. o’s
yazılmış in Ruby, ve o’s motor behind GitHub sayfalar, bu nedenle -erseniz’ve ever
pushed bir project’s docs veya bir personal blog -e bir github.io adres, siz’ve
probably kullanılan Jekyll olmadan thinking hakkında o. Evidence for this claim Jekyll transforms source content and templates into a static website and is supported by GitHub Pages. Scope: Jekyll and GitHub Pages. Confidence: high · Verified: Jekyll documentation GitHub Pages: Jekyll
önemli part bençin SEO: çünkü Jekyll produces plain HTML files, bir arama motor alır sizin complete bençerik moment o fetches sayfa. orada’s no JavaScript şu sahiptir -e çalıştır ilk. şu removes bir entire başarısızlık mode -den table — o yapmaz guarantee dizine ekleme veya sıralamalar tarafından itself, since şu hâlâ depends on sizin bençerik, configuration, ve metadata covered below.
ne Jekyll yapar değil yap bençin siz
burada’s catch beginners hit: Jekyll dır crawler-friendly, ama o değildir “SEO-friendly” out of box. bir default Jekyll theme çoğu zaman ships ile no title tags, meta descriptions, veya structured data at tümü. siz sahip -e ekle şunlar. good news dır two resmî plugins yap almost tümü of o:
jekyll-seo-tag— adds sizin title tag, meta description, canonical URL, ve social-sharing tags automatically.jekyll-sitemap— builds sizinsitemap.xmlautomatically. Evidence for this claim The jekyll-seo-tag and jekyll-sitemap plugins generate SEO tags and sitemap files for Jekyll sites. Scope: Named Jekyll plugins. Confidence: high · Verified: Jekyll SEO Tag Jekyll Sitemap
five things -e al yapğru
- Install
jekyll-seo-tagve put{% seo %}in sizin layout’s<head>. - Install
jekyll-sitemapbu nedenle arama motorları al bir liste of sizin sayfalar. - ayarla
url:in_config.yml-e sizin gerçek domain — her ikisi plugins ihtiyaç duy o, veya sizin canonical URLs ve sitemap benşaret et atlocalhostve break. - kullan bir custom domain, değil free
username.github.io/repoadres, bençin herhangi bir site nerede sıralama önem taşır. - ekle bir
robots.txtyourself — Jekyll yapmaz oluştur bir.
GitHub sayfalar surprise
-erseniz ana makine on GitHub sayfalar, siz -ebilir’t sadece install herhangi bir plugin siz iste. GitHub
runs Jekyll in bir locked-down mode şu yalnızca izin verir bir kısa liste of plugins.
Thankfully jekyll-seo-tag ve jekyll-sitemap dır her ikisi on şu liste — bu nedenle
essentials çalışır. bençin anything fancier siz’d ihtiyaç duy bir farklı oluştur setup (covered
in Advanced tab).
iste tam sürüm — plugin whitelist, baseurl bug şu breaks
canonical URLs, permalinks, collections, ve custom structured data? Switch -e
Advanced tab.
TL;DR — Jekyll emits flat static HTML at oluştur time, bu nedenle bençerik dır in raw response on ilk tarama — no Web Rendering Service, no Wave 2 delay. SEO çalışır dır configuration, değil architecture. Install
jekyll-seo-tag(title, description, canonical, OG, Twitter Card, JSON-LD) vejekyll-sitemap(sitemap.xml); her ikisi requireurl:in_config.ymlveya onlar produce broken output. kullan temiz permalinks (/:title/) üzerinde date-based ones bençin evergreen bençerik. Two GitHub sayfalar traps dominate: plugin whitelist (GitHub builds ile--safe; non-whitelisted plugins ihtiyaç duy bir GitHub Actions oluştur) ve bir missingbaseurlon project siteler, hangi breaks her generated canonical URL. GitHub sayfalar ayrıca pins specific plugin sürümler (3.10.0 temel, olderjekyll-seo-tag/jekyll-sitemapreleases), değil sadece hangi plugins çalıştır. Collections ihtiyaç duyoutput: trueveya onlar’re never rendered. Drafts, future-dated posts, vepublished: falsebelgeler dır excluded -den bir olağbir oluştur, ve--incrementaldır experimental — yapmayın kullan o bençin production deploys. verobots.txtdeğildir auto-generated — yap o yourself.
neden Jekyll’s static output dır good bençin SEO
Jekyll dır bir static site generator: o runs sizin Markdown ve Liquid templates aracılığıyla bir oluştur adım ve emits finished HTML, once, önce herhangi bir istek. şu timing dır whole SEO advantage. Evidence for this claim Jekyll processes text and templates into static files during a build. Scope: Jekyll build architecture. Confidence: high · Verified: Jekyll documentation
Google’s pipeline dır tarama → render → dizin, ve rendering JavaScript dır “bir separate adım” that sits in a queue — what people loosely call the “two-wave” süreç. Wave 1 fetches raw HTML ve indexes text ve bağlantılar immediately; Wave 2 queues sayfa bençin Web Rendering Service -e çalıştır JavaScript, “bir few seconds -e weeks” later depending on tarama bütçesi. ile Jekyll, Wave 1 zaten contains tümü sizin bençerik — orada’s no JavaScript required -e render body. Wave 1 = Wave 2. No rendering delay, no rendering budget spent. bu aynı argument şu yapar herhangi bir static site generator lowest-risk architecture bençin indexability.
downstream benefits izle:
- Faster TTFB. Pre-oluşturulmuş files sunulan -den bir CDN (GitHub sayfalar sits behind Fastly; Netlify/Vercel sahip onların kendi edges) anlamına gel no database sorgular ve no server processing — good bençin LCP ve rest of temel Web Vitals.
- No required JS payload bençin bençerik → daha iyi FCP ve LCP -den bir hydrating SPA.
- Proper HTTP status codes at CDN layer, değil client-side error handling.
ama none of şu changes fundamentals: static siteler hâlâ ihtiyaç duy meta tags, sitemaps, canonical URLs, structured data, ve good bençerik. Jekyll’s output dır crawler-friendly; metadata dır on siz.
GitHub sayfalar ve Jekyll SEO
en çok yaygın Jekyll deployment dır GitHub sayfalar — push -e bir branch ile sayfalar enabled ve GitHub auto-builds site. şu convenience comes ile SEO-relevant constraints.
Project siteler vs. kullanıcı/org siteler — URL decision
username.github.io/repo-name(bir project site) lives on bir shared subdomain ile thousands of diğer unrelated siteler. o çalışır fine bençin docs, demos, ve personal projects nerede URL itself yapmaz ihtiyaç duy -e carry sizin brand.- bir custom domain (benşaret et bir
CNAMEat GitHub sayfalar) puts site on bir URL siz control, ile HTTPS auto-provisioned tarafından GitHub. bençin bir site nerede domain itself önem taşır — bir benşletme site, bir blog siz’re building bir audience yaklaşık — bir custom domain -den başla avoids bir domain migration later.
-erseniz expect -e move -e bir custom domain eventually, ayarla o up early. herhangi bir
domain migration anlamına gelir 301 yönlendirmeler (jekyll-redirect-from handles bu) ve bir
period nerede inbound bağlantılar ve herhangi bir accumulated sinyaller benşaret et at eski URL —
avoidable churn -erseniz seç final domain up front yerine switching
later. bu bir migration-planning argument, değil bir claim şu bir github.io
subdomain dır penalized kendi başına.
baseurl — #1 canonical bug on project siteler
Project siteler live altında bir subfolder (/repo-name/). -erseniz yapmayın ayarla
baseurl: /repo-name in _config.yml, her canonical URL jekyll-seo-tag
generates — ve sizin benç bağlantılar — -ecek olmak yanlış, missing subfolder. bu
tek en çok yaygın canonical-URL bug on Jekyll project siteler. (kullanıcı/org siteler
sunulan at domain root yapmayın ihtiyaç duy baseurl.)
plugin whitelist
GitHub sayfalar runs Jekyll ile --safe flag ve yalnızca izin verir bir düzeltilmiş ayarla of
plugins. Evidence for this claim GitHub Pages builds Jekyll in safe mode and supports a documented set of plugins. Scope: GitHub Pages hosted builds. Confidence: high · Verified: GitHub Pages: Jekyll plugins SEO-relevant whitelisted ones:
jekyll-seo-tag✓jekyll-sitemap✓jekyll-redirect-from✓ (bençin 301s -dığınızda change URLs)jekyll-paginate✓
değil whitelisted (ve silently won’t çalıştır, veya -ecek error):
jekyll-last-modified-at— gerekli bençin accurate sitemap<lastmod>-den file timestamps- Custom structured-data plugins
- Anything dropped in bir
_plugins/folder
o’s değil sadece hangi plugins — o’s hangi sürümler
GitHub sayfalar yapmaz yalnızca restrict hangi plugins çalıştır; o pins exact sürüm
of her bir, ve şu oluştur environment itself dır pinned -e bir older Jekyll.
olarak of dependency liste’s son
update, hosted oluştur runs Jekyll 3.10.0 ile jekyll-seo-tag 2.8.0,
jekyll-sitemap 1.4.0, ve jekyll-feed 0.17.0 — -iken jekyllrb.com’s kendi
docs describe güncel upstream release, 4.4.1. bir behavior documented in bir
plugin’s latest README değildir guaranteed -e var ol in sürüm GitHub sayfalar
aslında runs; kontrol et pages.github.com/versions.json bençin pinned sürüm
önce relying on bir specific flag veya output. bir GitHub Actions oluştur sidesteps
bu de — siz control Gemfile, bu nedenle siz al sürümler siz pin, değil
GitHub’s.
GitHub Actions workaround
düzelt bençin whitelist değildir “add more gems” — o’s -e durdur letting GitHub yap
oluştur. çalıştır Jekyll yourself in CI (actions/jekyll-build-pages, veya oluştur
locally ve push _site/ -e deploy branch ile peaceiris/actions-gh-pages)
ve whitelist no longer uygulanır. Now herhangi bir plugin runs, ve siz seç
Jekyll ve plugin sürümler yerine inheriting GitHub’s pinned ayarla.
jekyll-seo-tag plugin
bu resmî, maintained plugin şu kapsar en çok of temel metadata
Jekyll yapmaz ekle kendi başına. tam olarak ne o emits depends on hangi sürüm
siz sahip installed, sizin _config.yml ve front önem taşır, ve whether sizin
layout aslında çbirğrılar {% seo %} — GitHub sayfalar, bençin instance, pins bir specific
sürüm yerine her zaman shipping latest release (daha on şu below).
kontrol et advanced usage rehber
bençin sizin sürüm’s exact output, ve yapğrula ne aslında landed tarafından grepping
sizin kendi oluşturulmuş HTML yerine assuming o’s complete.
Install:
# Gemfile
gem 'jekyll-seo-tag'# _config.yml
plugins:
- jekyll-seo-tag<!-- _layouts/default.html, before </head> -->
{% seo %}ne o generates automatically:
<title>— sayfa title ile site name appended (Page Title | Site Name)<meta name="description">— -dendescription:front önem taşır veya site description<link rel="canonical">— oluşturulmuş -densite.url+page.url- Open Graph tags (
og:title,og:description,og:url,og:site_name,og:image) - Twitter Card tags (
twitter:card,twitter:title,twitter:description,twitter:creator,twitter:image) - JSON-LD structured data (
BlogPostingbençin posts,WebSitebençin home sayfa) - sayfalama meta (sonraki/prev URLs)
Required _config.yml settings — olmadan bunlar plugin produces broken
output:
title: Your Site Title
description: Your site description
url: "https://yourdomain.com" # CRITICAL — drives canonical URL generation
author:
name: Patrick Stox
twitter: patrickstox
url: https://patrickstox.com # author disambiguation
twitter:
username: patrickstox
card: summary_large_imagePer-sayfa front önem taşır overrides:
---
title: "Jekyll SEO Guide"
description: "How to optimize Jekyll sites for search engines."
image:
path: /assets/jekyll-seo-og.png
width: 1200
height: 630
alt: "Jekyll SEO diagram"
canonical_url: "https://example.com/jekyll-seo/" # override if needed
robots: noindex # per-page noindex
seo:
type: BlogPosting # schema.org type override
date_modified: 2025-01-15 # dateModified override for JSON-LD
---Suppression (ne zaman sizin layout zaten outputs onun kendi):
{% seo title=false %} <!-- suppress the <title> -->
{% seo canonical=false %} <!-- suppress the canonical link -->bir gotcha worth flagging: çok söyleıda minimal themes (dahil minima) ship olmadan
jekyll-seo-tag wired in. Adding gem -e sizin Gemfile yapar nothing unless
theme’s layout aslında çbirğrılar {% seo %}.
Sitemaps ile jekyll-sitemap
aynı install pattern (Gemfile + _config.yml). o generates bir sitemaps.org-
compliant sitemap.xml at /sitemap.xml on her oluştur.
o requires url: in _config.yml — olmadan o, sitemap entries sahip no
domain.
Controlling <lastmod>, in priority sıra:
last_modified_at:in front önem taşır (en iyi — explicit control)- Post creation date (fallback — çoğu zaman yanlış bençin evergreen bençerik updated later)
- Filesystem modification date (gerektirir non-whitelisted
jekyll-last-modified-at)
en iyi practice: ekle last_modified_at: YYYY-MM-DD -e her post, ve bump o
-dığınızda update bençerik — şu’s freshness sinyal recrawl prioritization leans
on.
Excluding sayfalar:
# Per-page front matter
sitemap: false
# Global pattern (in _config.yml)
defaults:
- scope:
path: "assets/**/*.pdf"
values:
sitemap: falseKalıcı bağlantı yapılandırması
Permalinks dır ayarla globally in _config.yml veya overridden per sayfa in front önem taşır.
| Style | Pattern | SEO notes |
|---|---|---|
date (default) | /:categories/:year/:month/:day/:title.html | Date-heavy, fragile eğer post date changes |
pretty | /:categories/:year/:month/:day/:title/ | Trailing slash, no .html |
none | /:categories/:title.html | No date burial |
| Custom | /:title/ veya /:categories/:title/ | en çok control — recommended bençin evergreen bençerik |
Recommended bençin en çok siteler:
permalink: /:title/
# or
permalink: /:categories/:title/neden kaçın date-based URLs bençin evergreen posts:
- Changing bir post’s
date:front önem taşır changes onun URL → inbound bağlantılar break. - Deep hierarchy (
/2019/03/14/post-title/) buries bençerik bençin no neden. - (bençin news ve journalism, date URLs dır fine ve beklenen — bu bir per-context çbirğrı, değil bir universal kural.)
Collections ihtiyaç duy onların kendi permalink config:
collections:
case_studies:
output: true
permalink: /case-studies/:name/bir warning on changing patterns: once URLs dır dizine eklenmiş, switching permalink
styles requires 301 yönlendirmeler (kullan jekyll-redirect-from). Skip yönlendirmeler ve
siz break bağlantı değeri ve generate 404s in arama Console.
Collections ve SEO
Collections dır Jekyll’s custom bençerik types beyond posts ve sayfalar — docs sections, portfolio items, ekip members, durum studies, FAQs. Two requirements yap veya break onların SEO:
-
output: true-meli olmak ayarla. olmadan o, collection belgeler dır never rendered olarak individual HTML files ve therefore -ebilir’t olmak dizine eklenmiş. bu bir silent dizine ekleme killer — bençerik vardır in sizin repo ama never olur bir crawlable sayfa.collections: docs: output: true # REQUIRED for indexable pages permalink: /docs/:name/ -
her belge gerektirir front önem taşır — hatta bir empty
---block. olmadan o, Jekyll treats file olarak bir binary static file: no Liquid processing, no metadata, nojekyll-seo-tagintegration.
Note şu collections değildir included in RSS feeds (yalnızca posts dır). bençin büyük dokümantasyon siteler, collections dır genellikle yapğru structure anyway.
Publishing states ve incremental builds
Jekyll sahiptir several independent switches şu control ne aslında ends up in oluşturulmuş site. Mixing them up produces either sayfalar şu silently never al oluşturulmuş, veya draft/future bençerik şu ships -e production tarafından accident:
- Drafts (
_drafts/) dır excluded -den bir olağbir oluştur entirely. onlar yalnızca görün -dığınızda çalıştırbundle exec jekyll serve --drafts(veyabuild --drafts) locally — moving bir post -e_posts/ile bir gerçek date dır ne aslında publishes o. - Future-dated posts (bir
date:later -den güncel time) dır excluded tarafından default.future: truein_config.yml, veya--futureflag, bençerir them — handy bençin local preview, ama leaving o on in bir production config anlamına gelir scheduled posts go live moment siz oluştur, değil on onların intended date. published: falsein front önem taşır excludes bir belge -den oluştur regardless of onun date — bir separate switch -den drafts ve future posts, ve easy -e leave ayarla sonra testing bir sayfa siz meant -e ship.- Incremental regeneration (
--incremental) dır documented tarafından Jekyll olarak experimental, ve o tracks bir limited dependency graph — mainly bençerir ve layouts. bir sayfa şu iteratessite.postsveya diğer collection data (bir tag dizin, bir archive, related-posts logic) -ebilir go stale altında--incrementalolmadan Jekyll detecting şu underlying posts changed. yapmayın çalıştır o olarak part of bir production deploy; kullan bir fullbundle exec jekyll buildbençin anything siz’re pushing live.
önce trusting herhangi bir of bunlar, oluştur olmadan flags siz kullan locally
(--drafts, --future, --incremental) ve yapğrula output in _site/
matches ne siz intend -e publish — safest default bençin bir deploy pipeline
dır bir temiz, full, non-incremental oluştur.
Custom head partials ile Liquid
ne zaman jekyll-seo-tag değildir enough, siz oluştur sizin kendi _includes/head.html:
<head>
<meta charset="UTF-8">
<title>
{% if page.title %}{{ page.title }} | {{ site.title }}
{% else %}{{ site.title }}{% endif %}
</title>
<meta name="description" content="
{%- if page.description -%}{{ page.description }}
{%- elsif page.excerpt -%}{{ page.excerpt | strip_html | strip_newlines }}
{%- else -%}{{ site.description }}
{%- endif -%}">
<link rel="canonical" href="{{ page.url | prepend: site.url }}">
{% seo %}
</head>Key Liquid filters bençin SEO:
| strip_html— removes tags -den bir auto-excerpt (essential bençin temiz descriptions)| strip_newlines— removes line breaks -den excerpts| truncate: 160— bir optional template-side character cap, değil bir Google limit. Prefer bir authored, sayfa-specific description ve preview rendered snippet; fit varies tarafından sorgu, device, language, ve script.| prepend: site.url— builds absolute URLs bençin canonical ve OG tags| date_to_xmlschema— ISO 8601 dates bençin JSON-LDdatePublished/dateModified| default: fallback— fallback ne zaman bir variable dır nil
Custom JSON-LD beyond ne jekyll-seo-tag emits:
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Article",
"headline": {{ page.title | jsonify }},
"datePublished": "{{ page.date | date_to_xmlschema }}",
"dateModified": "{{ page.last_modified_at | default: page.date | date_to_xmlschema }}",
"author": {
"@type": "Person",
"name": "{{ page.author.name | default: site.author.name }}",
"url": "{{ page.author.url | default: site.author.url }}"
}
}
</script>robots.txt değildir auto-generated
Jekyll yapar değil oluştur robots.txt. siz yap o yourself in site root.
bençer bir empty front-önem taşır block bu nedenle Liquid süreçler file (bu nedenle {{ site.url }}
resolves):
---
---
User-agent: *
Allow: /
Sitemap: {{ site.url }}/sitemap.xmlolmadan bu, orada’s no sitemap reference in robots.txt — ve bazı crawlers kullan
şu olarak bir discovery mechanism. (robots.txt controls tarama, değil dizine ekleme —
bençin full picture see tarama.)
yaygın Jekyll SEO myths
“Jekyll handles SEO automatically.” static output dır crawler-friendly, ama metadata requires explicit setup. Default themes çoğu zaman ship ile no SEO tags at tümü.
“GitHub Pages is fine for SEO — it’s free.” GitHub sayfalar itself dır fine —
static output dır crawler-friendly regardless of ana makine. catches dır plugin
whitelist (ve specific sürümler o pins, değil sadece hangi plugins) ve,
eğer sizin brand depends on URL, deciding on bir custom domain önce siz oluştur
bir audience on github.io.
“Static sites don’t need sitemaps.” Google -ebilir bul sayfalar via bağlantılar, ama bir
sitemap speeds discovery ve carries <lastmod> sinyaller. jekyll-sitemap yapar o
trivial.
“Jekyll is dead.” o’s in mature maintenance mode — v4.4,1 shipped in January 2025. Minimal yeni features, ama maintained ve secure, ve GitHub sayfalar -ecek support o indefinitely. bençin simple blogs ve docs, o’s bir solid, boring choice.
“I can use any plugin on GitHub Pages.” No — --safe plus bir düzeltilmiş whitelist.
düzelt dır GitHub Actions, değil daha gems.
nerede bu fits
Jekyll dır bir of six generators in static site generators küme — GitHub sayfalar default ve bir en çok developers meet ilk. bençin broader context on nasıl Google renders JavaScript ve -dığınızda aslında ihtiyaç duy o, see JavaScript SEO hub. oluştur-freshness discipline şu uygulanır -e her SSG — bir static site dır yalnızca olarak güncel olarak onun son oluştur — uygulanır -e Jekyll de: edits yapmayın ulaş arama motorları until siz rebuild ve redeploy.
AI özet
bir condensed take on Advanced sürüm:
- Jekyll dır bir Ruby static site generator ve motor behind GitHub sayfalar. o emits flat HTML at oluştur time, bu nedenle bençerik dır in raw response on ilk tarama — no JavaScript rendering adım, no Wave 2 delay. şu’s temel SEO advantage, shared tarafından tümü static site generators.
- ** SEO çalışması dır configuration, değil architecture.** Default themes çoğu zaman sahip no SEO metadata at tümü.
jekyll-seo-tag(resmî plugin) auto-generates title, description, canonical, Open Graph, Twitter Card, ve JSON-LD (BlogPosting/WebSite). ekle{% seo %}-e sizin layout’s<head>. Overridable per sayfa in front önem taşır.jekyll-sitemapauto-generatessitemap.xml. her ikisi plugins requireurl:in_config.ymlveya output dır broken (canonical/sitemap benşaret et at localhost).- Permalinks: prefer
/:title/veya/:categories/:title/üzerinde date-based URLs bençin evergreen bençerik (date URLs break eğer post date changes). - Collections ihtiyaç duy
output: true(veya onlar’re never rendered olarak sayfalar) ve front önem taşır on her belge (veya no metadata processing). - Publishing states: drafts (
_drafts/), future-dated posts, vepublished: falsebelgeler dır tümü excluded -den bir olağbir oluştur unless siz explicitly opt in (--drafts,--future).--incrementaldır experimental ve -ebilir miss sayfalar şu depend onsite.posts— yapmayın kullan o bençin bir production deploy. robots.txtdeğildir auto-generated — oluştur o manually (ile empty front önem taşır bu nedenle Liquid resolves{{ site.url }}inSitemap:line).- Two GitHub sayfalar traps: plugin whitelist (
--safeoluştur; yalnızcajekyll-seo-tag,jekyll-sitemap,jekyll-redirect-from,jekyll-paginateamong SEO plugins — others ihtiyaç duy bir GitHub Actions oluştur), ve missingbaseurlon project siteler, hangi breaks her canonical URL. GitHub sayfalar ayrıca pins specific plugin sürümler (e.g. Jekyll 3.10.0 temel), hangi -ebilir trail latest upstream release. - eğer bir custom domain önem taşır -e sizin brand, ayarla o up early yerine on
username.github.io/repo— moving domains later anlamına gelir 301s ve bir period nerede inbound bağlantılar benşaret et at eski URL. GitHub sayfalar ayrıca pins specific plugin sürümler (değil sadece hangi plugins), hangi -ebilir trail latest upstream release. - oluştur freshness uygulanır olarak -e herhangi bir SSG: changes yalnızca ulaş arama sonra bir rebuild + redeploy.
resmî dokümantasyon
birincil-kaynak dokümantasyon — -den Jekyll, onun plugins, GitHub sayfalar, ve arama motorları.
Jekyll
- Jekyll docs — dokümantasyon hub.
- Permalinks — oluşturulmuş-in styles ve custom patterns.
- Front önem taşır — YAML block şu drives per-sayfa metadata.
- Collections — custom bençerik types ve
output: truerequirement. - Plugins — nasıl Jekyll’s plugin system çalışır.
- Variables —
site/pagevariables ve Liquid filters kullanılan in head partials.
resmî plugins
- jekyll-seo-tag — metadata plugin, plus onun advanced usage rehber.
- jekyll-sitemap — automatic
sitemap.xml. - jekyll-yönlendirme—den — 301 yönlendirmeler -dığınızda change URLs.
GitHub sayfalar
- hakkında GitHub sayfalar ve Jekyll — nasıl auto-oluştur çalışır.
- hakkında custom domains ve GitHub sayfalar — custom-domain setup.
- sayfalar.github.com/sürümler.json — live plugin whitelist ve locked dependency sürümler.
- Jekyll releases ve endoflife.date/jekyll — sürüm ve maintenance status.
arama motorları
- JavaScript SEO basics — tarama → render → dizin phases (two-wave rendering) şu bir static oluştur lets siz skip bençin bençerik.
- In-Depth rehber -e nasıl Google arama çalışır — nerede rendering sits in pipeline.
- temel Web Vitals (web.dev) — performance metrikler bir fast static site benefits -den structurally.
Quotes -den kaynak
vardır no on-record quotes -den Google veya Bing reps specifically hakkında Jekyll. Google yapmaz comment on individual static site generators. SEO durum bençin Jekyll rests on Google’s general rendering ve static-HTML rehberlik, hangi uygulanır -e herhangi bir static site.
Google — rendering dır bir separate, queued adım ( thing Jekyll’s static output removes -den critical path)
- “During the crawl, Google renders the page and runs any JavaScript it finds using a recent version of Chrome.” — Google arama Central docs. ile Jekyll, orada’s no JavaScript gerekli -e render body, bu nedenle bu adım maliyetler siz nothing. Jump -e quote
- “Rendering is important because websites often rely on JavaScript to bring content to the page, and without rendering Google might not see that content.” — ben.e., eğer sizin bençerik dır zaten in static HTML (olarak o dır ile Jekyll), rendering -ebilir’t maliyet siz görünürlük. Jump -e quote
Jekyll SEO kontrol listesi
bir scannable geç -e yapğrula sizin Jekyll site dır ayarla up -e rank:
-
url:dır ayarla in_config.yml-e sizin gerçek production domain (değillocalhost:4000). - bençin bir GitHub sayfalar project site,
baseurl: /repo-namedır ayarla (skip on kullanıcı/org root siteler). -
jekyll-seo-tagdır installed ve theme layout aslında çbirğrılar{% seo %}in<head>. -
jekyll-sitemapdır installed ve/sitemap.xmldır generating. - Sitemap dır submitted in Google arama Console ve Bing Webmaster araçlar.
-
title:,description:, veauthor:dır ayarla in_config.yml. - her post/sayfa sahiptir bir explicit
description:(yapmayın rely on auto-excerpt). -
last_modified_at:dır on posts ve bumped ne zaman bençerik changes. - Permalinks kullan
/:title/veya/:categories/:title/bençin evergreen bençerik (değil date default). - bir
robots.txtvardır (ile empty front önem taşır) ve references sitemap. - her collection şu -meli olmak dizine eklenmiş sahiptir
output: true. - her collection belge sahiptir front önem taşır (hatta bir empty
---). - bir custom domain dır configured (HTTPS auto-provisioned), değil bare
github.iosubdomain. - URL/permalink changes dır paired ile
jekyll-redirect-from301s. - Images dır compressed önce commit (Jekyll yapmaz optimize them at oluştur).
- bir trailing-slash convention dır enforced via permalink style (no
/page/vs/pageduplicates). - Production builds çalıştır olmadan
--draftsveya--future, ve no sayfa siz intend -e ship hâlâ sahiptirpublished: false. - Production deploys kullan bir full
bundle exec jekyll build, değil--incremental(experimental, ve -ebilir misssite.posts-dependent sayfalar).
Jekyll SEO — kısa başvuru
** two essential plugins**
| Plugin | yapar | Whitelisted on GitHub sayfalar? | gerektirir |
|---|---|---|---|
jekyll-seo-tag | Title, description, canonical, OG, Twitter Card, JSON-LD | Yes ✓ | url:, {% seo %} in <head> |
jekyll-sitemap | Auto sitemap.xml | Yes ✓ | url: |
jekyll-redirect-from | 301 yönlendirmeler | Yes ✓ | redirect_from: in front önem taşır |
jekyll-last-modified-at | Filesystem <lastmod> | No ✗ | GitHub Actions oluştur |
Required _config.yml keys (veya output breaks)
| Key | neden |
|---|---|
url: | Canonical URLs + sitemap entries; olmadan o → localhost |
baseurl: | Project siteler altında /repo/ — olmadan o → broken canonicals |
title: / description: | Defaults bençin jekyll-seo-tag |
author: | Author info in JSON-LD |
Kalıcı bağlantı stilleri
permalink: değer | Output | kullan bençin |
|---|---|---|
date (default) | /cat/2019/03/14/title.html | kaçın bençin evergreen |
pretty | /cat/2019/03/14/title/ | Date-relevant bençerik |
none | /cat/title.html | No date burial |
/:title/ | /title/ | en çok evergreen siteler |
Kısa bilgiler
- Jekyll output dır static HTML → no Wave 2 rendering delay; bençerik in ilk fetch.
robots.txtdır değil auto-generated — oluştur o (ile empty front önem taşır).- Collections ihtiyaç duy
output: trueve front önem taşır, veya onlar yapmayın dizin. - GitHub sayfalar builds ile
--safe+ bir plugin whitelist — non-whitelisted plugins ihtiyaç duy bir GitHub Actions oluştur. - güncel upstream Jekyll: v4.4,1 (Jan 2025); GitHub sayfalar runs bir locked
v3.10,0 ile onun kendi pinned plugin sürümler (
jekyll-seo-tag2.8.0,jekyll-sitemap1.4.0,jekyll-feed0.17.0) — kontrol et sayfalar.github.com/sürümler.json bençin güncel liste. - eğer bir custom domain önem taşır -e sizin brand, ayarla o up önce building bir
audience on
username.github.io/repo— avoids bir later domain migration.
oluştur ve kontrol et sizin Jekyll site locally
önce trusting production, oluştur locally ve verify sizin metadata dır aslında in HTML.
macOS / Linux
# Install dependencies and serve locally (defaults to http://localhost:4000)
bundle install
bundle exec jekyll serve
# Build the production site into _site/ (override the dev url)
JEKYLL_ENV=production bundle exec jekyll build
# Confirm jekyll-seo-tag actually emitted a canonical + title into a built page
grep -i 'rel="canonical"' _site/index.html
grep -i "<title>" _site/index.html
# Confirm the sitemap was generated and points at your real domain (not localhost)
grep -i "<loc>" _site/sitemap.xml | headWindows (PowerShell)
# Install dependencies and serve locally
bundle install
bundle exec jekyll serve
# Build the production site (set the env var for this command)
$env:JEKYLL_ENV="production"; bundle exec jekyll build
# Confirm canonical + title made it into the built HTML
Select-String -Path _site\index.html -Pattern 'rel="canonical"'
Select-String -Path _site\index.html -Pattern "<title>"
# Confirm the sitemap was generated with your real domain
Select-String -Path _site\sitemap.xml -Pattern "<loc>" | Select-Object -First 10eğer <loc> entries veya canonical göster localhost:4000, sizin url: değildir ayarla (veya
JEKYLL_ENV=production wasn’t applied) — düzelt _config.yml önce deploying.
bir starter robots.txt bençin Jekyll
Save bu olarak robots.txt in sizin site root. empty front-önem taşır block dır ne
yapar Liquid süreç file bu nedenle {{ site.url }} resolves:
---
---
User-agent: *
Allow: /
Sitemap: {{ site.url }}/sitemap.xml araçlar bençin Jekyll SEO
jekyll-seo-tag— resmî metadata plugin (title, description, canonical, OG, Twitter Card, JSON-LD). tek biggest SEO win bençin bir Jekyll site.jekyll-sitemap— resmî automaticsitemap.xml.jekyll-redirect-from— generate 301 yönlendirmeler in front önem taşır -dığınızda change permalinks.- GitHub Actions (
actions/jekyll-build-pages,peaceiris/actions-gh-pages) — oluştur Jekyll yourself -e escape GitHub sayfalar plugin whitelist ve çalıştır herhangi bir plugin. - Google arama Console — verify site, submit sitemap, ve watch dizine ekleme/coverage. Essential bençin bir yeni Jekyll site.
- Bing Webmaster araçlar — submit sitemap (-ebilirsiniz import credentials -den GSC).
- View kaynak / URL Inspection — yapğrula sizin title, meta description, ve canonical dır in raw HTML (onlar -meli olmak, since Jekyll dır static).
- PageSpeed Insights / web.dev — kontrol et temel Web Vitals; bir static Jekyll site -meli score well, ama unoptimized images dır yaygın drag.
Jekyll SEO mistakes -e kaçın
Concrete mistakes kişiler aslında yap ayarlama up Jekyll bençin arama — prevention, değil diagnosis.
url: içinde _config.yml değerini ayarlamadan bırakma
her ikisi jekyll-seo-tag ve jekyll-sitemap oluştur absolute URLs -den site.url.
Skip o ve sizin canonical tags ve sitemap <loc> entries either benşaret et at
localhost:4000 ( dev default) veya come out ile no domain at tümü — şu’s
canonical URLs ve bir sitemap şu actively mislead crawlers yerine helping
them. yap bu instead: ayarla url: -e sizin gerçek production domain in
_config.yml önce ilk deploy, ve grep oluşturulmuş _site/ output bençin
localhost -e yapğrula o didn’t leak aracılığıyla.
Skipping baseurl on bir GitHub sayfalar project site
username.github.io/repo-name siteler live altında bir /repo-name/ subfolder. eğer
baseurl: /repo-name değildir ayarla, her canonical URL jekyll-seo-tag generates —
ve sizin benç bağlantılar — dır missing şu subfolder, pointing at bir URL şu
yapmaz var ol. bu tek en çok yaygın canonical-URL bug on Jekyll project
siteler. yap bu instead: ayarla baseurl: on project siteler (kullanıcı/org siteler at
domain root yapmayın ihtiyaç duy o), ve spot-kontrol et bir oluşturulmuş sayfa’s canonical karşı
onun gerçek, live URL.
Assuming bir collection dır indexable olmadan output: true
Collections (docs sections, durum studies, ekip bios) dır Jekyll’s custom bençerik
type, ama olmadan output: true in _config.yml, belgeler dır never
rendered olarak individual HTML files — bençerik sits in sizin repo ve basitçe
never olur bir crawlable sayfa. orada’s no error, no warning, sadece sayfalar şu
never var ol. yap bu instead: ayarla output: true on her collection meant
-e olmak kamuya birçık, ve sonra bir oluştur, yapğrula beklenen HTML files aslında landed
in _site/.
kullanarak date-based permalinks bençin evergreen bençerik
Jekyll default permalink style (/:categories/:year/:month/:day/:title.html)
bakes publish date -e URL. Change post’s date: front önem taşır later
— hangi kişiler yap, çoğu zaman sadece -e bump o bençin bir re-publish — ve URL changes
ile o, breaking her inbound bağlantı ve forcing bir yönlendirme cleanup siz didn’t
plan bençin. yap bu instead: kullan /:title/ veya /:categories/:title/ bençin
evergreen posts; reserve date-based permalinks bençin genuinely date-relevant
bençerik like news, nerede date belongs in URL.
Trying -e install bir non-whitelisted plugin on GitHub sayfalar ve expecting o -e çalıştır
GitHub builds Jekyll ile --safe flag, hangi silently skips veya errors on
herhangi bir plugin outside bir düzeltilmiş whitelist — dropping bir gem like
jekyll-last-modified-at veya bir custom structured-data plugin -e _plugins/
ve pushing o yapmaz yap o çalıştır on default GitHub sayfalar oluştur. yap bu
instead: kontrol et plugin karşı
sayfalar.github.com/sürümler.json ilk;
eğer o’s değil listed, oluştur ile GitHub Actions (actions/jekyll-build-pages veya bir
local oluştur pushed via peaceiris/actions-gh-pages) yerine fighting
whitelist.
Assuming Jekyll ships bir robots.txt
Jekyll yapmaz generate robots.txt — orada’s no plugin toggle, no default
file, nothing. bir site ile no robots.txt at tümü değildir broken bençin dizine ekleme, ama
o ayrıca sahiptir no Sitemap: reference bençin crawlers şu kullan robots.txt olarak bir
discovery mechanism. yap bu instead: oluştur robots.txt yourself in
site root ile bir empty front-önem taşır block (--- ---) bu nedenle Liquid süreçler o
ve {{ site.url }} resolves in Sitemap: line.
test et yourself: Jekyll SEO
Five quick questions on optimizing Jekyll siteler bençin arama. seç bir yanıt her biri bençin, o hâlde kontrol et.
kaynaklar worth sizin time
benim yazma
- JavaScript SEO: bir Definitive rehber — rendering, DOM parity, ve neden static/prerendered output (like Jekyll’s) dır low-risk end of spectrum.
- Beginner’s rehber -e teknik SEO — nerede rendering architecture ve sitemaps fit in bigger picture.
benim speaking
- nasıl arama çalışır (SlideShare) — benim walkthrough of tarama, rendering, dizine ekleme, ve sıralama. (benim standing disclaimer uygulanır: “This is my understanding of systems… not going to be 100% complete or accurate.”)
-den yaklaşık industry
- Jekyll docs — resmî dokümantasyon, dahil permalinks ve collections.
- jekyll-seo-tag — resmî metadata plugin ve onun advanced usage rehber.
- jekyll-sitemap — resmî sitemap plugin.
- hakkında GitHub sayfalar ve Jekyll — GitHub’s kendi docs on oluştur süreç ve constraints.
- sayfalar.github.com/sürümler.json — authoritative GitHub sayfalar plugin whitelist ve locked sürümler.
- Google arama Central — JavaScript SEO basics — rendering phases bir static oluştur lets siz skip.
- CloudCannon — jekyll-seo-tag showcase — bir practitioner walkthrough of plugin.
Değişiklik günlüğü
8 Ağu 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
27 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.
18 Tem 2026 tarihinde güncellendi.
Editoryal özet ve kaydedilen değişiklik ayrıntıları.Değişiklik ayrıntıları
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
-
Ayrıntılı değişiklik notları şu anda İngilizce olarak mevcut.
Tam karşılaştırma kullanılamıyor — bu sürüm için önceki anlık görüntü arşivlenmemiş.