內容簡介
**總結:**AI代理、LLMs和爬蟲必須穿越導航欄、側邊欄、廣告和評論表單才能抵達他們想要的內容,每一個元素都需要代幣。Cloudflare將一篇部落格文章從HTML轉換為Markdown後,測量代幣使用量減少了80%(從16,180個代幣降至3,150個)。
**問題與答案:**
1. 哪個工具將Markdown端點添加到每個已發佈的文章和頁面呢?
- 答:Botkibble
2. Cloudflare在哪些計劃中提供了Markdown for Agents?
- 答:Pro、Business和Enterprise計劃
3. 提供Markdown的三種請求方式是什麼?
- 答:(1) 添加.md後綴到任何文章或頁面的URL (2) 添加?format=markdown查詢參數到任何文章或頁面的URL (3) 通過在請求標頭中發送Accept: text/markdown來進行內容協商
4. 每個回應中都包含哪些內容?
- 答:結構化的元數據標頭、乾淨的Markdown轉換、Content-Type標頭、Content-Signal標頭、X-Markdown-Tokens標頭、發現方式以及自動緩存失效。
5. Botkibble如何處理Markdown文件的性能?
- 答:Botkibble在第一次請求時將Markdown寫入磁碟,然後將其作為靜態文件提供。內建的快速路徑在WordPress的init鉤子期間提供緩存文件,避免主要數據庫查詢運行。不需要額外配置。
外掛標籤
開發者團隊
原文外掛簡介
AI agents, LLMs, and crawlers have to wade through navigation bars, sidebars, ads, and comment forms to reach the content they want, and every element costs tokens. Cloudflare measured an 80% reduction in token usage when converting a blog post from HTML to Markdown (16,180 tokens down to 3,150).
Botkibble adds a Markdown endpoint to every published post and page.
Cloudflare offers Markdown for Agents at the CDN edge on Pro, Business, and Enterprise plans. Botkibble does the same thing (for free) at the origin, so it works on any host.
GitHub Repository
Three ways to request Markdown:
.md suffix: append .md to any post or page URL (e.g. example.com/my-post.md)
Query parameter: add ?format=markdown to any post or page URL
Content negotiation: send Accept: text/markdown in the request header
What’s in every response:
Structured metadata header with title, date, categories, tags, word count, character count, and estimated token count (in YAML frontmatter format, readable by any AI agent)
Clean Markdown converted from fully-rendered post HTML (shortcodes run, filters applied)
Content-Type: text/markdown and Vary: Accept response headers
Content-Signal header for AI signal declaration — defaults to ai-train=no, search=yes, ai-input=yes — see contentsignals.org
X-Markdown-Tokens header with estimated token count
Discovery via in the HTML head and Link HTTP header
Automatic cache invalidation when a post is updated or deleted
Performance:
Botkibble writes Markdown to disk on the first request, then serves it as a static file. A built-in Fast-Path serves cached files during WordPress’s init hook, before the main database query runs. No extra configuration needed.
Add a web server rewrite rule and Botkibble bypasses PHP entirely, serving .md files the same way a server would serve an image or CSS file:
Method
Avg. response time
Standard HTML
0.97s
Markdown (cold, first request)
0.95s
Markdown (cached, PHP Fast-Path)
0.87s
Markdown (Nginx/Apache direct)
0.11s
Serving directly from disk is 88% faster than a full WordPress page load. See the Performance section below for Nginx and Apache configuration.
Security:
Drafts, private posts, and password-protected content return 403 Forbidden
Rate limits cache-miss regenerations (20/min by default) to mitigate DoS abuse
X-Robots-Tag: noindex keeps Markdown versions out of search results
Link: rel="canonical" points search engines back to the HTML version
Cache variants (optional):
You can persist alternate cached representations by adding ?botkibble_variant=slim (or any other variant name).
Variant caches are stored under:
/wp-content/uploads/botkibble/_v/
What it does NOT do:
Expose drafts, private posts, or password-protected content
Serve non-post/page content types by default
Require any configuration. Activate and it works.
Why Markdown?
HTML is expensive for AI systems to process. Cloudflare measured an 80% reduction in token usage when converting a blog post from HTML to Markdown (16,180 tokens down to 3,150).
Cloudflare now offers Markdown for Agents at the CDN edge via the Accept: text/markdown header, available on Pro, Business, and Enterprise plans.
This plugin does the same thing at the origin, so it works on any host. It also adds .md suffix URLs, ?format=markdown query parameters, YAML frontmatter, static file caching, and server-level offloading.
If you use Cloudflare, both share the same Accept: text/markdown header, Content-Signal headers, and X-Markdown-Tokens response headers.
Cloudflare currently defaults to Content-Signal: ai-train=yes, search=yes, ai-input=yes with no way to change it. Botkibble defaults to ai-train=no and lets you override the full signal per site via the botkibble_content_signal filter.
Performance & Static Offloading
This plugin supports static file offloading by writing Markdown content to /wp-content/uploads/botkibble/.
Nginx Configuration
To bypass PHP entirely and have Nginx serve the files (including variants) directly:
# Variants
location ~* ^/(_v/[^/]+/.+)\.md$ {
default_type text/markdown;
try_files /wp-content/uploads/botkibble/$1.md /index.php?$args;
}
# Default
location ~* ^/(.+)\.md$ {
default_type text/markdown;
try_files /wp-content/uploads/botkibble/$1.md /index.php?$args;
}
Apache (.htaccess)
Add this to your .htaccess before the WordPress rules:
RewriteEngine On
# Variants
RewriteCond %{DOCUMENT_ROOT}/wp-content/uploads/botkibble/_v/$1/$2.md -f
RewriteRule ^_v/([^/]+)/(.+)\.md$ /wp-content/uploads/botkibble/_v/$1/$2.md [L,T=text/markdown]
# Default
RewriteCond %{DOCUMENT_ROOT}/wp-content/uploads/botkibble/$1.md -f
RewriteRule ^(.*)\.md$ /wp-content/uploads/botkibble/$1.md [L,T=text/markdown]
Even without these rules, the plugin uses a “Fast-Path” that serves cached files from PHP before the main database query is executed.
Credits
We thank Cristi Constantin (https://github.com/cristi-constantin) for contributing cache variants, URL and SEO improvements, and fixing important bugs.
