---
site_name: Toret dokumentace
site_url: https://documentation.toret.cz
contact_email: info@toret.cz

title: Dokumentace pluginu Toret AI Markdown
url: https://documentation.toret.cz/toret-ai-markdown/
date: 2026-02-24
modified: 2026-10-23
author: zvojacek
type: page
---

# Dokumentace pluginu Toret AI Markdown

Nacházíte se na stránkách dokumentace pluginu Toret AI Markdown, který pomáhá s technickou optimalizací webu pro AI crawlery. Plugin AI Markdown zakoupíte zde: [Toret AI Markdown](https://toret.cz/produkt/ai-markdown)

Obsah

1. 🤖 Co plugin dělá
 - Dostupné URL
2. Minimální požadavky
3. Instalace pluginu
4. Aktivace pluginu
5. 🚀 Rychlý start
6. ⚙️ Popis nastavení
 - Obecné nastavení
 -
 - Zaznamenávání přístupů (logování)
 -
 - Hlavičky (Frontmatter)
7. ✏️ Editor Markdown
8. 🗺️ Sitemap pro AI
9. 🤖 llms.txt
10. 🧭 agents.md
11. 📄 Metabox na stránkách a produktech
12. 🗂️ Nastavení u kategorií
13. 🛒 WooCommerce
14. Pro vývojáře
 - 🪝 WordPress filtry (Hooks)
 -
 - 📌 Konstanty
 -
 - 💾 Cache logika
 -
 - ⚙️ Převodník HTML → Markdown
 -
 - 🔌 AJAX endpointy
 -
 - 🗄️ Databáze – uložené hodnoty

## 🤖 Co plugin dělá

Toret Markdown přidává ke každé stránce WordPressu alternativní výstup ve formátu **Markdown**. Ten je určen primárně pro **AI jazykové modely a agenty** (ChatGPT, Claude, Perplexity…), kteří text v Markdownu zpracovávají přesněji a efektivněji než běžné HTML.

Plugin generuje tyto výstupy:

- Stránka / příspěvek / produkt:?format=markdownnebo přípona.mdv URL
- Sitemap pro AI:?format=markdown-sitemap
- llms.txt: instrukce a kontext na kořeni webu
- llms-full.txt, agents.md a sitemap_agentic_discovery.xml: rozšířené soubory pro AI agenty

### Dostupné URL

| URL | Popis |
| --- | --- |
| `https://vasedomena.cz/stranka/?format=markdown` | Markdown verze libovolné stránky nebo příspěvku |
| `https://vasedomena.cz/stranka.md` | Totéž přes příponu .md (u kategorií /kategorie/index.md) |
| `https://vasedomena.cz/?format=markdown-sitemap` | Přehled všech dostupných stránek pro AI agenty |
| `https://vasedomena.cz/llms.txt` | Instrukce a kontext pro AI agenty |
| `https://vasedomena.cz/llms-full.txt` | Rozšířená verze llms.txt se strojově čitelnými endpointy a kompletním indexem stránek |
| `https://vasedomena.cz/agents.md` | Provozní manuál pro AI agenty (informace o obchodu, pravidla, doprava, platby) |
| `https://vasedomena.cz/sitemap_agentic_discovery.xml` | Sitemapa souborů pro AI agenty |

## Minimální požadavky

- WordPress 6.9 nebo vyšší
- PHP 8.2 nebo vyšší

## Instalace pluginu

Po zakoupení pluginu obdržíte e-mailem licenční klíč a odkaz na stažení zip souboru s pluginem. Detailní návod, jak do WordPress nainstalovat plugin z počítače, najdete [zde](https://documentation.toret.cz/instalace-pluginu/).

## Aktivace pluginu

Po instalaci pluginu si otevřete plugin Toret AI Markdown *(Toret Plugins > AI Markdown)*, do příslušného pole vložíte licenční klíč a tlačítkem Ověřit licenci aktivujte.

![Toret AI Markdown - Aktivace pluginu](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-aktivace-pluginu-2.png "Toret AI Markdown - Aktivace pluginu")![Toret AI Markdown - Aktivace pluginu](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-aktivace-pluginu-1024x309.png "Toret AI Markdown - Aktivace pluginu")

## 🚀 Rychlý start

#### 1. Zapněte plugin

V administraci WordPressu přejděte do **Toret plugins > AI Markdown** (záložka *Nastavení*) a ujistěte se, že je přepínač *Plugin je aktivní* zaškrtnutý.

![Toret AI Markdown - Aktivace pluginu](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-aktivace-pluginu-3-1024x339.png "Toret AI Markdown - Aktivace pluginu")

#### 2. Otestujte výstup

Přidejte `?format=markdown` na konec libovolné URL vašeho webu, např.:
`https://vasedomena.cz/stranka/?format=markdown`

#### 3. Nastavte llms.txt

V administraci pluginu přejděte do záložky *llms.txt* a upravte instrukce pro AI agenty. Soubor je pak veřejně dostupný na adrese `https://vasedomena.cz/llms.txt`.

![Toret AI markdown - úprava llms.txt](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-llms-1024x460.png "Toret AI markdown - úprava llms.txt")

#### 4. Zkontrolujte sitemapu

Sitemap pro AI je dostupná na adrese `https://vasedomena.cz/?format=markdown-sitemap`. Obsahuje přehled všech veřejných stránek s jejich popisem.

## ⚙️ Popis nastavení

(Toret Plugins > AI Markdown > Nastavení)

### Obecné nastavení

![Toret AI markdown nastaveni 1024x485](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-nastaveni-1024x485.png "Toret AI markdown nastaveni 1024x485")

#### Značka link v hlavičce (link tag)

Pokud je zapnuto, plugin vloží do `<head>` každé stránky tag `<link rel="alternate" type="text/markdown">`. Moderní AI agenti tento tag rozpoznají a automaticky si načtou Markdown verzi místo HTML — bez jakéhokoliv zásahu z vaší strany.

Pokud je zapnuta volba *Link tag v hlavičce*, plugin vloží do `<head>` každé stránky následující meta tagy:

```
<link rel="describedby" type="text/markdown" href=".../llms.txt" title="Site Context" />
<link rel="alternate" type="text/markdown" href=".../?format=markdown-sitemap" title="Markdown Sitemap" />
<link rel="alternate" type="text/markdown" href=".../?format=markdown" title="Page Context" />
```

#### Robots.txt

Přidá do souboru robots.txt odkazy na llms.txt, llms-full.txt, agents.md a Markdown sitemapu a také řádek `Sitemap:` se sitemapou souborů pro AI agenty. Řádky se generují dynamicky při každém načtení robots.txt, takže je jiný plugin nemůže omylem smazat.

#### **Soubory pro AI agenty**

Jednotlivé soubory a funkce zapnete nebo vypnete samostatně. Ve výchozím stavu jsou zapnuté všechny.

- Přípona .md v URL: adresy /stranka.md a /kategorie/index.md vrátí Markdown verzi stránky.
- /llms-full.txt: rozšířená verze llms.txt. Kromě jejího obsahu obsahuje strojově čitelné endpointy a kompletní index stránek.
- /agents.md: provozní manuál pro AI agenty. Obsah upravíte v záložce agents.md.
- /sitemap_agentic_discovery.xml: sitemapa souborů pro AI agenty. Plugin ji automaticky přidá do indexu sitemap WordPressu, Yoast SEO i Rank Math.

Všechny soubory se generují dynamicky, na webu nevzniká žádný fyzický soubor.

#### Content negotiation

AI agenti, kteří požadují obsah přes hlavičku Accept, dostanou přímo Markdown. Běžné prohlížeče ani uživatelé nejsou ovlivněny.

> Pozor na weby s cache celých stránek (WP Rocket, Lite Speed Cache, Cloudflare…). Ty vrací uložené HTML dřív, než se spustí WordPress, a hlavička Accept proto funguje jen u stránek, které v cache nejsou. Adresy `?format=markdown` a `.md` fungují vždy.

#### Content signals

Přidá do robots.txt **preference využití** obsahu umělou inteligencí pro AI crawlery.

- AI search: Indexace pro vyhledávače (search=yes) je vždy povolena.
- AI input: AI nástroje mohou citovat obsah
- AI train: Obsah lze využít k trénování nástrojů

Pokud je volba zapnutá, posílá plugin preference i v HTTP hlavičce `Content-Signal` u každé Markdown odpovědi, např. `search=yes, ai-input=yes, ai-train=no`. Ve výchozím stavu je povolené AI input a zakázané AI train.

Každá Markdown odpověď navíc obsahuje hlavičku `X-Markdown-Tokens` s odhadem počtu tokenů. AI agent tak dopředu ví, jak velký obsah ho čeká. Obě hlavičky jsou kompatibilní s funkcí Markdown for Agents od Cloudflare.

#### Widget na nástěnce

Zapne přehled přístupů AI na hlavní stráce (nástěnce) WP administrace.

#### Odkaz v admin liště

Zobrazí odkaz na zobrazení/úpravu Markdown verze v horizontální admin liště na frontendu – pro rychlý přístup.

#### Časový limit HTTP (timeout)

Plugin generuje Markdown tak, že interně načítá (fetchuje) HTML stránky a převádí ho. Timeout určuje, jak dlouho na odpověď čekat. Při pomalém hostingu nebo obzvlášť velkých stránkách doporučujeme zvýšit hodnotu na 30–60 s.

#### Mezipaměť (cache)

Zde vidíte počet stránek s vygenerovanou Markdown verzí a tlačítko pro vymazání mezipaměti.

#### **Max. stáří cache**

Počet dní, po kterých se uložená Markdown verze stránky považuje za zastaralou. Výchozí hodnota je 30 dní, 0 znamená, že cache nikdy nevyprší. Starší stránky se při zobrazení přegenerují na pozadí. Projeví se tak i změny provedené mimo editor stránky, například v šabloně, widgetech nebo počtech v archivech. Cache se automaticky smaže také při změně šablony a při aktualizaci pluginu. Stránky se zamčenou cache zůstávají beze změny.

#### Předgenerovat mezipaměť

Vytvoří a uloží Markdown mezipaměť pro všechny veřejné stránky, příspěvky a produkty. Běží na pozadí v dávkách po 5 — nebude mít vliv na výkon webu.

#### Dogenerovat chybějící

Vygeneruje Markdown cache pouze pro stránky, které ji ještě nemají. Užitečné, když bylo předgenerování přerušeno nebo byly přidány nové stránky.

#### Černá listina URL (slug)

Jeden slug na řádek. Stránky, které jsou na blacklistu, nevrátí Markdown výstup a nezobrazí se ani v sitemapě. Typicky sem patří technické stránky bez relevantního obsahu: `cart`, `checkout`, `my-account`, `thank-you`.

#### Chráněná slova

Zde můžete uvést slova, která se do Markdown přenesou přesně tak, jak jsou – bez dělení či zalamování – pro zachování jejich významu.

### Zaznamenávání přístupů (logování)

![Toret AI markdown - logování přístupů AI](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-logovani-pristupu-AI-1024x193.png "Toret AI markdown - logování přístupů AI")

Plugin loguje každý přístup na `?format=markdown` a `?format=markdown-sitemap` včetně identifikace bota (GPTBot, Claude Bot, Googlebot…). Zaznamenávání je možné vypnout/zapnout checkboxem*Zaznamenávat přístupy do databáze.*

**Max. záznamů logu** – Po překročení limitu se automaticky promazávají nejstarší záznamy. Doporučená hodnota je 500–1000 pro běžné weby.

IP adresy jsou automaticky anonymizovány. Záznamy si prohlédnete v záložce *Přístupy*.

![Toret AI markdown - logování přístupů AI](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-logovani-pristupu-AI-2-1024x274.png "Toret AI markdown - logování přístupů AI")

#### 🤖 Detekce botů

##### Rozpoznávání agenti

Detekce probíhá porovnáváním `User-Agent` hlavičky z prohlížeče (case-insensitive). Plugin rozpozná přes 50 AI botů, vyhledávačů a SEO crawlerů. Rozpoznávané typy:

- gpt: GPTBot, ChatGPT-User, OAI-Search Bot, Search GPT
- claude: Claude Bot, Claude-User, Claude-Search Bot, Anthropic
- google: Googlebot, Google-Extended, Gemini, Google Other
- bing: Bingbot, Bing Preview, MSNBot, Microsoft Copilot
- other_ai: Perplexity Bot, Applebot, Meta, CCBot, Mistral, Deep Seek, Cohere, Amazon Bot, Byte Spider a další
- search: vyhledávače (Seznam Bot, Yandex Bot, Duck Duck Bot, Baidu…)
- seo: SEO crawlery (Ahrefs Bot, Semrush Bot, MJ12Bot…)
- unknown: nerozpoznaný User-Agent

##### Barvy v logu přístupů

- Zelená: OpenAI / GPTBot
- Oranžová: Anthropic / Claude Bot
- Modrá: Google / Googlebot
- Modrofialová: Bing / Microsoft
- Růžová: jiní AI roboti
- Tyrkysová: vyhledávače
- Fialová: SEO crawlery
- Šedá: neznámý návštěvník

### Hlavičky (Frontmatter)

(Toret Plugins > AI Markdown > Nastavení > Hlavičky (Frontmatter))

Každá Markdown verze stránky začíná hlavičkou ve formátu YAML, tzv. frontmatter. Z ní AI agent hned pozná, z jakého webu obsah pochází a o jakou stránku jde, a nemusí to zjišťovat z textu. Hlavička obsahuje údaje o webu a pak údaje o konkrétní stránce: název, URL, datum vytvoření a úpravy, typ obsahu, perex, kategorie a štítky. U produktů obsahuje i cenu, měnu, skladovost a SKU.

#### **Autor**

Pokud je volba zapnutá, přidá se do hlavičky pole `author` se jménem autora stránky. Ve výchozím stavu je zapnutá.

#### **Název webu, Popis webu, URL webu, Kontaktní e-mail**

Tyto údaje se vkládají do hlavičky každé Markdown stránky jako pole `site_name`, `site_description`, `site_url` a `contact_email`. Plugin je používá také při generování výchozího obsahu llms.txt a agents.md. Když pole necháte prázdné, použije se hodnota z WordPressu: název a popis webu z obecného nastavení, adresa webu a e-mail administrátora. Vlastní hodnotu vyplňte, pokud chcete AI agentům ukázat jiný údaj, například obchodní název místo názvu webu nebo e-mail na zákaznickou podporu místo e-mailu administrátora.

#### **Vlastní pole**

Vlastní údaje, které se mají přidat do hlavičky každé Markdown stránky. Zapisujte jeden záznam na řádek ve formátu `klíč: hodnota`, například:

```
language: cs
currency: CZK
```

Řádky, které neobsahují dvojtečku, plugin ignoruje.

## ✏️ Editor Markdown

(Toret Plugins > AI Markdown > Editor)

V Editoru je možné upravovat vytvořené Markdown verze stránek.

![Toret AI markdown - editor markdown](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-editor-markdown-1024x507.png "Toret AI markdown - editor markdown")

#### Jak funguje cache

Plugin generuje Markdown automaticky při každém přístupu. Výsledek se uloží do cache (jako post meta), takže opakované požadavky jsou velmi rychlé a nevytěžují server. Cache se automaticky obnoví při jakékoliv úpravě příspěvku.

#### Ruční editace

V záložce *Editor* můžete Markdown libovolné stránky ručně upravit a uložit. Po uložení se cache **zamkne** — plugin ji už dál nebude automaticky přepisovat. Zámek lze kdykoliv odemknout tlačítkem přímo v editoru.

#### Zamčená cache

Stránky se zamčenou cache jsou v editoru označeny ikonou 🔒. Znamená to, že web AI agentům zobrazí přesně ten obsah, který jste ručně nastavili — plugin ho nepřepíše ani při následné aktualizaci příspěvku.

## 🗺️ Sitemap pro AI

#### Co sitemap obsahuje

Sitemap je přehled všech veřejných stránek, příspěvků a produktů ve formátu Markdown. Pro každou položku obsahuje název, URL, datum úpravy a krátký popis. AI agent ji použije k tomu, aby zjistil, co všechno na webu existuje, a poté si načetl detaily konkrétních stránek.

#### Ruční přepsání

(Toret plugins >AI Markdown > Mapa stránek)

V záložce *Sitemap* můžete dynamicky generovaný obsah přepsat vlastním textem a uložit ho. Tlačítkem *Obnovit dynamickou sitemapu* jednoduše vrátíte automatické generování.

![Toret AI Markdown - editor sitemap](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-editor-sitemap-1024x484.png "Toret AI Markdown - editor sitemap")

#### Limity a řazení

(Toret plugins > AI Markdown > Nastavení > Markdown Sitemap)

V záložce *Nastavení* lze pro každý typ obsahu (stránky, příspěvky, produkty) nastavit maximální počet položek a způsob jejich řazení. Hodnota `-1` znamená výpis bez limitu, 0 skrytí celé sekce.

![Toret AI markdown - sitemap Limity a řazení](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-sitemap-Limity-a-razeni-1024x337.png "Toret AI markdown - sitemap Limity a řazení")

Sitemap i llms-full.txt obsahují i vlastní typy obsahu (služby, portfolio, FAQ…). Každý typ má vlastní sekci seřazenou od nejnovějšího. V poli **Max. položek na další typ obsahu** nastavíte společný limit pro všechny tyto typy. V části **Limit pro jednotlivé typy** můžete rozsáhlé typy, jako FAQ nebo znalostní báze, omezit zvlášť, aby sitemap a llms-full.txt zůstaly malé.

## 🤖 llms.txt

#### K čemu slouží

`llms.txt` je standardizovaný soubor (funguje podobně jako `robots.txt`), který AI agentům říká, jak s vaším webem správně pracovat. Doporučujeme sem napsat: kdo jste, co nabízíte, jaké stránky jsou pro AI nejdůležitější a jaká pro ně platí omezení.

#### Výchozí obsah

Tlačítkem *Obnovit výchozí*v záložce *llms.txt* plugin automaticky vygeneruje základní obsah z dat vašeho WordPressu (název webu, popis, kontakt, URL sitemapy). Výsledek pak stačí jen doplnit nebo ručně upravit.

![Toret AI markdown - soubor llms](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-llms-1-1024x435.png "Toret AI markdown - soubor llms")

#### **Jak se llms.txt zobrazuje**

Plugin generuje llms.txt dynamicky v kódování UTF-8, na webu tedy nevzniká fyzický soubor. Starší verze pluginu (do 1.1.1) ukládaly soubor do kořene webu, ten se při uložení editoru automaticky odstraní. Pokud jste llms.txt zatím neupravovali, zobrazí se výchozí obsah.

#### **llms-full.txt**

Rozšířená verze llms.txt. Obsahuje text z llms.txt, přehled strojově čitelných endpointů (Markdown verze, sitemap, agents.md, Content-Signal) a kompletní index stránek. Generuje se automaticky, samostatně se neupravuje.

## 🧭 agents.md

(Toret Plugins > AI Markdown > agents.md)

#### **K čemu slouží**

agents.md je provozní manuál pro AI agenty, například nákupní asistenty. Je na adrese [https://vasedomena.cz/agents.md](https://vasedomena.cz/agents.md). Obsahuje informace o obchodu, obchodní podmínky a další pravidla, dopravu a platební metody, návod na čtení katalogu a pravidla pro automatizované klienty.

#### **Dynamický a vlastní obsah**

Ve výchozím stavu se obsah skládá automaticky z nastavení obchodu, dopravních zón, platebních metod a stránek s podmínkami. Pokud ho v záložce upravíte a uložíte, dynamické generování se vypne a AI agenti uvidí vaši verzi. Tlačítkem **Obnovit dynamický** se vrátíte k automatickému generování. **Načíst aktuální dynamický** vloží do editoru aktuální automaticky vygenerovaný obsah jako základ pro úpravy.

## 📄 Metabox na stránkách a produktech

#### Kde se zobrazí

Metabox *Toret Markdown* se zobrazuje v pravém sloupci editoru u každého příspěvku, stránky i produktu. Ukazuje aktuální stav cache (aktuální / nevygenerovaná / vyloučená) a přesné datum posledního generování.

![Toret AI markdown - metabox](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-metabox-1024x362.png "Toret AI markdown - metabox")

#### Generovat / Přegenerovat

Tlačítkem *Generovat* (nebo *Přegenerovat*) spustíte okamžité vygenerování Markdown cache pro danou stránku přímo z administrace, bez nutnosti ji navštívit. Po vygenerování se zobrazí odkaz *Náhled* pro kontrolu výstupu.

#### **Upozornění na chybu stažení**

Plugin vytváří Markdown ze stažené (vyrenderované) stránky. Pokud se ji nepodaří stáhnout, metabox na to upozorní. Typicky se to stane kvůli přihlašovací stránce, ochraně heslem, režimu údržby, firewallu, chybě HTTP nebo prázdné odpovědi. Markdown pak obsahuje jen základní obsah, tedy text příspěvku a data produktu, ne celou stránku. Zkontrolujte nastavení webu a stránku přegenerujte.

#### Vyloučit z Markdown

Stránka nebude vracet žádný Markdown výstup — místo toho se AI zobrazí běžné HTML. Zároveň se nevloží `<link>` tag do hlavičky a daná stránka se nezahrne do sitemapy.

#### Zamknout cache

Zabrání automatickému přegenerování cache při uložení stránky. Hodí se, když jste Markdown ručně upravili v editoru a nechcete, aby ho plugin omylem přepsal. Zámek lze kdykoliv zrušit nebo odemknout přímo v editoru.

#### Skrýt ze sitemapy

Stránka se sice nezobrazí v `?format=markdown-sitemap`, ale její Markdown verze zůstane plně dostupná přes `?format=markdown`. Rozdíl oproti *Vyloučit z Markdown* je ten, že obsah stále existuje, jen se neobjeví v globálním přehledu pro AI.

#### Odkaz do editoru

Odkaz *Upravit Markdown v editoru* v dolní části metaboxu vás přenese přímo do záložky centrálního Editoru s předvybranou aktuální stránkou.

## 🗂️ Nastavení u kategorií

#### Kde se zobrazí

Panel *Toret Markdown* se zobrazuje na stránce úpravy kategorie příspěvků (*Příspěvky → Kategorie*). Pokud je aktivní WooCommerce, funguje naprosto stejně i u kategorií produktů (*Produkty → Kategorie*).

![Toret AI markdown - kategorie](https://documentation.toret.cz/wp-content/uploads/2026/03/Toret-AI-markdown-kategorie.png "Toret AI markdown - kategorie")

#### Vyloučit z Markdown

Stránka kategorie nebude vracet Markdown výstup a nevloží se do ní `<link>` tag v hlavičce. Funguje stejně jako stejnojmenná volba v metaboxu u jednotlivých příspěvků.

#### Skrýt ze sitemapy

Kategorie se nezobrazí v `?format=markdown-sitemap`, ale její Markdown verze zůstane dostupná přes `?format=markdown`. Na stránce úpravy kategorie je také přímý odkaz *Náhled Markdown* pro rychlé zobrazení výstupu.

## 🛒 WooCommerce

#### Produkty v sitemapě

Pokud je WooCommerce aktivní, sitemap automaticky zahrne i produkty včetně jejich ceny, skladovosti a kategorie. V nastavení lze produkty filtrovat podle kategorie nebo omezit jejich celkový počet.

#### Frontmatter produktu

Markdown výstup produktové stránky obsahuje chytře rozšířenou YAML hlavičku s cenou (`price`), měnou (`currency`), skladovostí (`in_stock`) a SKU. AI agent díky tomu zná přesný a aktuální stav produktu bez nutnosti složitě parsovat HTML.

#### Kategorie produktů

Na stránce kategorie produktů v administraci (Produkty → Kategorie) najdete metabox pro případné vyloučení celé kategorie z Markdown výstupu a ze sitemapy.

## Pro vývojáře

### 🪝 WordPress filtry (Hooks)

| Filtr | Popis |
| --- | --- |
| `toret_markdown_post_frontmatter` | Úprava YAML hlavičky postu před uzavřením |
| `toret_markdown_post_output` | Výsledný Markdown stránky / produktu |
| `toret_markdown_term_output` | Výsledný Markdown taxonomie (kategorie, tag) |
| `toret_markdown_archive_output` | Výsledný Markdown archivu, homepage, shopu |
| `toret_markdown_sitemap_pages_args` | Argumenty `get_pages()` v sitemapě |
| `toret_markdown_sitemap_posts_args` | Argumenty `get_posts()` v sitemapě |
| `toret_markdown_sitemap_products_args` | Argumenty `wc_get_products()` v sitemapě |
| `toret_markdown_sitemap_products` | Pole produktů po načtení (filtrování objektů) |
| `toret_markdown_sitemap_output` | Celý výsledný text sitemapy |
| `toret_markdown_llms_full_output` | Výsledný obsah llms-full.txt |
| `toret_markdown_agents_default` | Výchozí (dynamicky generovaný) obsah agents.md |

#### `toret_markdown_post_frontmatter`

Umožňuje upravit YAML frontmatter příspěvku/stránky **před** uzavíracím `---`. Parametry: `string $frontmatter`, `WP_Post $post`.

```
add_filter( 'toret_markdown_post_frontmatter', function( $fm, $post ) {
 $fm .= 'author: ' . get_the_author_meta( 'display_name', $post->post_author ) . "n";
 return $fm;
}, 10, 2 );
```

#### `toret_markdown_post_output`

Výsledný Markdown příspěvku/stránky včetně frontmatteru. Parametry: `string $markdown`, `WP_Post $post`.

```
add_filter( 'toret_markdown_post_output', function( $md, $post ) {
 return $md . "nn---n*Generováno automaticky.*n";
}, 10, 2 );
```

#### `toret_markdown_term_output`

Výsledný Markdown stránky taxonomie (kategorie, tag). Parametry: `string $markdown`, `WP_Term $term`.

#### `toret_markdown_archive_output`

Výsledný Markdown archivní stránky (homepage, shop, archive, search). Parametry: `string $markdown`, `string $type`, `string $title`.

#### `toret_markdown_sitemap_pages_args`

Argumenty předávané funkci `get_pages()` při generování sitemapy. Parametr: `array $args`.

#### `toret_markdown_sitemap_posts_args`

Argumenty předávané funkci `get_posts()` při generování sitemapy. Parametr: `array $args`.

#### `toret_markdown_sitemap_products_args`

Argumenty předávané funkci `wc_get_products()` při generování sitemapy. Parametr: `array $args`.

#### `toret_markdown_sitemap_products`

Pole WooCommerce produktů po načtení, před jejich renderováním do sitemapy. Umožňuje filtrovat nebo libovolně seřadit objekty. Parametr: `array $products`.

#### `toret_markdown_sitemap_output`

Celý výsledný text dynamicky generované sitemapy. Parametr: `string $output`.

### 📌 Konstanty

| Konstanta | Hodnota | Popis |
| --- | --- | --- |
| `TORET_MARKDOWN_CACHE_KEY` | `_toret_markdown_cache` | Post meta klíč pro uložený Markdown |
| `TORET_MARKDOWN_META_EXCLUDE` | `_toret_markdown_exclude` | Post meta – vyloučení z Markdown výstupu |
| `TORET_MARKDOWN_META_LOCK` | `_toret_markdown_lock` | Post meta – zámek automatické regenerace cache |
| `TORET_MARKDOWN_META_SITEMAP_EXCLUDE` | `_toret_markdown_sitemap_exclude` | Post meta – skrytí ze sitemapy |
| `TORET_MARKDOWN_TERM_EXCLUDE` | `_toret_markdown_exclude` | Term meta – vyloučení kategorie z Markdown |
| `TORET_MARKDOWN_TERM_SITEMAP_EXCLUDE` | `_toret_markdown_sitemap_exclude` | Term meta – skrytí kategorie ze sitemapy |
| `TORET_MARKDOWN_LOG_OPTION` | `toret_markdown_access_log` | Options klíč pro log přístupů |
| `TORET_MARKDOWN_LOG_MAX` | `500` | Výchozí max. počet záznamů logu |

### 💾 Cache logika

#### Ukládání

Vygenerovaný Markdown se ukládá jako post meta s klíčem `_toret_markdown_cache` spolu s časovým razítkem v `_toret_markdown_generated_at`. Cache se používá pouze pro příspěvky/stránky/produkty — pro termy (kategorie) a archivy se generuje vždy dynamicky.

#### Invalidace

Cache se automaticky smaže při uložení nebo smazání příspěvku (`save_post`, `before_delete_post`), pokud na ní není nastaven zámek (`_toret_markdown_lock`). Ruční smazání celé cache pro celý web je dostupné v záložce Nastavení.

#### Generování

Plugin generuje Markdown tak, že si interně stahuje (fetchuje) HTML stránky přes `wp_remote_get()` a parsuje výsledek vlastním DOM konvertorem (`toret_html_to_markdown()`). K URL se přidává speciální parametr `_tmcb={timestamp}` pro efektivní obejití CDN cache (Cloudflare apod.).

Vlastní požadavky pluginu se ověřují tajným tokenem v hlavičce `X-Toret-Markdown-Token`, ne podle User-Agenta. Díky tomu generování projde i celowebovou ochranou heslem pluginu Password Protected, která se často používá na staging webech.

### ⚙️ Převodník HTML → Markdown

#### Implementace

Plugin k převodu nepoužívá žádnou externí knihovnu. Převod zajišťuje nativní PHP `DOMDocument` v kombinaci s rekurzivním walkerem `toret_dom_node_to_markdown()`. Výstup na konci prochází čistící funkcí `toret_cleanup_markdown()`.

#### Zahozené tagy

Obsah tagů `<script>`, `<style>`, `<form>`, `<noscript>`, `<canvas>` a `<svg>` se zcela ignoruje a do finálního výstupu se vůbec nepřenáší.

#### Složité seznamy

Plugin automaticky detekuje „složité“ elementy `<ul>` (např. blog listing, výpis produktů). Položky delší než 100 znaků nebo ty obsahující nadpisy se pak renderují jako jasné sekce oddělené `---` místo klasických odrážek.

#### Cloudflare email

Plugin rozpozná Cloudflare email ochranu (`/cdn-cgi/l/email-protection#…`) a automaticky dekóduje skutečnou e-mailovou adresu přímo do čitelného výstupu.

### 🔌 AJAX endpointy

| Action | Nonce | Popis |
| --- | --- | --- |
| `toret_markdown_generate` | `toret_markdown_ajax_generate` | Vygeneruje nebo přegeneruje Markdown cache pro daný `post_id`. Vyžaduje administrátorské oprávnění `edit_posts`. |
| `toret_markdown_unlock_cache` | `toret_markdown_unlock_cache` | Odemkne zamčenou cache příspěvku — smaže meta `_toret_markdown_lock`. Vyžaduje oprávnění `edit_post` pro daný post. |

### 🗄️ Databáze – uložené hodnoty

| Option / Meta klíč | Typ | Popis |
| --- | --- | --- |
| `toret_markdown_options` | option | Veškerá nastavení pluginu jako serializované pole |
| `toret_markdown_access_log` | option | Log přístupů jako JSON pole (max. záznamů dle nastavení) |
| `toret_markdown_sitemap_content` | option | Ručně přepsaný obsah sitemapy (prázdné = dynamické generování) |
| `toret_markdown_llms_content` | option | Obsah souboru llms.txt |
| `_toret_markdown_cache` | post meta | Vygenerovaný Markdown obsah příspěvku |
| `_toret_markdown_generated_at` | post meta | Datum a čas posledního vygenerování cache |
| `_toret_markdown_exclude` | post/term meta | Vyloučení z Markdown výstupu |
| `_toret_markdown_lock` | post meta | Zámek automatické regenerace cache |
| `_toret_markdown_sitemap_exclude` | post/term meta | Skrytí ze sitemapy |
| `toret_markdown_agents_content` | option | Ručně upravený obsah agents.md (prázdné = dynamické generování) |
| `toret_markdown_loopback_token` | option | Tajný token pro vlastní požadavky pluginu |
| `_toret_markdown_fetch_error` | post meta | Chyba posledního stažení vyrenderované stránky |