{"id":10807,"date":"2026-05-20T21:31:24","date_gmt":"2026-05-20T13:31:24","guid":{"rendered":"https:\/\/aeosub.com\/one-v-llm-serve\/"},"modified":"2026-05-20T21:31:24","modified_gmt":"2026-05-20T13:31:24","slug":"one-v-llm-serve","status":"publish","type":"post","link":"https:\/\/aeosub.com\/zh\/one-v-llm-serve\/","title":{"rendered":"One-V LLM Serve"},"content":{"rendered":"<div class=\"post-img\" style=\"margin-bottom: 25px\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/one-v-llm-serve\/assets\/banner-1544x500.png?rev=3538911\" alt=\"One-V LLM Serve\" style=\"width: 100%;height: auto;border-radius: 12px\"><\/div>\n<div class=\"plugin-info-card\" style=\"border: 1px solid #e2e8f0;border-radius: 10px;overflow: hidden;margin-bottom: 30px;font-family: -apple-system, system-ui, sans-serif;background: #fff\">\n<table style=\"width: 100%;border-collapse: collapse;font-size: 14px\">\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 15px 20px;text-align: left;width: 35%;color: #4a5568;background: #fcfcfc\"><img decoding=\"async\" src=\"https:\/\/ps.w.org\/one-v-llm-serve\/assets\/icon-256x256.png?rev=3538981\" style=\"width: 40px;height: 40px;border-radius: 6px;margin-right: 12px;vertical-align: middle\"> Developer<\/th>\n<td style=\"padding: 15px 20px;font-weight: 500\"><a href=\"https:\/\/profiles.wordpress.org\/onevteam\/\" target=\"_blank\" rel=\"noopener\">onevteam<\/a><\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Version<\/th>\n<td style=\"padding: 12px 20px\">v1.0.2<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Active Installs<\/th>\n<td style=\"padding: 12px 20px\">0 +<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Requires \/ Tested<\/th>\n<td style=\"padding: 12px 20px\">6.0 \/ 6.9.4<\/td>\n<\/tr>\n<tr style=\"border-bottom: 1px solid #edf2f7\">\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Last Updated<\/th>\n<td style=\"padding: 12px 20px\">2026-05-20 12:35pm GMT<\/td>\n<\/tr>\n<tr>\n<th style=\"padding: 12px 20px;text-align: left;color: #4a5568;background: #fcfcfc\">Official Link<\/th>\n<td style=\"padding: 12px 20px\"><a href=\"https:\/\/wordpress.org\/plugins\/one-v-llm-serve\/\" target=\"_blank\" style=\"text-decoration: none;color: #4a3bca;font-weight: bold\" rel=\"noopener\">View Details \u2192<\/a><\/td>\n<\/tr>\n<\/table><\/div>\n<div class=\"plugin-short-desc\" style=\"margin: 20px 0;padding: 12px 15px;background: #f9fafb;border-left: 4px solid #4a3bca;border-radius: 6px;font-style: italic;color: #4a5568\">Serve clean Markdown versions of every public page at the same URL with a .md extension for AI crawlers, LLMs, and GEO optimization.<\/div>\n<p><strong>One-V LLM Serve<\/strong> makes every public page on your WordPress site available as clean Markdown at the same URL with a <code>.md<\/code> extension \u2014 zero configuration required.<\/p>\n<pre><code>https:\/\/example.com\/about\/      <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2190<\/span> HTML page for humans\nhttps:\/\/example.com\/about.md    <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2190<\/span> clean Markdown for AI\n<\/code><\/pre>\n<p>AI systems \u2014 ChatGPT, Perplexity, ClaudeBot, Google AI Overviews, and most RAG pipelines \u2014 parse Markdown far more efficiently than HTML. When these systems encounter an HTML page, they must strip navigation, headers, footers, sidebars, scripts, and tracking pixels before they can read the actual content. This noise introduces errors, increases token cost, and leads to lower-quality outputs.<\/p>\n<p>The Markdown file contains a configurable YAML frontmatter block followed by the page title, headings in correct hierarchy, and the body text. Nothing else.<\/p>\n<h4>Core features<\/h4>\n<ul>\n<li><strong>Zero-config Markdown endpoint<\/strong> for every public post, page, and custom post type<\/li>\n<li><strong>YAML frontmatter<\/strong> with configurable fields (<code>title<\/code>, <code>date<\/code>, <code>modified<\/code>, <code>url<\/code>, <code>description<\/code>, <code>image<\/code>, <code>tags<\/code>, <code>categories<\/code>, <code>lang<\/code>, <code>type<\/code>)<\/li>\n<li><strong><code>\/llms.txt<\/code> discovery file<\/strong> at the site root following the <a href=\"https:\/\/llmstxt.org\" rel=\"nofollow ugc noopener\" target=\"_blank\">llmstxt.org<\/a> convention<\/li>\n<li><strong>Taxonomy archives<\/strong> as Markdown \u2014 <code>\/category\/news.md<\/code>, <code>\/tag\/foo.md<\/code>, custom taxonomies<\/li>\n<li><strong><code>?format=markdown<\/code> query parameter<\/strong> as an alternative to the <code>.md<\/code> URL on any singular page<\/li>\n<li><strong>Per-post exclude<\/strong> via a sidebar checkbox on the post editor<\/li>\n<li><strong>Works with Classic Editor and Gutenberg<\/strong> via the <code>the_content<\/code> filter<\/li>\n<li><strong>ACF integration<\/strong> \u2014 opt-in per-post: pick which text, textarea, WYSIWYG, URL, email, or link fields to append below the body<\/li>\n<\/ul>\n<h4>Discoverability<\/h4>\n<ul>\n<li><strong><code>Link: rel=\"alternate\"; type=\"text\/markdown\"<\/code><\/strong> HTTP header on every HTML page<\/li>\n<li><strong><code>&lt;link rel=\"alternate\"&gt;<\/code><\/strong> tag in <code>&lt;head&gt;<\/code> for HTML-based discovery<\/li>\n<li><strong><code>Allow: \/*.md$<\/code><\/strong> directive in <code>robots.txt<\/code><\/li>\n<li><strong><code>X-Robots-Tag: index, follow<\/code><\/strong> on <code>.md<\/code> responses<\/li>\n<li><strong>CORS <code>Access-Control-Allow-Origin: *<\/code><\/strong> on <code>.md<\/code> and <code>\/llms.txt<\/code> so browser-based AI clients can fetch them<\/li>\n<\/ul>\n<h4>Operations<\/h4>\n<ul>\n<li><strong>Transient caching<\/strong> with automatic invalidation on <code>save_post<\/code>, on ACF field value saves, on any ACF field group change, and on plugin settings save<\/li>\n<li><strong>&#8220;Clear cache&#8221; button<\/strong> in the settings page<\/li>\n<li><strong>Admin notice<\/strong> on fallback HTTP fetch failures<\/li>\n<li><strong>&#8220;Settings&#8221; link<\/strong> next to the plugin row in Plugins screen<\/li>\n<li><strong>&#8220;View .md&#8221; row action<\/strong> in the Posts and Pages list tables<\/li>\n<\/ul>\n<h4>Developer hooks<\/h4>\n<ul>\n<li><strong><code>ovls_markdown<\/code><\/strong> filter for the final Markdown output<\/li>\n<li><strong><code>ovls_frontmatter<\/code><\/strong> filter for adding, removing, or modifying frontmatter fields<\/li>\n<li><strong><code>ovls_content_queries<\/code><\/strong> filter for the HTML extraction XPath cascade<\/li>\n<\/ul>\n<h4>How it works<\/h4>\n<p>Each request to <code>\/about.md<\/code> is captured by a WordPress rewrite rule and routed through the plugin&#8217;s content generator. The generator runs the post through <code>apply_filters( 'the_content', ... )<\/code> \u2014 the same pipeline WordPress uses on the front end \u2014 so Classic Editor, Gutenberg, and shortcodes all work without separate code paths. The rendered HTML is converted to Markdown via <code>league\/html-to-markdown<\/code>, then cached in a WordPress transient.<\/p>\n<p>The cache is invalidated automatically on <code>save_post<\/code>, on ACF field\/group changes, and whenever plugin settings are saved. A manual <strong>Clear cache<\/strong> button is also available on the settings page.<\/p>\n<h4>Access methods<\/h4>\n<p>There are three equivalent ways to request the Markdown version of a page:<\/p>\n<ul>\n<li><code>.md<\/code> extension \u2014 <code>https:\/\/example.com\/about.md<\/code><\/li>\n<li><code>?format=markdown<\/code> query \u2014 <code>https:\/\/example.com\/about\/?format=markdown<\/code><\/li>\n<li><code>Link: rel=\"alternate\"<\/code> header \u2014 returned by every HTML page<\/li>\n<\/ul>\n<p>The <code>.md<\/code> URL is the recommended canonical form.<\/p>\n<h4>ACF integration<\/h4>\n<p>When <a href=\"https:\/\/www.advancedcustomfields.com\/\" rel=\"nofollow ugc noopener\" target=\"_blank\">Advanced Custom Fields<\/a> is active, ACF field rendering is opt-in at two levels:<\/p>\n<ol>\n<li><strong>Site defaults per post type<\/strong> \u2014 at <strong>Settings <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> One-V LLM Serve <span aria-hidden=\"true\" class=\"wp-exclude-emoji\">\u2192<\/span> ACF Defaults<\/strong>, tick fields that should be appended to every post of a given post type.<\/li>\n<li><strong>Per-post override<\/strong> \u2014 the <strong>One-V LLM Serve<\/strong> metabox on each post editor lists every supported ACF field applicable to that post. Tick fields to replace the site defaults for that one post.<\/li>\n<\/ol>\n<p>Supported ACF types: <code>text<\/code>, <code>textarea<\/code>, <code>wysiwyg<\/code>, <code>url<\/code>, <code>email<\/code>, <code>link<\/code>. Each selected field is rendered under a <code>## Field Label<\/code> heading. Empty fields are skipped.<\/p>\n<h3>Disclaimer<\/h3>\n<p>This plugin is provided &#8220;as is&#8221;, without warranty of any kind, express or implied, in accordance with the GNU General Public License v2 or later. The authors and contributors are not liable for any direct, indirect, incidental, special, or consequential damages \u2014 including but not limited to data loss, lost profits, business interruption, search-ranking changes, or third-party claims \u2014 arising from the use of, or inability to use, this software, even if advised of the possibility of such damages.<\/p>\n<p>By installing and activating the plugin you acknowledge that:<\/p>\n<ul>\n<li>You are responsible for testing the plugin in a staging environment before deploying to production.<\/li>\n<li>You are responsible for the content this plugin exposes as Markdown \u2014 <code>.md<\/code> URLs and <code>\/llms.txt<\/code> serve the same content as their HTML counterparts and are intended to be crawled and consumed by AI systems and third-party LLMs.<\/li>\n<li>The plugin does not transmit data to any external service. All Markdown generation, caching, and file writes happen on your own server.<\/li>\n<\/ul>\n<p>Nothing in this disclaimer is intended to exclude or limit liability for matters that cannot lawfully be excluded under the consumer-protection laws of your jurisdiction. For the full legal terms see the GPLv2 license at <a href=\"https:\/\/www.gnu.org\/licenses\/gpl-2.0.html\" rel=\"nofollow ugc noopener\" target=\"_blank\">https:\/\/www.gnu.org\/licenses\/gpl-2.0.html<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>Serve clean Markdown versions of every public page at the same URL with a .md extension for AI crawlers, LLMs, and GEO optimization.<\/p>","protected":false},"author":1,"featured_media":9317,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[252],"tags":[550,544,924,925,554,555],"class_list":["post-10807","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-trends","tag-ai","tag-geo","tag-llm","tag-markdown","tag-seo","tag-wordpress-plugin"],"_links":{"self":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10807","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/comments?post=10807"}],"version-history":[{"count":0,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/posts\/10807\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media\/9317"}],"wp:attachment":[{"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/media?parent=10807"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/categories?post=10807"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/aeosub.com\/zh\/wp-json\/wp\/v2\/tags?post=10807"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}