@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,229 @@
|
|
|
1
|
+
import { Metadata } from 'next';
|
|
2
|
+
import { B as BlogPost } from '../types-D08004rU.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @sonordev/site-kit/blog/server
|
|
6
|
+
*
|
|
7
|
+
* Server-side functions for Next.js blog pages.
|
|
8
|
+
* Includes metadata generation, sitemap, RSS feeds, and static params for SSG.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
declare const SEO_LIMITS: {
|
|
12
|
+
readonly title: {
|
|
13
|
+
readonly min: 30;
|
|
14
|
+
readonly max: 60;
|
|
15
|
+
readonly recommended: 55;
|
|
16
|
+
};
|
|
17
|
+
readonly metaDescription: {
|
|
18
|
+
readonly min: 120;
|
|
19
|
+
readonly max: 160;
|
|
20
|
+
readonly recommended: 155;
|
|
21
|
+
};
|
|
22
|
+
readonly excerpt: {
|
|
23
|
+
readonly min: 100;
|
|
24
|
+
readonly max: 300;
|
|
25
|
+
readonly recommended: 200;
|
|
26
|
+
};
|
|
27
|
+
readonly slug: {
|
|
28
|
+
readonly max: 75;
|
|
29
|
+
};
|
|
30
|
+
readonly focusKeyphrase: {
|
|
31
|
+
readonly min: 2;
|
|
32
|
+
readonly max: 4;
|
|
33
|
+
readonly words: true;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
36
|
+
interface SeoValidationResult {
|
|
37
|
+
field: string;
|
|
38
|
+
value: string;
|
|
39
|
+
length: number;
|
|
40
|
+
limit: {
|
|
41
|
+
min?: number;
|
|
42
|
+
max: number;
|
|
43
|
+
recommended?: number;
|
|
44
|
+
};
|
|
45
|
+
status: 'good' | 'warning' | 'error';
|
|
46
|
+
message: string;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Validate SEO title (60 chars max, keyword-first recommended)
|
|
50
|
+
*/
|
|
51
|
+
declare function validateSeoTitle(title: string, focusKeyphrase?: string): SeoValidationResult;
|
|
52
|
+
/**
|
|
53
|
+
* Validate meta description (150-160 chars, benefit-driven)
|
|
54
|
+
*/
|
|
55
|
+
declare function validateMetaDescription(description: string, focusKeyphrase?: string): SeoValidationResult;
|
|
56
|
+
/**
|
|
57
|
+
* Full SEO validation for a blog post
|
|
58
|
+
*/
|
|
59
|
+
declare function validateBlogPostSeo(post: Partial<BlogPost>): SeoValidationResult[];
|
|
60
|
+
/**
|
|
61
|
+
* Fetch a blog post by slug (server-side)
|
|
62
|
+
*/
|
|
63
|
+
declare function getBlogPost(slug: string): Promise<BlogPost | null>;
|
|
64
|
+
/**
|
|
65
|
+
* Fetch all blog post slugs for static generation
|
|
66
|
+
*/
|
|
67
|
+
declare function getAllBlogSlugs(): Promise<{
|
|
68
|
+
slug: string;
|
|
69
|
+
last_modified?: string;
|
|
70
|
+
}[]>;
|
|
71
|
+
/**
|
|
72
|
+
* Fetch blog categories
|
|
73
|
+
*/
|
|
74
|
+
declare function getBlogCategories(): Promise<{
|
|
75
|
+
name: string;
|
|
76
|
+
slug: string;
|
|
77
|
+
post_count: number;
|
|
78
|
+
}[]>;
|
|
79
|
+
interface BlogMetadataOptions {
|
|
80
|
+
/** Site name for og:site_name */
|
|
81
|
+
siteName?: string;
|
|
82
|
+
/** Base URL of the site */
|
|
83
|
+
siteUrl?: string;
|
|
84
|
+
/** Default OG image */
|
|
85
|
+
defaultImage?: string;
|
|
86
|
+
/** Twitter handle */
|
|
87
|
+
twitterHandle?: string;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Generate metadata for a blog post page
|
|
91
|
+
*/
|
|
92
|
+
declare function generateBlogPostMetadata(slug: string, options?: BlogMetadataOptions): Promise<Metadata>;
|
|
93
|
+
/**
|
|
94
|
+
* Generate metadata for the blog index page
|
|
95
|
+
*/
|
|
96
|
+
declare function generateBlogIndexMetadata(options: BlogMetadataOptions & {
|
|
97
|
+
title?: string;
|
|
98
|
+
description?: string;
|
|
99
|
+
}): Metadata;
|
|
100
|
+
/**
|
|
101
|
+
* Generate metadata for a category page
|
|
102
|
+
*/
|
|
103
|
+
declare function generateBlogCategoryMetadata(categoryName: string, options?: BlogMetadataOptions): Metadata;
|
|
104
|
+
/**
|
|
105
|
+
* Generate static params for blog post pages
|
|
106
|
+
* Usage: export const generateStaticParams = generateBlogStaticParams
|
|
107
|
+
*/
|
|
108
|
+
declare function generateBlogStaticParams(): Promise<{
|
|
109
|
+
slug: string;
|
|
110
|
+
}[]>;
|
|
111
|
+
/**
|
|
112
|
+
* Generate static params for category pages
|
|
113
|
+
* Usage: export const generateStaticParams = generateCategoryStaticParams
|
|
114
|
+
*/
|
|
115
|
+
declare function generateCategoryStaticParams(): Promise<{
|
|
116
|
+
category: string;
|
|
117
|
+
}[]>;
|
|
118
|
+
interface SitemapEntry {
|
|
119
|
+
url: string;
|
|
120
|
+
lastModified?: Date;
|
|
121
|
+
changeFrequency?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
|
|
122
|
+
priority?: number;
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Generate sitemap entries for blog posts
|
|
126
|
+
*/
|
|
127
|
+
declare function generateBlogSitemap(siteUrl: string): Promise<SitemapEntry[]>;
|
|
128
|
+
/**
|
|
129
|
+
* Generate JSON-LD schema for a blog post
|
|
130
|
+
*/
|
|
131
|
+
declare function generateBlogPostSchema(post: BlogPost, options?: {
|
|
132
|
+
siteUrl?: string;
|
|
133
|
+
siteName?: string;
|
|
134
|
+
logoUrl?: string;
|
|
135
|
+
}): object;
|
|
136
|
+
/**
|
|
137
|
+
* Generate JSON-LD schema for blog index/listing page
|
|
138
|
+
*/
|
|
139
|
+
declare function generateBlogListSchema(options?: {
|
|
140
|
+
siteUrl?: string;
|
|
141
|
+
siteName?: string;
|
|
142
|
+
description?: string;
|
|
143
|
+
}): object;
|
|
144
|
+
/**
|
|
145
|
+
* Generate standalone FAQ schema (great for PAA inclusion)
|
|
146
|
+
*/
|
|
147
|
+
declare function generateFaqSchema(faqItems: {
|
|
148
|
+
question: string;
|
|
149
|
+
answer: string;
|
|
150
|
+
}[]): object | null;
|
|
151
|
+
interface HowToStep {
|
|
152
|
+
name: string;
|
|
153
|
+
text: string;
|
|
154
|
+
image?: string;
|
|
155
|
+
url?: string;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Generate HowTo schema for step-by-step posts
|
|
159
|
+
*/
|
|
160
|
+
declare function generateHowToSchema(post: BlogPost, steps: HowToStep[], options?: {
|
|
161
|
+
siteUrl?: string;
|
|
162
|
+
}): object;
|
|
163
|
+
interface RssFeedOptions {
|
|
164
|
+
siteUrl: string;
|
|
165
|
+
siteName: string;
|
|
166
|
+
description?: string;
|
|
167
|
+
language?: string;
|
|
168
|
+
copyright?: string;
|
|
169
|
+
managingEditor?: string;
|
|
170
|
+
webMaster?: string;
|
|
171
|
+
ttl?: number;
|
|
172
|
+
imageUrl?: string;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Fetch all published blog posts for RSS feed
|
|
176
|
+
*/
|
|
177
|
+
declare function getAllBlogPosts(): Promise<BlogPost[]>;
|
|
178
|
+
/**
|
|
179
|
+
* Generate RSS 2.0 feed XML
|
|
180
|
+
*/
|
|
181
|
+
declare function generateRssFeed(options: RssFeedOptions): Promise<string>;
|
|
182
|
+
/**
|
|
183
|
+
* Generate Atom feed XML
|
|
184
|
+
*/
|
|
185
|
+
declare function generateAtomFeed(options: RssFeedOptions): Promise<string>;
|
|
186
|
+
interface TopicCluster {
|
|
187
|
+
pillar: BlogPost;
|
|
188
|
+
supportingPosts: BlogPost[];
|
|
189
|
+
internalLinks: Array<{
|
|
190
|
+
from: string;
|
|
191
|
+
to: string;
|
|
192
|
+
anchor: string;
|
|
193
|
+
}>;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Fetch posts by category for topic cluster organization
|
|
197
|
+
*/
|
|
198
|
+
declare function getPostsByCategory(categorySlug: string): Promise<BlogPost[]>;
|
|
199
|
+
/**
|
|
200
|
+
* Identify topic clusters based on category grouping
|
|
201
|
+
* Assumes the longest/most comprehensive post is the pillar
|
|
202
|
+
*/
|
|
203
|
+
declare function identifyTopicClusters(categorySlug: string): Promise<TopicCluster | null>;
|
|
204
|
+
/**
|
|
205
|
+
* Generate "Related Insights" section data
|
|
206
|
+
*/
|
|
207
|
+
declare function getRelatedInsights(currentSlug: string, options?: {
|
|
208
|
+
limit?: number;
|
|
209
|
+
category?: string;
|
|
210
|
+
}): Promise<BlogPost[]>;
|
|
211
|
+
/**
|
|
212
|
+
* Generate BreadcrumbList schema for blog navigation
|
|
213
|
+
*/
|
|
214
|
+
declare function generateBreadcrumbSchema(post: BlogPost, options?: {
|
|
215
|
+
siteUrl?: string;
|
|
216
|
+
siteName?: string;
|
|
217
|
+
}): object;
|
|
218
|
+
/**
|
|
219
|
+
* Generate all relevant schemas for a blog post in a single array
|
|
220
|
+
* This is the recommended way to include multiple schemas.
|
|
221
|
+
* When post has E-E-A-T schema (post.schema), use it instead of generating Article/FAQ.
|
|
222
|
+
*/
|
|
223
|
+
declare function generateAllBlogSchemas(post: BlogPost, options?: {
|
|
224
|
+
siteUrl?: string;
|
|
225
|
+
siteName?: string;
|
|
226
|
+
logoUrl?: string;
|
|
227
|
+
}): object[];
|
|
228
|
+
|
|
229
|
+
export { type HowToStep, SEO_LIMITS, type SeoValidationResult, type TopicCluster, generateAllBlogSchemas, generateAtomFeed, generateBlogCategoryMetadata, generateBlogIndexMetadata, generateBlogListSchema, generateBlogPostMetadata, generateBlogPostSchema, generateBlogSitemap, generateBlogStaticParams, generateBreadcrumbSchema, generateCategoryStaticParams, generateFaqSchema, generateHowToSchema, generateRssFeed, getAllBlogPosts, getAllBlogSlugs, getBlogCategories, getBlogPost, getPostsByCategory, getRelatedInsights, identifyTopicClusters, validateBlogPostSeo, validateMetaDescription, validateSeoTitle };
|