llms.txt llms.txt

/ 18 Thermidor 233
English Shavian 4 minutoj / 753 vortoj
in short: realigi aŭtomatan llms.txt en Hugo

Imagu mian ŝokon kaj surprizon malkovri, ke kiam mi nun sendas CV-ojn, mi rapide vidas LLM-esploradadentojn en miaj atingoprotokojn versante super mian portofolio-paĝon. Dum tempo ĉiam antaŭenmovας, mi suspektas, ke mi pli ofte traktos AI-agentojn, precipe en la labormerкato.

Mi ne estas ravita pri tio, sed mi ne povas fari ion pri tio - do, se vi ne povas venki ilin, aliĝu al ili.

Mia retejo jam estas sufiĉe rekta HTML kaj CSS, sed en miaj propraj testoj, modeloj ankoraŭ ŝajnas konfuziĝi pri enhavo sur mia ejo - estas multe por analizi, eĉ en simpla ejo.

Feliĉe, nova normo formiĝas por organizi retejan enhavon por llm-oj en simplajn “.txt” dosierojn. Se vi ne vidis ilin antaŭe, ili estas esence markdown-versioj de paĝa enhavo, sen stilado, sen javascript.

Ĉi tiu artikolo klarigas kiel generi ĉi tiujn dosierojn aŭtomate el ekzistanta enhavo, por Hugo SSG-ejoj.

La Fluo

Ni volas povi:

  1. Provizi purajn, plat-tekstajn versiojn de ĉiu enhavo
  2. Permesi al ni skribi proprajn versiojn kiam necese
  3. Aŭto-generi LLM-optimumigitan enhavon en ĉiuj aliaj kazoj
  4. Krei ĉefan indekson de ĉiu LLM-preta enhavo
  5. Fari kiel eble malplej multe permane.

Se vi ne konas Hugo-an Ŝablonan sistemon, ĝi estas neredeble potenca, kaj povas fari multe pli ol nur aranĝi HTML-dosierojn. Ni uzos ĝin hodiaŭ por generi llms.txt dosierojn aŭtomate, revenante al nia propra enhavo en ĉiuj aliaj kazoj.

Gravaj paĝoj kiel la laborportfolio profitas el propraj llms.txt dosieroj enhavantaj man-faritajn, LLM-optimumigitajn enhavon. Ĉi tiuj dosieroj vivas apud la ĉefa enhavo:

content/
  info/
    work/
      index.en.md     # Hom-legebla paĝo
      llms.txt        # Propra LLM-versio

Propraj dosieroj provizas kompletan kontrolon super LLM-videbla enhavo, ebligi:

  • Forigi vidajn elementojn kiuj ne tradukas al teksto
  • Restrukturi informojn por pli bona LLM-kompreno
  • Inkluzivi aldonan kuntekston aŭ klarigojn
  • Formati datumojn en LLM-amikaj strukturoj

Paĝoj sen propraj LLM-dosieroj aŭtomate generas purajn tekst-versiojn uzante propran eligan formaton. La realigo funkcias jene:

Hugo Konfiguro (config.toml):

La propra enhav-genera sistemo bezonas tri ĉefajn konfigurajn sekciojn:

# Propraj eligaj formatoj
[mediaTypes]
  [mediaTypes."text/plain"]
    suffixes = ["txt"]
  [mediaTypes."text/markdown"]
    suffixes = ["md"]

[outputFormats]
  [outputFormats.llmsfull]
    mediaType = "text/plain"
    baseName = "llms-full"
    isPlainText = true
    notAlternative = true
  [outputFormats.llms]
    mediaType = "text/plain"
    baseName = "llms"
    isPlainText = true
    notAlternative = true

[outputs]
  home = ["HTML", "RSS", "llmsfull"]
  page = ["HTML", "llms"]

Konfigura Malkomponoj:

  • mediaTypes: Difinas la MIME-tipojn kiujn Hugo rekonas. La text/plain tipo kun txt sufikso ebligas plat-tekstan dosier-generadon.

  • outputFormats: Kreas du proprajn eligajn formatojn:

    • llms: Generas individuajn llms.txt dosierojn por ĉiu paĝo
    • llmsfull: Kreas la ampleksan ejo-indekson kiel llms-full.txt

    La isPlainText = true flago certigas taŭgan tekst-formatigon, dum notAlternative = true malhelpas ĉi tiujn aperi en RSS-fluoj aŭ ejmapoj.

  • outputs: Specifas kiujn formatojn generi:

    • home: La hejmpaĝo generas HTML, RSS, kaj la plenan LLM-indekson
    • page: Individuaj paĝoj generas HTML kaj LLM-amikajn versiojn

Ŝablono (layouts/_default/single.llms.txt):

{{- if .File -}}
{{- $customLlmsFile := printf "%sllms.txt" .File.Dir -}}
{{- if not (fileExists (printf "content/%s" $customLlmsFile)) -}}
# {{ .Title }}

{{ if .Params.description }}{{ .Params.description }}

{{ end }}{{ if .Date }}Publikigite: {{ .Date.Format "January 2, 2006" }}

{{ end }}{{ .RawContent }}
{{- end -}}
{{- end -}}

Ĉi tiu ŝablono nur generas enhavon kiam neniu propra llms.txt dosiero ekzistas, certigante ke la propraj versioj ĉiam havas prioritaton. La kronĵuvelo estas llms-full.txt - ampleksa indekso de ĉiu LLM-amika enhavo sur la ejo, organizita laŭ enhav-tipo:

Ŝablono (layouts/index.llmsfull.txt):

# LLM-Amika Enhava Indekso

# Informoj
{{- range (where .Site.RegularPages "Type" "info") }}
- [{{ .Title }}]({{ .Permalink }}llms.txt)
{{- end }}

# Afiŝoj  
{{- range (where .Site.RegularPages "Type" "posts") }}
- [{{ .Title }}]({{ .Permalink }}llms.txt)
{{- end }}

# Projektoj
{{- range (where .Site.RegularPages "Type" "projects") }}
- [{{ .Title }}]({{ .Permalink }}llms.txt)
{{- end }}

# IndieWeb Notoj
{{- range (where .Site.RegularPages "Type" "indieweb") }}
{{- if eq .Params.kind "note" }}
- [{{ .Title }}]({{ .Permalink }}llms.txt)
{{- end }}
{{- end }}

Inteligenta Enhava-Detekto

La sistemo aŭtomate detektas kiuj paĝoj havas LLM-versiojn disponeblajn kaj montras ligojn laŭe. En individuaj paĝoj, la ŝablono kontrolas pri enhavo kaj montras la ligon en la paĝkapo:

{{/* Ĉiam montru llms.txt ligon - aŭ propran aŭ aŭto-generitan */}}
{{ if .File }}
<a href="{{ .Permalink }}llms.txt" class="llms-link">
  <span class="llms-letter">l</span><span class="llms-letter">l</span>...
</a>
{{ end }}

La Rezulto

Ĉiu paĝo nun havas LLM-amikan version alireblан ĉe /page-url/llms.txt, kun ampleksa indekso ĉe /llms-full.txt. La sistemo aŭtomate prizorgas sin mem dum nova enhavo aldoniĝas, dum provizante plenan kontrolon super la plej gravaj paĝoj.

La kompleta realigo disponeblas en la eja font-kodo, kaj la sistemo generas ĉi tiun mem afiŝon en LLM-amika formato aŭtomate. La LLM-versio de ĉi tiu afiŝo kaj kompleta eja indekso demonstras la sistemon en ago.


Comments