Di 24 Template per Halaman semua template ngasilin halaman HTML buat manusia. Empat template di bab ini beda: outputnya file teks buat mesin, yaitu crawler mesin pencari dan AI agent.

Semua template di bab ini punya kesamaan:

  1. Wajib Liquid, gak bisa JSON, karena outputnya bukan HTML.
  2. Shopify udah nyediain versi default yang bagus, jadi template ini gak ada di theme manapun secara bawaan. Kamu cuma bikin kalau butuh kustomisasi.
  3. Konteks Liquid-nya terbatas, gak semua object global tersedia.

Prinsip umumnya: jangan bikin kalau gak perlu. Default Shopify diperbarui rutin ngikutin praktik terbaik, dan begitu kamu bikin template sendiri, kamu yang bertanggung jawab jaga isinya tetap benar.

robots.txt.liquid

File robots.txt di /robots.txt ngasih tau mesin pencari halaman mana yang boleh dan gak boleh di-crawl. Isinya kelompok-kelompok aturan, tiap kelompok punya tiga komponen:

  1. User agent, crawler mana yang kena aturan ini, misalnya adsbot-google atau * buat semua.
  2. Aturan-aturannya, URL mana yang boleh (Allow) atau gak boleh (Disallow) diakses.
  3. URL sitemap opsional.

Shopify bikin robots.txt default yang cocok buat kebanyakan toko: ngeblok halaman checkout, keranjang, akun, hasil pencarian internal, dan halaman lain yang gak berguna buat SEO.

1. Bikin Template-nya

Kalau theme belum punya, bikin lewat code editor: klik kanan folder Templates > New File > namain robots.txt.liquid. Atau bikin file-nya di templates/ secara lokal.

2. Object yang Tersedia

Template ini cuma mendukung object-object ini, yang udah dibahas di 17 Objects Lainnya > Object robots.txt:

  1. robots, punya default_groups.
  2. group, punya user_agent, rules, sitemap.
  3. rule, punya directive dan value.
  4. user_agent, punya directive dan value.
  5. sitemap, punya directive dan value.
  6. request, buat request.host.

shop, collections, dan object global lain gak tersedia.

3. Isi Dasar

Aturan default Shopify dicerminkan lewat object robots, jadi template minimalnya cuma ngeluarin aturan default itu apa adanya:

{% for group in robots.default_groups %}
  {{- group.user_agent -}}
  {% for rule in group.rules %}
    {{- rule -}}
  {% endfor %}
  {%- if group.sitemap != blank -%}
    {{ group.sitemap }}
  {%- endif -%}
{% endfor %}

Perhatiin {{- rule -}} dan {{- group.user_agent -}}: object rule, user_agent, dan sitemap bisa ditampilin langsung dan otomatis jadi baris Disallow: /cart atau User-agent: *. Dan whitespace control dari 09 Dasar Liquid > Whitespace Control itu penting di sini, karena format robots.txt sensitif sama baris kosong.

Kamu bisa ganti semua isinya dengan teks biasa, tapi sangat disarankan pakai object Liquid-nya. Alasannya: aturan default diperbarui rutin sama Shopify biar selalu ngikutin praktik SEO terbaik. Kalau kamu tulis manual, kamu ketinggalan update itu.

❌ berisiko, aturan ditulis manual, gak dapat update dari Shopify

User-agent: *
Disallow: /cart
Disallow: /checkout
Sitemap: https://toko.myshopify.com/sitemap.xml

✅ benar, aturan default dari object, kustomisasi ditambahin di sekitarnya

{% for group in robots.default_groups %}
  {{- group.user_agent }}
  {%- for rule in group.rules -%}
    {{ rule }}
  {%- endfor -%}
  {%- if group.sitemap != blank -%}
    {{ group.sitemap }}
  {%- endif -%}
{% endfor %}

4. Nambah Aturan ke Grup yang Ada

Cek grupnya, terus sisipkan aturanmu. Contoh, ngeblok semua crawler dari halaman dengan parameter ?q= (hasil pencarian internal):

{% for group in robots.default_groups %}
  {{- group.user_agent }}
  {%- for rule in group.rules -%}
    {{ rule }}
  {%- endfor -%}
  {%- if group.user_agent.value == '*' -%}
    {{ 'Disallow: /*?q=*' }}
  {%- endif -%}
  {%- if group.sitemap != blank -%}
	  {{ group.sitemap }}
  {%- endif -%}
{% endfor %}

Aturan barunya cuma masuk ke grup * (semua crawler), grup lain tetap utuh.

5. Aturan per Domain

Kalau toko pakai beberapa domain buat market berbeda (misalnya example.fr buat Prancis), kamu bisa bikin aturan per host pakai request.host. Cuma lakuin ini kalau emang pakai Shopify Markets dengan domain terpisah yang butuh perilaku crawl berbeda. Contoh, ngeblok konten Inggris di domain Prancis:

{% for group in robots.default_groups %}
  {{- group.user_agent }}
  {%- for rule in group.rules -%}
    {{ rule }}
  {%- endfor -%}
  {%- if request.host == 'example.fr' -%}
    {{ 'Disallow: /en/' }}
  {%- endif -%}
  {%- if group.sitemap != blank -%}
	  {{ group.sitemap }}
  {%- endif -%}
{% endfor %}

6. Ngehapus Aturan Default

Cek aturannya, terus lewati. Contoh, ngebolehin crawler akses /policies/ yang default-nya diblok:

{% for group in robots.default_groups %}
  {{- group.user_agent }}
  {%- for rule in group.rules -%}
    {%- unless rule.directive == 'Disallow' and rule.value == '/policies/' -%}
      {{ rule }}
    {%- endunless -%}
  {%- endfor -%}
  {%- if group.sitemap != blank -%}
	  {{ group.sitemap }}
  {%- endif -%}
{% endfor %}

Pikirin dua kali sebelum ngehapus aturan default. Aturan itu ada alasannya.

7. Aturan Kustom di Luar Grup

Buat aturan yang gak termasuk grup default manapun, tulis manual di luar loop Liquid. Tiga contoh umum:

Ngeblok crawler tertentu:

<!-- Liquid for default rules -->
User-agent: discobot
Disallow: /

Ngebolehin crawler tertentu:

<!-- Liquid for default rules -->
User-agent: discobot
Allow: /

Nambah sitemap tambahan:

<!-- Liquid for default rules -->
Sitemap: [sitemap-url]

<!-- Liquid for default rules --> di situ maksudnya “loop default-nya ada di sini”, bukan komentar HTML beneran. Aturan kustomnya ditaruh setelah loop. Bahasan SEO lengkapnya di 48 SEO Metadata, hreflang, robots.txt.

agents.md.liquid

Ini template yang baru dan penting buat masa depan e-commerce. File agents.md di /agents.md itu deskripsi resmi toko buat AI agent: asisten belanja AI yang mau nemuin dan bertransaksi di toko atas nama pengguna.

Isinya ngasih tau agent soal:

  1. Endpoint UCP (Universal Commerce Protocol, standar terbuka buat commerce lewat agent) dan MCP (Model Context Protocol) toko.
  2. URL buat browsing baca-saja: data produk, koleksi, dan pencarian.
  3. Kebijakan toko yang dipublikasikan.
  4. Panduan buat agent belanja pribadi, kaya Shop skill.

Shopify ngelola agents.md secara default buat tiap toko, dan buat kebanyakan toko itu udah cukup. File default-nya selalu sinkron sama kemampuan agent-discovery Shopify dan konfigurasi commerce toko, tanpa perawatan dari kamu.

Bikin agents.md.liquid cuma kalau ada kebutuhan lanjutan yang gak dicakup default. Begitu kamu bikin, kamu yang ngedit manual dan bertanggung jawab jaga isinya tetap benar.

File ini dilayani di domain utama tanpa awalan locale atau market (/agents.md, bukan /fr/agents.md), dan gak punya versi terjemahan.

1. Hubungan dengan llms.txt dan llms-full.txt

agents.md itu dokumen kanonik. /llms.txt dan /llms-full.txt itu URL alternatif yang bawaannya nyerminin /agents.md, biar agent yang minta salah satunya tetap dapat dokumen yang berguna.

Karena itu, agents.md.liquid jadi cadangan buat ketiga URL. Urutan pencarian template-nya:

  1. /agents.md: agents.md.liquid → default Shopify.
  2. /llms.txt: llms.txt.liquid → agents.md.liquid → default Shopify.
  3. /llms-full.txt: llms-full.txt.liquid → agents.md.liquid → default Shopify.

Artinya: bikin agents.md.liquid aja, dan ketiga URL langsung pakai itu. Cuma bikin llms.txt.liquid atau llms-full.txt.liquid kalau salah satu URL itu harus beda dari agents.md.

2. Konteks Liquid yang Terbatas

Beda dari template lain, agents.md.liquid dirender dengan konteks Liquid yang dibatasi. Cuma dua object yang tersedia:

  1. request.
  2. agents, object khusus yang diisi otomatis (dibahas di bawah).

Object global standar gak disuntikkan, jadi shop, articles, blogs, collections, pages, linklists semuanya kosong. Pembatasan ini biar file-nya aman di-cache secara luas dan dilayani ke semua agent.

❌ salah, shop kosong di template ini

# Agent Instructions — {{ shop.name }}

✅ benar, pakai object agents

# Agent Instructions — {{ agents.store_name }}

3. Object agents

Object ini nyediain metadata UCP dan interaksi agent yang diisi otomatis dan selalu sinkron sama konfigurasi toko:

  1. agents.store_name, nama toko.
  2. agents.store_url, URL lengkap toko di domain utama.
  3. agents.ucp_discovery_url, URL discovery UCP: {store_url}/.well-known/ucp.
  4. agents.mcp_endpoint_url, endpoint MCP: {store_url}/api/ucp/mcp.
  5. agents.ucp_versions, array versi UCP yang didukung, terbaru duluan. Diambil dari implementasi UCP toko, jadi otomatis sinkron.
  6. agents.currency, kode mata uang utama, misalnya USD.
  7. agents.sitemap_url, URL sitemap: {store_url}/sitemap.xml.

4. Contoh

Template-nya nerima Markdown dan Liquid:

# Agent Instructions — {{ agents.store_name }}
This document describes how AI agents can interact with the online store at {{ agents.store_url }}.
## Commerce Protocol (UCP)
This store implements the Universal Commerce Protocol for agent-driven commerce:
- Discovery: `GET {{ agents.ucp_discovery_url }}`
- MCP endpoint: `POST {{ agents.mcp_endpoint_url }}`
### Supported UCP versions
{% for version in agents.ucp_versions %}
- {{ version }}{% if forloop.first %} (latest stable){% endif %}
{% endfor %}
## Read-only browsing
- All products: `GET /collections/all`
- Product JSON: `GET /products/{handle}.json`
- Sitemap: {{ agents.sitemap_url }}
Pricing and availability are returned in {{ agents.currency }}.

Dua aturan penting:

  1. Pakai object agents buat endpoint UCP dan MCP, jangan hardcode URL-nya, biar tetap sinkron waktu konfigurasi toko berubah.
  2. Jangan keluarin data pribadi merchant kaya email atau nomor telepon kontak. File ini di-cache luas dan dilayani ke semua agent yang minta. Default Shopify sengaja gak nyertain info kontak.

❌ berbahaya, info kontak bocor ke semua agent dan bot

Contact us at [email protected] or +62 812 3456 7890.

✅ benar, cukup URL dan endpoint

Discovery: `GET {{ agents.ucp_discovery_url }}`

llms.txt.liquid dan llms-full.txt.liquid

Dua template ini hampir identik dengan agents.md.liquid:

  1. Di-host di /llms.txt dan /llms-full.txt, domain utama, tanpa locale, tanpa terjemahan.
  2. Wajib Liquid, nerima teks atau Markdown plus Liquid.
  3. Konteks terbatas: cuma request dan agents.
  4. Bawaannya nyerminin /agents.md, jadi gak ada di theme manapun secara default.

Bedanya cuma kapan dipakai: cuma kalau URL itu harus beda dari /agents.md. Kalau mau ngubah ketiganya sekaligus, edit agents.md.liquid aja.

Konvensi umumnya: llms.txt itu ringkasan pendek yang ngarahin ke dokumen lengkap, llms-full.txt itu versi lengkap. Contoh llms.txt.liquid:

# {{ agents.store_name }}
> Agent-discovery summary. The canonical, full description is at {{ agents.store_url }}/agents.md.
- UCP discovery: {{ agents.ucp_discovery_url }}
- MCP endpoint: {{ agents.mcp_endpoint_url }}
- Sitemap: {{ agents.sitemap_url }}

Contoh llms-full.txt.liquid:

# {{ agents.store_name }} — Full agent reference
The canonical description is at {{ agents.store_url }}/agents.md.
## Commerce Protocol (UCP)
- UCP discovery: {{ agents.ucp_discovery_url }}
- MCP endpoint: {{ agents.mcp_endpoint_url }}
### Supported UCP versions
{% for version in agents.ucp_versions %}
- {{ version }}
{% endfor %}
## Read-only browsing
- All products: `GET /collections/all`
- Sitemap: {{ agents.sitemap_url }}

Cara bikinnya sama: klik kanan Templates > New File > llms.txt.liquid atau llms-full.txt.liquid.

Kapan Bikin yang Mana

Biar gak salah langkah:

  1. Toko biasa yang cuma butuh SEO dan discovery standar: jangan bikin apa-apa. Default Shopify udah paling bagus.
  2. Butuh ngeblok atau ngebolehin crawler tertentu, atau aturan per domain: bikin robots.txt.liquid, tapi tetap render aturan default lewat object robots.
  3. Butuh instruksi khusus buat AI agent (misalnya ngasih tau cara akses katalog khusus): bikin agents.md.liquid, dan ketiga URL agent langsung pakai itu.
  4. Butuh /llms.txt atau /llms-full.txt yang beda dari /agents.md: baru bikin template khususnya.

Ringkasan

  1. Keempat template ini wajib Liquid, gak ada di theme secara default, dan Shopify udah nyediain versi default yang bagus. Bikin cuma kalau perlu.
  2. robots.txt.liquid cuma punya object robots, group, rule, user_agent, sitemap, dan request.
  3. Selalu render aturan default lewat robots.default_groups, jangan tulis manual, karena Shopify memperbarui aturannya rutin.
  4. Nambah aturan: sisipkan di dalam loop dengan cek group.user_agent.value. Ngehapus: lewati dengan unless. Aturan kustom: tulis di luar loop.
  5. Aturan per domain pakai request.host, cuma buat toko multi domain.
  6. agents.md itu dokumen kanonik buat AI agent, dan agents.md.liquid jadi cadangan buat /llms.txt dan /llms-full.txt.
  7. Konteks agents.md.liquid cuma request dan agents, object global kaya shop kosong.
  8. Object agents nyediain store_name, store_url, ucp_discovery_url, mcp_endpoint_url, ucp_versions, currency, sitemap_url yang otomatis sinkron. Pakai itu, jangan hardcode.
  9. Jangan keluarin data pribadi merchant di agents.md, file-nya di-cache dan dilayani ke semua agent.
  10. llms.txt.liquid dan llms-full.txt.liquid cuma dibikin kalau URL itu harus beda dari /agents.md.

Bab selanjutnya kita masuk ke komponen yang paling sering kamu bikin: section. Struktur file-nya, tag {% schema %} dengan semua atributnya, setting, block, preset, dan cara section nyambung ke theme editor.