nuxt-ai-ready 1.1.3 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +3 -1
  2. package/dist/devtools/200.html +1 -1
  3. package/dist/devtools/404.html +1 -1
  4. package/dist/devtools/_nuxt/{VknhyWgh.js → B3Ds4CMX.js} +9 -9
  5. package/dist/devtools/_nuxt/{DyJALZ6q.js → BJvOQeGa.js} +1 -1
  6. package/dist/devtools/_nuxt/{CjfD5hoM.js → BnE_ySps.js} +1 -1
  7. package/dist/devtools/_nuxt/{CZdspAFn.js → CUIIuZnV.js} +1 -1
  8. package/dist/devtools/_nuxt/{CHKympLa.js → DeQwb5tt.js} +1 -1
  9. package/dist/devtools/_nuxt/{DevtoolsPanel.qhktN3Wk.css → DevtoolsPanel.Cxop9qdH.css} +1 -1
  10. package/dist/devtools/_nuxt/{vYrR1_KZ.js → HY0PaRNK.js} +1 -1
  11. package/dist/devtools/_nuxt/{qvoJrJX7.js → Nz1-S7oK.js} +1 -1
  12. package/dist/devtools/_nuxt/builds/latest.json +1 -1
  13. package/dist/devtools/_nuxt/builds/meta/cfed7300-fd87-4d26-98a1-6e1d8a608160.json +1 -0
  14. package/dist/devtools/_nuxt/{entry.C0SdbkkM.css → entry.BLpi4vfB.css} +1 -1
  15. package/dist/devtools/_nuxt/index.rMesxbQE.css +1 -0
  16. package/dist/devtools/debug/index.html +1 -1
  17. package/dist/devtools/docs/index.html +1 -1
  18. package/dist/devtools/index.html +1 -1
  19. package/dist/devtools/llms-txt/index.html +1 -1
  20. package/dist/devtools/pages/index.html +1 -1
  21. package/dist/module.d.mts +11 -0
  22. package/dist/module.json +1 -1
  23. package/dist/module.mjs +122 -12
  24. package/dist/runtime/app/plugins/md-alternate.server.d.ts +2 -0
  25. package/dist/runtime/app/plugins/md-alternate.server.js +16 -0
  26. package/dist/runtime/llms-txt-utils.js +37 -4
  27. package/dist/runtime/server/db/drizzle/queries.d.ts +3 -1
  28. package/dist/runtime/server/db/drizzle/queries.js +71 -11
  29. package/dist/runtime/server/db/queries.d.ts +7 -1
  30. package/dist/runtime/server/db/queries.js +33 -14
  31. package/dist/runtime/server/db/schema/postgres.d.ts +34 -0
  32. package/dist/runtime/server/db/schema/postgres.js +4 -2
  33. package/dist/runtime/server/db/schema/sqlite.d.ts +38 -0
  34. package/dist/runtime/server/db/schema/sqlite.js +4 -2
  35. package/dist/runtime/server/db/schema-sql.d.ts +18 -2
  36. package/dist/runtime/server/db/schema-sql.js +100 -85
  37. package/dist/runtime/server/db/shared.d.ts +13 -3
  38. package/dist/runtime/server/db/shared.js +31 -14
  39. package/dist/runtime/server/middleware/markdown.d.ts +1 -1
  40. package/dist/runtime/server/middleware/markdown.js +103 -40
  41. package/dist/runtime/server/middleware/markdown.prerender.js +47 -3
  42. package/dist/runtime/server/utils/content.d.ts +8 -0
  43. package/dist/runtime/server/utils/content.js +4 -0
  44. package/dist/runtime/server/utils/frontmatter.d.ts +14 -0
  45. package/dist/runtime/server/utils/frontmatter.js +23 -0
  46. package/dist/runtime/server/utils/i18n.d.ts +32 -0
  47. package/dist/runtime/server/utils/i18n.js +33 -0
  48. package/dist/runtime/server/utils.d.ts +4 -0
  49. package/dist/runtime/server/utils.js +41 -8
  50. package/dist/runtime/types.d.ts +13 -0
  51. package/package.json +5 -5
  52. package/dist/devtools/_nuxt/builds/meta/2aca1f11-85cd-4d36-8731-76930fe40304.json +0 -1
  53. package/dist/devtools/_nuxt/index.DSRoq8hn.css +0 -1
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
  [![npm downloads][npm-downloads-src]][npm-downloads-href]
5
5
  [![Nuxt][nuxt-src]][nuxt-href]
6
6
 
7
- > Best practice AI & LLM discoverability for Nuxt sites
7
+ > Best practice AI & LLM discoverability for Nuxt sites. Score 100 on [`npx @vercel/agent-readability audit <URL>`](https://github.com/vercel-labs/agent-readability).
8
8
 
9
9
  ## Why Nuxt AI Ready?
10
10
 
@@ -18,11 +18,13 @@ Nuxt AI Ready implements both. It converts your pages to markdown, generates llm
18
18
 
19
19
  - 📄 **llms.txt Generation**: Auto-generate `llms.txt` and `llms-full.txt` with page metadata and full markdown content
20
20
  - 🚀 **On-Demand Markdown**: Any route available as `.md` (e.g., `/about` → `/about.md`), automatically served to AI crawlers
21
+ - 📝 **[Nuxt Content](https://content.nuxt.com) Integration**: Routes backed by a page collection serve source markdown directly, skipping HTML→markdown conversion
21
22
  - 📡 **Content Signals**: Configure AI training/search/input permissions via [Nuxt Robots](https://nuxtseo.com/robots)
22
23
  - 🌐 **Sitemap Integration**: Index AI-allowed pages via [Nuxt Sitemap](https://nuxtseo.com/sitemap)
23
24
  - ⚡ **MCP Server**: `list_pages` and `search_pages` tools with FTS5 full-text search
24
25
  - 🗄️ **Runtime Indexing**: Index pages on-demand without prerendering, with SQLite/D1/LibSQL support
25
26
  - 🔔 **[IndexNow](https://nuxtseo.com/ai-ready/guides/indexnow)**: Instantly notify Bing, Yandex, and other search engines when pages change
27
+ - 🌏 **[i18n Aware](https://nuxtseo.com/ai-ready/guides/i18n)**: Auto-detects [`@nuxtjs/i18n`](https://i18n.nuxtjs.org/) for hreflang `Link` headers, locale-tagged frontmatter, and an Available Languages section in `llms.txt`
26
28
  - 🧠 **[RAG Ready](https://nuxtseo.com/ai-ready/advanced/rag-example)**: Markdown output optimized for vectorizing and semantic search
27
29
 
28
30
  ## Installation
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-ai-ready/_nuxt/entry.C0SdbkkM.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-ai-ready/_nuxt/VknhyWgh.js"><script type="module" src="/__nuxt-ai-ready/_nuxt/VknhyWgh.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-ai-ready",buildId:"2aca1f11-85cd-4d36-8731-76930fe40304",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1776855664906,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-ai-ready/_nuxt/entry.BLpi4vfB.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-ai-ready/_nuxt/B3Ds4CMX.js"><script type="module" src="/__nuxt-ai-ready/_nuxt/B3Ds4CMX.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-ai-ready",buildId:"cfed7300-fd87-4d26-98a1-6e1d8a608160",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1777105835626,false]</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-ai-ready/_nuxt/entry.C0SdbkkM.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-ai-ready/_nuxt/VknhyWgh.js"><script type="module" src="/__nuxt-ai-ready/_nuxt/VknhyWgh.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-ai-ready",buildId:"2aca1f11-85cd-4d36-8731-76930fe40304",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1776855664906,false]</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="stylesheet" href="/__nuxt-ai-ready/_nuxt/entry.BLpi4vfB.css" crossorigin><link rel="modulepreload" as="script" crossorigin href="/__nuxt-ai-ready/_nuxt/B3Ds4CMX.js"><script type="module" src="/__nuxt-ai-ready/_nuxt/B3Ds4CMX.js" crossorigin></script><script>"use strict";(()=>{const t=window,e=document.documentElement,c=["dark","light"],n=getStorageValue("localStorage","nuxt-color-mode")||"system";let i=n==="system"?u():n;const r=e.getAttribute("data-color-mode-forced");r&&(i=r),l(i),t["__NUXT_COLOR_MODE__"]={preference:n,value:i,getColorScheme:u,addColorScheme:l,removeColorScheme:d};function l(o){const s=""+o+"",a="";e.classList?e.classList.add(s):e.className+=" "+s,a&&e.setAttribute("data-"+a,o)}function d(o){const s=""+o+"",a="";e.classList?e.classList.remove(s):e.className=e.className.replace(new RegExp(s,"g"),""),a&&e.removeAttribute("data-"+a)}function f(o){return t.matchMedia("(prefers-color-scheme"+o+")")}function u(){if(t.matchMedia&&f("").media!=="not all"){for(const o of c)if(f(":"+o).matches)return o}return"light"}})();function getStorageValue(t,e){switch(t){case"localStorage":return window.localStorage.getItem(e);case"sessionStorage":return window.sessionStorage.getItem(e);case"cookie":return getCookie(e);default:return null}}function getCookie(t){const c=("; "+window.document.cookie).split("; "+t+"=");if(c.length===2)return c.pop()?.split(";").shift()}</script></head><body><div id="__nuxt" class="isolate"></div><div id="teleports"></div><script>window.__NUXT__={};window.__NUXT__.config={public:{},app:{baseURL:"/__nuxt-ai-ready",buildId:"cfed7300-fd87-4d26-98a1-6e1d8a608160",buildAssetsDir:"/_nuxt/",cdnURL:""}}</script><script type="application/json" data-nuxt-data="nuxt-app" data-ssr="false" id="__NUXT_DATA__">[{"prerenderedAt":1,"serverRendered":2},1777105835626,false]</script></body></html>