@sonordev/site-kit 1.2.7
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.
- package/README.md +376 -0
- package/dist/SetupWizard-Cki06kB0.d.mts +12 -0
- package/dist/SetupWizard-Cki06kB0.d.ts +12 -0
- package/dist/analytics/index.d.mts +93 -0
- package/dist/analytics/index.d.ts +93 -0
- package/dist/analytics/index.js +89 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/index.mjs +71 -0
- package/dist/analytics/index.mjs.map +1 -0
- package/dist/api-CWtoFJCO.d.mts +137 -0
- package/dist/api-CWtoFJCO.d.ts +137 -0
- package/dist/blog/index.d.mts +305 -0
- package/dist/blog/index.d.ts +305 -0
- package/dist/blog/index.js +1578 -0
- package/dist/blog/index.js.map +1 -0
- package/dist/blog/index.mjs +1562 -0
- package/dist/blog/index.mjs.map +1 -0
- package/dist/blog/server.d.mts +229 -0
- package/dist/blog/server.d.ts +229 -0
- package/dist/blog/server.js +692 -0
- package/dist/blog/server.js.map +1 -0
- package/dist/blog/server.mjs +666 -0
- package/dist/blog/server.mjs.map +1 -0
- package/dist/chunk-24277A3Q.mjs +968 -0
- package/dist/chunk-24277A3Q.mjs.map +1 -0
- package/dist/chunk-373TK6TZ.js +321 -0
- package/dist/chunk-373TK6TZ.js.map +1 -0
- package/dist/chunk-3MYZS6PD.js +30 -0
- package/dist/chunk-3MYZS6PD.js.map +1 -0
- package/dist/chunk-43GBM4SX.js +283 -0
- package/dist/chunk-43GBM4SX.js.map +1 -0
- package/dist/chunk-4XPGGLVP.mjs +53 -0
- package/dist/chunk-4XPGGLVP.mjs.map +1 -0
- package/dist/chunk-622GAQP5.js +2008 -0
- package/dist/chunk-622GAQP5.js.map +1 -0
- package/dist/chunk-6BIPAKL4.mjs +28 -0
- package/dist/chunk-6BIPAKL4.mjs.map +1 -0
- package/dist/chunk-6ZCISNAB.mjs +343 -0
- package/dist/chunk-6ZCISNAB.mjs.map +1 -0
- package/dist/chunk-72MQFHYJ.js +1429 -0
- package/dist/chunk-72MQFHYJ.js.map +1 -0
- package/dist/chunk-7557OTHW.js +62 -0
- package/dist/chunk-7557OTHW.js.map +1 -0
- package/dist/chunk-7FUV73JZ.js +981 -0
- package/dist/chunk-7FUV73JZ.js.map +1 -0
- package/dist/chunk-7RF6PVHA.mjs +324 -0
- package/dist/chunk-7RF6PVHA.mjs.map +1 -0
- package/dist/chunk-7RYCHO6D.mjs +134 -0
- package/dist/chunk-7RYCHO6D.mjs.map +1 -0
- package/dist/chunk-7UKPRW25.mjs +1999 -0
- package/dist/chunk-7UKPRW25.mjs.map +1 -0
- package/dist/chunk-7URAOG2M.js +14864 -0
- package/dist/chunk-7URAOG2M.js.map +1 -0
- package/dist/chunk-AFAO3TGS.mjs +810 -0
- package/dist/chunk-AFAO3TGS.mjs.map +1 -0
- package/dist/chunk-BYLIU6XG.js +343 -0
- package/dist/chunk-BYLIU6XG.js.map +1 -0
- package/dist/chunk-D63MUKZ6.mjs +4423 -0
- package/dist/chunk-D63MUKZ6.mjs.map +1 -0
- package/dist/chunk-DDKW2FNA.js +390 -0
- package/dist/chunk-DDKW2FNA.js.map +1 -0
- package/dist/chunk-DQYMKR27.mjs +341 -0
- package/dist/chunk-DQYMKR27.mjs.map +1 -0
- package/dist/chunk-DW5UJKHH.js +221 -0
- package/dist/chunk-DW5UJKHH.js.map +1 -0
- package/dist/chunk-EEZCR6E6.js +50 -0
- package/dist/chunk-EEZCR6E6.js.map +1 -0
- package/dist/chunk-GCJXQ4AG.mjs +59 -0
- package/dist/chunk-GCJXQ4AG.mjs.map +1 -0
- package/dist/chunk-JGNQK2G6.mjs +14845 -0
- package/dist/chunk-JGNQK2G6.mjs.map +1 -0
- package/dist/chunk-JTLOJLWQ.mjs +563 -0
- package/dist/chunk-JTLOJLWQ.mjs.map +1 -0
- package/dist/chunk-K23A4G76.mjs +202 -0
- package/dist/chunk-K23A4G76.mjs.map +1 -0
- package/dist/chunk-KKU3K7RG.js +336 -0
- package/dist/chunk-KKU3K7RG.js.map +1 -0
- package/dist/chunk-KUGMH4ZF.js +571 -0
- package/dist/chunk-KUGMH4ZF.js.map +1 -0
- package/dist/chunk-LBVWVP72.js +110 -0
- package/dist/chunk-LBVWVP72.js.map +1 -0
- package/dist/chunk-LIVWLY2P.js +138 -0
- package/dist/chunk-LIVWLY2P.js.map +1 -0
- package/dist/chunk-M2T6R7BA.mjs +1003 -0
- package/dist/chunk-M2T6R7BA.mjs.map +1 -0
- package/dist/chunk-MV3QN7PW.mjs +47 -0
- package/dist/chunk-MV3QN7PW.mjs.map +1 -0
- package/dist/chunk-OB7E654K.js +72 -0
- package/dist/chunk-OB7E654K.js.map +1 -0
- package/dist/chunk-OIIKTGRL.mjs +380 -0
- package/dist/chunk-OIIKTGRL.mjs.map +1 -0
- package/dist/chunk-P3UWIUJS.mjs +1427 -0
- package/dist/chunk-P3UWIUJS.mjs.map +1 -0
- package/dist/chunk-PKN27UMH.mjs +136 -0
- package/dist/chunk-PKN27UMH.mjs.map +1 -0
- package/dist/chunk-QXV4667R.mjs +105 -0
- package/dist/chunk-QXV4667R.mjs.map +1 -0
- package/dist/chunk-S7FRYNSU.mjs +315 -0
- package/dist/chunk-S7FRYNSU.mjs.map +1 -0
- package/dist/chunk-TFLQX7K7.mjs +68 -0
- package/dist/chunk-TFLQX7K7.mjs.map +1 -0
- package/dist/chunk-UWE5PCYJ.mjs +279 -0
- package/dist/chunk-UWE5PCYJ.mjs.map +1 -0
- package/dist/chunk-UYFDNX2F.js +4469 -0
- package/dist/chunk-UYFDNX2F.js.map +1 -0
- package/dist/chunk-W4PALSGM.js +350 -0
- package/dist/chunk-W4PALSGM.js.map +1 -0
- package/dist/chunk-WECQ6KOB.js +1008 -0
- package/dist/chunk-WECQ6KOB.js.map +1 -0
- package/dist/chunk-XQQWI6WB.js +814 -0
- package/dist/chunk-XQQWI6WB.js.map +1 -0
- package/dist/chunk-XZJOZJB6.js +140 -0
- package/dist/chunk-XZJOZJB6.js.map +1 -0
- package/dist/chunk-ZSMWDLMK.js +63 -0
- package/dist/chunk-ZSMWDLMK.js.map +1 -0
- package/dist/cli/index.js +37243 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/index.mjs +37209 -0
- package/dist/cli/index.mjs.map +1 -0
- package/dist/commerce/index.d.mts +170 -0
- package/dist/commerce/index.d.ts +170 -0
- package/dist/commerce/index.js +174 -0
- package/dist/commerce/index.js.map +1 -0
- package/dist/commerce/index.mjs +5 -0
- package/dist/commerce/index.mjs.map +1 -0
- package/dist/commerce/server.d.mts +107 -0
- package/dist/commerce/server.d.ts +107 -0
- package/dist/commerce/server.js +187 -0
- package/dist/commerce/server.js.map +1 -0
- package/dist/commerce/server.mjs +177 -0
- package/dist/commerce/server.mjs.map +1 -0
- package/dist/config/index.d.mts +43 -0
- package/dist/config/index.d.ts +43 -0
- package/dist/config/index.js +66 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/index.mjs +64 -0
- package/dist/config/index.mjs.map +1 -0
- package/dist/engage/index.d.mts +33 -0
- package/dist/engage/index.d.ts +33 -0
- package/dist/engage/index.js +22 -0
- package/dist/engage/index.js.map +1 -0
- package/dist/engage/index.mjs +5 -0
- package/dist/engage/index.mjs.map +1 -0
- package/dist/forms/index.d.mts +437 -0
- package/dist/forms/index.d.ts +437 -0
- package/dist/forms/index.js +1168 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/index.mjs +1142 -0
- package/dist/forms/index.mjs.map +1 -0
- package/dist/generators-2XKQMPKH.mjs +4 -0
- package/dist/generators-2XKQMPKH.mjs.map +1 -0
- package/dist/generators-DTMO36DV.js +33 -0
- package/dist/generators-DTMO36DV.js.map +1 -0
- package/dist/images/index.d.mts +4 -0
- package/dist/images/index.d.ts +4 -0
- package/dist/images/index.js +46 -0
- package/dist/images/index.js.map +1 -0
- package/dist/images/index.mjs +5 -0
- package/dist/images/index.mjs.map +1 -0
- package/dist/images/server.d.mts +69 -0
- package/dist/images/server.d.ts +69 -0
- package/dist/images/server.js +21 -0
- package/dist/images/server.js.map +1 -0
- package/dist/images/server.mjs +4 -0
- package/dist/images/server.mjs.map +1 -0
- package/dist/index.d.mts +846 -0
- package/dist/index.d.ts +846 -0
- package/dist/index.js +2623 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2416 -0
- package/dist/index.mjs.map +1 -0
- package/dist/layout/index.d.mts +53 -0
- package/dist/layout/index.d.ts +53 -0
- package/dist/layout/index.js +187 -0
- package/dist/layout/index.js.map +1 -0
- package/dist/layout/index.mjs +185 -0
- package/dist/layout/index.mjs.map +1 -0
- package/dist/llms/index.d.mts +448 -0
- package/dist/llms/index.d.ts +448 -0
- package/dist/llms/index.js +581 -0
- package/dist/llms/index.js.map +1 -0
- package/dist/llms/index.mjs +529 -0
- package/dist/llms/index.mjs.map +1 -0
- package/dist/manifest/index.d.mts +62 -0
- package/dist/manifest/index.d.ts +62 -0
- package/dist/manifest/index.js +85 -0
- package/dist/manifest/index.js.map +1 -0
- package/dist/manifest/index.mjs +83 -0
- package/dist/manifest/index.mjs.map +1 -0
- package/dist/middleware/index.d.mts +63 -0
- package/dist/middleware/index.d.ts +63 -0
- package/dist/middleware/index.js +54 -0
- package/dist/middleware/index.js.map +1 -0
- package/dist/middleware/index.mjs +51 -0
- package/dist/middleware/index.mjs.map +1 -0
- package/dist/migrator-2MQHOFDQ.mjs +4 -0
- package/dist/migrator-2MQHOFDQ.mjs.map +1 -0
- package/dist/migrator-THJCF6MZ.js +37 -0
- package/dist/migrator-THJCF6MZ.js.map +1 -0
- package/dist/redirects/index.d.mts +78 -0
- package/dist/redirects/index.d.ts +78 -0
- package/dist/redirects/index.js +26 -0
- package/dist/redirects/index.js.map +1 -0
- package/dist/redirects/index.mjs +5 -0
- package/dist/redirects/index.mjs.map +1 -0
- package/dist/reputation/index.d.mts +57 -0
- package/dist/reputation/index.d.ts +57 -0
- package/dist/reputation/index.js +21 -0
- package/dist/reputation/index.js.map +1 -0
- package/dist/reputation/index.mjs +4 -0
- package/dist/reputation/index.mjs.map +1 -0
- package/dist/robots/index.d.mts +38 -0
- package/dist/robots/index.d.ts +38 -0
- package/dist/robots/index.js +52 -0
- package/dist/robots/index.js.map +1 -0
- package/dist/robots/index.mjs +50 -0
- package/dist/robots/index.mjs.map +1 -0
- package/dist/routing-B5XS-6_W.d.mts +118 -0
- package/dist/routing-DZYzyDHw.d.ts +118 -0
- package/dist/scanner-GAF5PO5F.js +53 -0
- package/dist/scanner-GAF5PO5F.js.map +1 -0
- package/dist/scanner-LKJKW7IT.mjs +4 -0
- package/dist/scanner-LKJKW7IT.mjs.map +1 -0
- package/dist/securityHeaders-nwZ6nP4g.d.mts +24 -0
- package/dist/securityHeaders-nwZ6nP4g.d.ts +24 -0
- package/dist/seo/index.d.mts +600 -0
- package/dist/seo/index.d.ts +600 -0
- package/dist/seo/index.js +883 -0
- package/dist/seo/index.js.map +1 -0
- package/dist/seo/index.mjs +773 -0
- package/dist/seo/index.mjs.map +1 -0
- package/dist/seo/register-sitemap-cli.js +151 -0
- package/dist/seo/register-sitemap-cli.js.map +1 -0
- package/dist/seo/register-sitemap-cli.mjs +144 -0
- package/dist/seo/register-sitemap-cli.mjs.map +1 -0
- package/dist/seo/server.d.mts +107 -0
- package/dist/seo/server.d.ts +107 -0
- package/dist/seo/server.js +207 -0
- package/dist/seo/server.js.map +1 -0
- package/dist/seo/server.mjs +186 -0
- package/dist/seo/server.mjs.map +1 -0
- package/dist/server-api-EWXKOQZA.mjs +4 -0
- package/dist/server-api-EWXKOQZA.mjs.map +1 -0
- package/dist/server-api-GJPNRYUP.js +81 -0
- package/dist/server-api-GJPNRYUP.js.map +1 -0
- package/dist/setup/client.d.mts +60 -0
- package/dist/setup/client.d.ts +60 -0
- package/dist/setup/client.js +31 -0
- package/dist/setup/client.js.map +1 -0
- package/dist/setup/client.mjs +6 -0
- package/dist/setup/client.mjs.map +1 -0
- package/dist/setup/index.d.mts +5 -0
- package/dist/setup/index.d.ts +5 -0
- package/dist/setup/index.js +35 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/index.mjs +6 -0
- package/dist/setup/index.mjs.map +1 -0
- package/dist/setup/server.d.mts +14 -0
- package/dist/setup/server.d.ts +14 -0
- package/dist/setup/server.js +13 -0
- package/dist/setup/server.js.map +1 -0
- package/dist/setup/server.mjs +4 -0
- package/dist/setup/server.mjs.map +1 -0
- package/dist/site-config/index.d.mts +24 -0
- package/dist/site-config/index.d.ts +24 -0
- package/dist/site-config/index.js +17 -0
- package/dist/site-config/index.js.map +1 -0
- package/dist/site-config/index.mjs +4 -0
- package/dist/site-config/index.mjs.map +1 -0
- package/dist/sitemap/index.d.mts +96 -0
- package/dist/sitemap/index.d.ts +96 -0
- package/dist/sitemap/index.js +288 -0
- package/dist/sitemap/index.js.map +1 -0
- package/dist/sitemap/index.mjs +285 -0
- package/dist/sitemap/index.mjs.map +1 -0
- package/dist/socket-loader-J26QHHOB.js +16 -0
- package/dist/socket-loader-J26QHHOB.js.map +1 -0
- package/dist/socket-loader-R7S2YJ2J.mjs +14 -0
- package/dist/socket-loader-R7S2YJ2J.mjs.map +1 -0
- package/dist/types-0dmq3k20.d.mts +168 -0
- package/dist/types-0dmq3k20.d.ts +168 -0
- package/dist/types-Blb2QNkV.d.mts +263 -0
- package/dist/types-Blb2QNkV.d.ts +263 -0
- package/dist/types-BnCwwUX3.d.mts +250 -0
- package/dist/types-BnCwwUX3.d.ts +250 -0
- package/dist/types-CGlnp43R.d.mts +312 -0
- package/dist/types-CGlnp43R.d.ts +312 -0
- package/dist/types-D08004rU.d.mts +179 -0
- package/dist/types-D08004rU.d.ts +179 -0
- package/dist/types-DNSYU7qI.d.mts +127 -0
- package/dist/types-DNSYU7qI.d.ts +127 -0
- package/dist/types-KZP_VWZp.d.mts +266 -0
- package/dist/types-KZP_VWZp.d.ts +266 -0
- package/dist/useEventModal-BVTx69XE.d.mts +274 -0
- package/dist/useEventModal-Dx1dItTJ.d.ts +274 -0
- package/dist/web-vitals-444RLW3B.js +252 -0
- package/dist/web-vitals-444RLW3B.js.map +1 -0
- package/dist/web-vitals-KPICZIEF.mjs +241 -0
- package/dist/web-vitals-KPICZIEF.mjs.map +1 -0
- package/package.json +192 -0
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import { G as GenerateLLMSTxtOptions, a as LLMSTxtContent, S as SpeakableSchemaProps, b as SpeakableConfig, A as AEOBlockProps, c as AEOSummaryProps, d as AEODefinitionProps, e as AEOClaimProps, L as LLMsDataResponse, f as LLMBusinessInfo, g as LLMService, h as LLMFAQItem, i as LLMPageSummary } from '../types-Blb2QNkV.js';
|
|
2
|
+
export { m as AEOCitedContentProps, k as AEOEntityProps, l as AEOProvenanceListProps, C as ContentProvenance, j as LLMContactInfo } from '../types-Blb2QNkV.js';
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @sonordev/site-kit/llms - llms.txt Generator
|
|
7
|
+
*
|
|
8
|
+
* Generates llms.txt content following the llms.txt specification.
|
|
9
|
+
* https://llmstxt.org/
|
|
10
|
+
*
|
|
11
|
+
* The llms.txt file provides a markdown-formatted overview of a website
|
|
12
|
+
* specifically designed for LLM consumption. It helps AI systems understand
|
|
13
|
+
* what a business does, what services it offers, and how to answer questions.
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Generate llms.txt content from Portal data
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```ts
|
|
21
|
+
* // app/llms.txt/route.ts
|
|
22
|
+
* import { generateLLMsTxt } from '@sonordev/site-kit/llms'
|
|
23
|
+
*
|
|
24
|
+
* export async function GET() {
|
|
25
|
+
* const { markdown } = await generateLLMsTxt({
|
|
26
|
+
* projectId: process.env.UPTRADE_PROJECT_ID!
|
|
27
|
+
* })
|
|
28
|
+
*
|
|
29
|
+
* return new Response(markdown, {
|
|
30
|
+
* headers: { 'Content-Type': 'text/plain; charset=utf-8' }
|
|
31
|
+
* })
|
|
32
|
+
* }
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
declare function generateLLMsTxt(options: GenerateLLMSTxtOptions): Promise<LLMSTxtContent>;
|
|
36
|
+
/**
|
|
37
|
+
* Generate llms-full.txt with comprehensive knowledge dump
|
|
38
|
+
* Use this for AI systems that can handle larger context
|
|
39
|
+
*/
|
|
40
|
+
declare function generateLLMsFullTxt(options: GenerateLLMSTxtOptions): Promise<LLMSTxtContent>;
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @sonordev/site-kit/llms - Next.js Route Handlers
|
|
44
|
+
*
|
|
45
|
+
* Ready-to-use route handlers for /llms.txt and /llms-full.txt
|
|
46
|
+
*/
|
|
47
|
+
|
|
48
|
+
interface LLMsTxtHandlerOptions extends GenerateLLMSTxtOptions {
|
|
49
|
+
/** When true, serve static public/llms.txt if it exists (default: true for build-time flow) */
|
|
50
|
+
preferStatic?: boolean;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Create a route handler for /llms.txt
|
|
54
|
+
*
|
|
55
|
+
* Zero-config by default - uses NEXT_PUBLIC_UPTRADE_API_KEY from environment.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* // app/llms.txt/route.ts (zero-config)
|
|
60
|
+
* import { createLLMsTxtHandler } from '@sonordev/site-kit/llms'
|
|
61
|
+
*
|
|
62
|
+
* export const GET = createLLMsTxtHandler()
|
|
63
|
+
* ```
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```ts
|
|
67
|
+
* // With preferStatic: serve build-time file if exists
|
|
68
|
+
* export const GET = createLLMsTxtHandler({
|
|
69
|
+
* preferStatic: true,
|
|
70
|
+
* includeServices: false
|
|
71
|
+
* })
|
|
72
|
+
* ```
|
|
73
|
+
*/
|
|
74
|
+
declare function createLLMsTxtHandler(options?: LLMsTxtHandlerOptions): () => Promise<Response>;
|
|
75
|
+
/**
|
|
76
|
+
* Create a route handler for /llms-full.txt
|
|
77
|
+
*
|
|
78
|
+
* Zero-config by default - uses NEXT_PUBLIC_UPTRADE_API_KEY from environment.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```ts
|
|
82
|
+
* // app/llms-full.txt/route.ts (zero-config)
|
|
83
|
+
* import { createLLMsFullTxtHandler } from '@sonordev/site-kit/llms'
|
|
84
|
+
*
|
|
85
|
+
* export const GET = createLLMsFullTxtHandler()
|
|
86
|
+
* ```
|
|
87
|
+
*/
|
|
88
|
+
declare function createLLMsFullTxtHandler(options?: LLMsTxtHandlerOptions): () => Promise<Response>;
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @sonordev/site-kit/llms - Speakable Schema Generator
|
|
92
|
+
*
|
|
93
|
+
* Generates JSON-LD with SpeakableSpecification for voice assistant
|
|
94
|
+
* and AI system content extraction.
|
|
95
|
+
*
|
|
96
|
+
* @see https://schema.org/speakable
|
|
97
|
+
* @see https://developers.google.com/search/docs/appearance/structured-data/speakable
|
|
98
|
+
*/
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Generate a WebPage or Article schema with speakable specification
|
|
102
|
+
*
|
|
103
|
+
* @example
|
|
104
|
+
* ```tsx
|
|
105
|
+
* // In a page component
|
|
106
|
+
* <SpeakableSchema
|
|
107
|
+
* type="Article"
|
|
108
|
+
* name="Family Law Services in Cincinnati"
|
|
109
|
+
* url="https://heinrichlaw.com/family-law"
|
|
110
|
+
* speakable={{
|
|
111
|
+
* cssSelectors: ['.page-summary', '.key-points', 'h1']
|
|
112
|
+
* }}
|
|
113
|
+
* />
|
|
114
|
+
* ```
|
|
115
|
+
*/
|
|
116
|
+
declare function SpeakableSchema({ type, name, url, speakable, additionalProperties, }: SpeakableSchemaProps): React.ReactElement;
|
|
117
|
+
/**
|
|
118
|
+
* Create speakable schema object (for manual use or testing)
|
|
119
|
+
*/
|
|
120
|
+
declare function createSpeakableSchema(type: 'Article' | 'WebPage', name: string, url: string, speakable: SpeakableConfig, additionalProperties?: Record<string, unknown>): Record<string, unknown>;
|
|
121
|
+
/**
|
|
122
|
+
* Default speakable CSS selectors for common page elements
|
|
123
|
+
*/
|
|
124
|
+
declare const DEFAULT_SPEAKABLE_SELECTORS: {
|
|
125
|
+
/** Standard page elements */
|
|
126
|
+
page: string[];
|
|
127
|
+
/** Article/blog post elements */
|
|
128
|
+
article: string[];
|
|
129
|
+
/** Service page elements */
|
|
130
|
+
service: string[];
|
|
131
|
+
/** FAQ page elements */
|
|
132
|
+
faq: string[];
|
|
133
|
+
/** Contact page elements */
|
|
134
|
+
contact: string[];
|
|
135
|
+
};
|
|
136
|
+
/**
|
|
137
|
+
* Get recommended speakable selectors for a page type
|
|
138
|
+
*/
|
|
139
|
+
declare function getSpeakableSelectorsForPage(pageType: 'page' | 'article' | 'service' | 'faq' | 'contact'): string[];
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @sonordev/site-kit/llms - AEO Components
|
|
143
|
+
*
|
|
144
|
+
* Answer Engine Optimization (AEO) components for structuring content
|
|
145
|
+
* in a way that AI systems can easily extract and cite.
|
|
146
|
+
*
|
|
147
|
+
* These components create semantic HTML with proper structure for:
|
|
148
|
+
* - Featured snippets
|
|
149
|
+
* - AI-generated answers
|
|
150
|
+
* - Voice assistant responses
|
|
151
|
+
* - AI retrieval and citation (Sonor AI Visibility)
|
|
152
|
+
*/
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* AEOBlock - Generic content block optimized for AI extraction
|
|
156
|
+
*
|
|
157
|
+
* Wraps content with semantic HTML and Sonor data attributes.
|
|
158
|
+
* Use for any content you want AI systems to prioritize.
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```tsx
|
|
162
|
+
* <AEOBlock type="answer" question="What is family law?" speakable>
|
|
163
|
+
* Family law is the area of legal practice that deals with family-related
|
|
164
|
+
* matters such as divorce, child custody, adoption, and domestic relations.
|
|
165
|
+
* </AEOBlock>
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
declare function AEOBlock({ id, type, question, speakable, entityId, children, className, }: AEOBlockProps): React.ReactElement;
|
|
169
|
+
/**
|
|
170
|
+
* AEOSummary - Key points summary for AI extraction
|
|
171
|
+
*
|
|
172
|
+
* Creates a scannable list of key points that AI can easily cite.
|
|
173
|
+
* Perfect for "at a glance" or "key takeaways" sections.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```tsx
|
|
177
|
+
* <AEOSummary
|
|
178
|
+
* title="Key Points"
|
|
179
|
+
* points={[
|
|
180
|
+
* "Family law covers divorce, custody, and adoption",
|
|
181
|
+
* "Ohio is an equitable distribution state",
|
|
182
|
+
* "Child custody decisions prioritize the child's best interests"
|
|
183
|
+
* ]}
|
|
184
|
+
* />
|
|
185
|
+
* ```
|
|
186
|
+
*/
|
|
187
|
+
declare function AEOSummary({ title, points, speakable, entityId, className, }: AEOSummaryProps): React.ReactElement;
|
|
188
|
+
/**
|
|
189
|
+
* AEODefinition - Term definition optimized for featured snippets
|
|
190
|
+
*
|
|
191
|
+
* Creates a clear definition format that works well for
|
|
192
|
+
* "What is X?" queries in AI search results.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```tsx
|
|
196
|
+
* <AEODefinition
|
|
197
|
+
* term="Equitable Distribution"
|
|
198
|
+
* definition="A legal principle used in Ohio divorce cases where marital
|
|
199
|
+
* property is divided fairly, though not necessarily equally, between spouses."
|
|
200
|
+
* />
|
|
201
|
+
* ```
|
|
202
|
+
*/
|
|
203
|
+
declare function AEODefinition({ term, definition, speakable, entityId, source, className, }: AEODefinitionProps): React.ReactElement;
|
|
204
|
+
/**
|
|
205
|
+
* AEOSteps - How-to steps for featured snippets
|
|
206
|
+
*
|
|
207
|
+
* Creates numbered steps with HowTo schema markup.
|
|
208
|
+
*
|
|
209
|
+
* @example
|
|
210
|
+
* ```tsx
|
|
211
|
+
* <AEOSteps title="How to File for Divorce in Ohio">
|
|
212
|
+
* <AEOStep number={1} name="Gather Documents">
|
|
213
|
+
* Collect financial records, property deeds, and marriage certificate.
|
|
214
|
+
* </AEOStep>
|
|
215
|
+
* <AEOStep number={2} name="File Petition">
|
|
216
|
+
* Submit divorce petition to the county court.
|
|
217
|
+
* </AEOStep>
|
|
218
|
+
* </AEOSteps>
|
|
219
|
+
* ```
|
|
220
|
+
*/
|
|
221
|
+
declare function AEOSteps({ title, children, speakable, entityId, className, }: {
|
|
222
|
+
title: string;
|
|
223
|
+
children: React.ReactNode;
|
|
224
|
+
speakable?: boolean;
|
|
225
|
+
entityId?: string;
|
|
226
|
+
className?: string;
|
|
227
|
+
}): React.ReactElement;
|
|
228
|
+
/**
|
|
229
|
+
* AEOStep - Individual step within AEOSteps
|
|
230
|
+
*/
|
|
231
|
+
declare function AEOStep({ number, name, children, }: {
|
|
232
|
+
number: number;
|
|
233
|
+
name: string;
|
|
234
|
+
children: React.ReactNode;
|
|
235
|
+
}): React.ReactElement;
|
|
236
|
+
/**
|
|
237
|
+
* AEOComparison - Comparison table for AI extraction
|
|
238
|
+
*
|
|
239
|
+
* Creates a structured comparison that AI can understand and cite.
|
|
240
|
+
*
|
|
241
|
+
* @example
|
|
242
|
+
* ```tsx
|
|
243
|
+
* <AEOComparison
|
|
244
|
+
* title="Divorce vs. Dissolution in Ohio"
|
|
245
|
+
* items={[
|
|
246
|
+
* { aspect: 'Agreement', optionA: 'May be contested', optionB: 'Must be agreed upon' },
|
|
247
|
+
* { aspect: 'Timeline', optionA: '6-12 months', optionB: '30-90 days' },
|
|
248
|
+
* ]}
|
|
249
|
+
* labelA="Divorce"
|
|
250
|
+
* labelB="Dissolution"
|
|
251
|
+
* />
|
|
252
|
+
* ```
|
|
253
|
+
*/
|
|
254
|
+
declare function AEOComparison({ title, items, labelA, labelB, speakable, entityId, className, }: {
|
|
255
|
+
title: string;
|
|
256
|
+
items: Array<{
|
|
257
|
+
aspect: string;
|
|
258
|
+
optionA: string;
|
|
259
|
+
optionB: string;
|
|
260
|
+
}>;
|
|
261
|
+
labelA: string;
|
|
262
|
+
labelB: string;
|
|
263
|
+
speakable?: boolean;
|
|
264
|
+
entityId?: string;
|
|
265
|
+
className?: string;
|
|
266
|
+
}): React.ReactElement;
|
|
267
|
+
/**
|
|
268
|
+
* AEOClaim - AI-Verifiable Claim with Provenance
|
|
269
|
+
*
|
|
270
|
+
* Wraps factual claims with machine-readable source and confidence data.
|
|
271
|
+
* LLMs prioritize verifiable facts with clear provenance.
|
|
272
|
+
*
|
|
273
|
+
* @example
|
|
274
|
+
* ```tsx
|
|
275
|
+
* <AEOClaim
|
|
276
|
+
* source="KRS 281A.170"
|
|
277
|
+
* sourceUrl="https://apps.legislature.ky.gov/law/statutes/statute.aspx?id=6398"
|
|
278
|
+
* confidence={0.95}
|
|
279
|
+
* claimType="statute"
|
|
280
|
+
* >
|
|
281
|
+
* A CDL suspension is triggered at 26 MPH over the limit.
|
|
282
|
+
* </AEOClaim>
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
declare function AEOClaim({ source, sourceUrl, confidence, claimType, retrievedAt, children, className, }: AEOClaimProps): React.ReactElement;
|
|
286
|
+
/**
|
|
287
|
+
* AEOEntity - Inline entity annotation
|
|
288
|
+
*
|
|
289
|
+
* Wraps entity mentions with machine-readable entity IDs for knowledge graph linking.
|
|
290
|
+
*
|
|
291
|
+
* @example
|
|
292
|
+
* ```tsx
|
|
293
|
+
* <AEOEntity entityId="person-123" entityType="person" name="Shannon Sexton">
|
|
294
|
+
* Attorney Shannon Sexton
|
|
295
|
+
* </AEOEntity> handles CDL defense cases.
|
|
296
|
+
* ```
|
|
297
|
+
*/
|
|
298
|
+
declare function AEOEntity({ entityId, entityType, name, url, children, className, }: {
|
|
299
|
+
entityId: string;
|
|
300
|
+
entityType: 'organization' | 'person' | 'service' | 'product' | 'location' | 'concept' | 'credential';
|
|
301
|
+
name: string;
|
|
302
|
+
url?: string;
|
|
303
|
+
children: React.ReactNode;
|
|
304
|
+
className?: string;
|
|
305
|
+
}): React.ReactElement;
|
|
306
|
+
/**
|
|
307
|
+
* AEOProvenanceList - Display sources/citations for content
|
|
308
|
+
*
|
|
309
|
+
* Shows a list of provenance sources with machine-readable attributes.
|
|
310
|
+
* LLMs use this to verify claims and assess source quality.
|
|
311
|
+
*
|
|
312
|
+
* @example
|
|
313
|
+
* ```tsx
|
|
314
|
+
* <AEOProvenanceList
|
|
315
|
+
* title="Sources"
|
|
316
|
+
* sources={[
|
|
317
|
+
* { id: '1', source_type: 'legal_statute', title: 'KRS 281A.170', url: '...' },
|
|
318
|
+
* { id: '2', source_type: 'news_article', title: 'CDL News', publisher: 'Transport Weekly' }
|
|
319
|
+
* ]}
|
|
320
|
+
* />
|
|
321
|
+
* ```
|
|
322
|
+
*/
|
|
323
|
+
declare function AEOProvenanceList({ sources, title, className, }: {
|
|
324
|
+
sources: Array<{
|
|
325
|
+
id: string;
|
|
326
|
+
source_type: 'press_release' | 'news_article' | 'legal_statute' | 'research_paper' | 'official_document' | 'internal' | 'citation';
|
|
327
|
+
title: string;
|
|
328
|
+
url?: string;
|
|
329
|
+
publisher?: string;
|
|
330
|
+
published_at?: string;
|
|
331
|
+
accessed_at?: string;
|
|
332
|
+
excerpt?: string;
|
|
333
|
+
confidence?: number;
|
|
334
|
+
identifier?: string;
|
|
335
|
+
}>;
|
|
336
|
+
title?: string;
|
|
337
|
+
className?: string;
|
|
338
|
+
}): React.ReactElement;
|
|
339
|
+
/**
|
|
340
|
+
* AEOCitedContent - Content with inline citations linked to sources
|
|
341
|
+
*
|
|
342
|
+
* Wraps content that contains numbered citations [1], [2] etc., and links them
|
|
343
|
+
* to a list of provenance sources for AI verification.
|
|
344
|
+
*
|
|
345
|
+
* @example
|
|
346
|
+
* ```tsx
|
|
347
|
+
* <AEOCitedContent
|
|
348
|
+
* sources={[
|
|
349
|
+
* { id: '1', source_type: 'legal_statute', title: 'KRS 281A.170' },
|
|
350
|
+
* { id: '2', source_type: 'news_article', title: 'FMCSA Guidelines 2024' }
|
|
351
|
+
* ]}
|
|
352
|
+
* showSourcesList={true}
|
|
353
|
+
* >
|
|
354
|
+
* <p>Kentucky law requires CDL holders to report violations within 30 days [1].
|
|
355
|
+
* Federal guidelines add additional requirements [2].</p>
|
|
356
|
+
* </AEOCitedContent>
|
|
357
|
+
* ```
|
|
358
|
+
*/
|
|
359
|
+
declare function AEOCitedContent({ children, sources, showSourcesList, className, }: {
|
|
360
|
+
children: React.ReactNode;
|
|
361
|
+
sources: Array<{
|
|
362
|
+
id: string;
|
|
363
|
+
source_type: 'press_release' | 'news_article' | 'legal_statute' | 'research_paper' | 'official_document' | 'internal' | 'citation';
|
|
364
|
+
title: string;
|
|
365
|
+
url?: string;
|
|
366
|
+
publisher?: string;
|
|
367
|
+
published_at?: string;
|
|
368
|
+
accessed_at?: string;
|
|
369
|
+
excerpt?: string;
|
|
370
|
+
confidence?: number;
|
|
371
|
+
identifier?: string;
|
|
372
|
+
}>;
|
|
373
|
+
showSourcesList?: boolean;
|
|
374
|
+
className?: string;
|
|
375
|
+
}): React.ReactElement;
|
|
376
|
+
|
|
377
|
+
/**
|
|
378
|
+
* @sonordev/site-kit/llms - API Functions
|
|
379
|
+
*
|
|
380
|
+
* Data fetching for LLM visibility content.
|
|
381
|
+
* Pulls from Signal knowledge base and project data.
|
|
382
|
+
*/
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Fetch all LLM visibility data for a project - cached per request
|
|
386
|
+
* This is the main data source for llms.txt generation
|
|
387
|
+
*
|
|
388
|
+
* @param projectId - Optional project ID (API key identifies project if omitted)
|
|
389
|
+
*/
|
|
390
|
+
declare const getLLMsData: (projectId?: string) => Promise<LLMsDataResponse | null>;
|
|
391
|
+
/**
|
|
392
|
+
* Fetch business info only - cached per request
|
|
393
|
+
*/
|
|
394
|
+
declare const getBusinessInfo: (projectId?: string) => Promise<LLMBusinessInfo | null>;
|
|
395
|
+
/**
|
|
396
|
+
* Fetch services list - cached per request
|
|
397
|
+
*/
|
|
398
|
+
declare const getServices: (projectId?: string) => Promise<LLMService[]>;
|
|
399
|
+
/**
|
|
400
|
+
* Fetch FAQ items - cached per request
|
|
401
|
+
*/
|
|
402
|
+
declare const getFAQItems: (projectId?: string, limit?: number) => Promise<LLMFAQItem[]>;
|
|
403
|
+
/**
|
|
404
|
+
* Fetch page summaries for sitemap - cached per request
|
|
405
|
+
*/
|
|
406
|
+
declare const getPageSummaries: (projectId?: string, limit?: number) => Promise<LLMPageSummary[]>;
|
|
407
|
+
/**
|
|
408
|
+
* Fetch AI-optimized llms.txt markdown from Portal API (build-time)
|
|
409
|
+
* Used by writeLLMsTxtToPublic for static file generation
|
|
410
|
+
*/
|
|
411
|
+
declare function getOptimizedLLMsTxt(options?: {
|
|
412
|
+
full?: boolean;
|
|
413
|
+
apiUrl?: string;
|
|
414
|
+
apiKey?: string;
|
|
415
|
+
}): Promise<string | null>;
|
|
416
|
+
|
|
417
|
+
/**
|
|
418
|
+
* @sonordev/site-kit/llms - Build-Time Write
|
|
419
|
+
*
|
|
420
|
+
* Fetches AI-optimized llms.txt from Portal API and writes to public/llms.txt
|
|
421
|
+
* at build time. Integrates with sitemap flow when optimizedLLMsTxt is enabled.
|
|
422
|
+
*/
|
|
423
|
+
|
|
424
|
+
interface WriteLLMsTxtOptions {
|
|
425
|
+
/** Output directory (default: public, relative to cwd) */
|
|
426
|
+
outputDir?: string;
|
|
427
|
+
/** Write llms-full.txt as well */
|
|
428
|
+
full?: boolean;
|
|
429
|
+
/** Portal API URL */
|
|
430
|
+
apiUrl?: string;
|
|
431
|
+
/** Portal API key */
|
|
432
|
+
apiKey?: string;
|
|
433
|
+
/** Fallback to non-optimized when API fails */
|
|
434
|
+
fallbackToLocal?: boolean;
|
|
435
|
+
/** When Portal returns empty services/faq/pages, use this to supply local site data */
|
|
436
|
+
getLocalData?: () => Promise<LLMsDataResponse | null>;
|
|
437
|
+
}
|
|
438
|
+
/**
|
|
439
|
+
* Fetch optimized llms.txt from Portal and write to public/llms.txt
|
|
440
|
+
* Called at build time after sitemap sync (when optimizedLLMsTxt is enabled)
|
|
441
|
+
*/
|
|
442
|
+
declare function writeLLMsTxtToPublic(options?: WriteLLMsTxtOptions): Promise<{
|
|
443
|
+
success: boolean;
|
|
444
|
+
path: string;
|
|
445
|
+
optimized: boolean;
|
|
446
|
+
}>;
|
|
447
|
+
|
|
448
|
+
export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, DEFAULT_SPEAKABLE_SELECTORS, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsDataResponse, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps, type WriteLLMsTxtOptions, createLLMsFullTxtHandler, createLLMsTxtHandler, createSpeakableSchema, generateLLMsFullTxt, generateLLMsTxt, getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices, getSpeakableSelectorsForPage, writeLLMsTxtToPublic };
|