@heyseo/mcp-server 0.1.3 → 0.2.1
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 +165 -34
- package/dist/index.js +492 -274
- package/dist/index.js.map +1 -1
- package/dist/prompts/index.d.ts.map +1 -1
- package/dist/prompts/index.js +93 -0
- package/dist/prompts/index.js.map +1 -1
- package/dist/resources/index.d.ts +1 -1
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +135 -4
- package/dist/resources/index.js.map +1 -1
- package/dist/tools/comparison.d.ts +1 -1
- package/dist/tools/index.d.ts +75 -456
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +65 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/indexing.d.ts +94 -0
- package/dist/tools/indexing.d.ts.map +1 -0
- package/dist/tools/indexing.js +99 -0
- package/dist/tools/indexing.js.map +1 -0
- package/dist/tools/insights.d.ts +38 -0
- package/dist/tools/insights.d.ts.map +1 -0
- package/dist/tools/insights.js +58 -0
- package/dist/tools/insights.js.map +1 -0
- package/dist/tools/memory.d.ts +329 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +242 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/onpage.d.ts +37 -0
- package/dist/tools/onpage.d.ts.map +1 -0
- package/dist/tools/onpage.js +46 -0
- package/dist/tools/onpage.js.map +1 -0
- package/dist/tools/reports.d.ts +74 -0
- package/dist/tools/reports.d.ts.map +1 -0
- package/dist/tools/reports.js +92 -0
- package/dist/tools/reports.js.map +1 -0
- package/dist/tools/serp.d.ts +55 -0
- package/dist/tools/serp.d.ts.map +1 -0
- package/dist/tools/serp.js +47 -0
- package/dist/tools/serp.js.map +1 -0
- package/dist/tools/site.d.ts +42 -0
- package/dist/tools/site.d.ts.map +1 -0
- package/dist/tools/site.js +167 -0
- package/dist/tools/site.js.map +1 -0
- package/dist/tools/sitemaps.d.ts +30 -0
- package/dist/tools/sitemaps.d.ts.map +1 -0
- package/dist/tools/sitemaps.js +44 -0
- package/dist/tools/sitemaps.js.map +1 -0
- package/dist/tools/tasks.d.ts +14 -14
- package/dist/tools/workflows.d.ts +53 -0
- package/dist/tools/workflows.d.ts.map +1 -0
- package/dist/tools/workflows.js +162 -0
- package/dist/tools/workflows.js.map +1 -0
- package/dist/types.d.ts +138 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/api-client.d.ts +55 -1
- package/dist/utils/api-client.d.ts.map +1 -1
- package/dist/utils/api-client.js +126 -1
- package/dist/utils/api-client.js.map +1 -1
- package/dist/utils/response-formatter.d.ts +68 -0
- package/dist/utils/response-formatter.d.ts.map +1 -0
- package/dist/utils/response-formatter.js +128 -0
- package/dist/utils/response-formatter.js.map +1 -0
- package/package.json +2 -1
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site Management Tools
|
|
3
|
+
* Tools for selecting and managing the current working site in the MCP context
|
|
4
|
+
*/
|
|
5
|
+
import { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { HeySeoApiClient } from '../utils/api-client.js';
|
|
8
|
+
/**
|
|
9
|
+
* List all available sites
|
|
10
|
+
*/
|
|
11
|
+
export declare function executeListSites(client: HeySeoApiClient): Promise<string>;
|
|
12
|
+
/**
|
|
13
|
+
* Get current selected site
|
|
14
|
+
*/
|
|
15
|
+
export declare function executeGetCurrentSite(client: HeySeoApiClient, siteId?: string): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Validate and confirm site selection
|
|
18
|
+
*/
|
|
19
|
+
export declare function executeSelectSite(client: HeySeoApiClient, siteId: string): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Site management tool schemas
|
|
22
|
+
*/
|
|
23
|
+
export declare const listSitesSchema: z.ZodObject<{}, "strip", z.ZodTypeAny, {}, {}>;
|
|
24
|
+
export declare const getCurrentSiteSchema: z.ZodObject<{
|
|
25
|
+
siteId: z.ZodOptional<z.ZodString>;
|
|
26
|
+
}, "strip", z.ZodTypeAny, {
|
|
27
|
+
siteId?: string | undefined;
|
|
28
|
+
}, {
|
|
29
|
+
siteId?: string | undefined;
|
|
30
|
+
}>;
|
|
31
|
+
export declare const selectSiteSchema: z.ZodObject<{
|
|
32
|
+
siteId: z.ZodString;
|
|
33
|
+
}, "strip", z.ZodTypeAny, {
|
|
34
|
+
siteId: string;
|
|
35
|
+
}, {
|
|
36
|
+
siteId: string;
|
|
37
|
+
}>;
|
|
38
|
+
/**
|
|
39
|
+
* Site management tool definitions
|
|
40
|
+
*/
|
|
41
|
+
export declare const siteTools: Tool[];
|
|
42
|
+
//# sourceMappingURL=site.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site.d.ts","sourceRoot":"","sources":["../../src/tools/site.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC1D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAEzD;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAmC/E;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmCrG;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAgChG;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,gDAAe,CAAC;AAE5C,eAAO,MAAM,oBAAoB;;;;;;EAE/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,IAAI,EAsC3B,CAAC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Site Management Tools
|
|
3
|
+
* Tools for selecting and managing the current working site in the MCP context
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* List all available sites
|
|
8
|
+
*/
|
|
9
|
+
export async function executeListSites(client) {
|
|
10
|
+
try {
|
|
11
|
+
const sites = await client.getSites();
|
|
12
|
+
if (!sites || sites.length === 0) {
|
|
13
|
+
return JSON.stringify({
|
|
14
|
+
success: true,
|
|
15
|
+
data: {
|
|
16
|
+
sites: [],
|
|
17
|
+
message: 'No sites available. Please add a site first.'
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
const formattedSites = sites.map((site) => ({
|
|
22
|
+
id: site.id,
|
|
23
|
+
name: site.name,
|
|
24
|
+
url: site.url,
|
|
25
|
+
gscConnected: site.gscConnected !== false,
|
|
26
|
+
ga4Connected: site.ga4Connected !== false
|
|
27
|
+
}));
|
|
28
|
+
return JSON.stringify({
|
|
29
|
+
success: true,
|
|
30
|
+
data: {
|
|
31
|
+
sites: formattedSites,
|
|
32
|
+
count: formattedSites.length
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
return JSON.stringify({
|
|
38
|
+
success: false,
|
|
39
|
+
error: error instanceof Error ? error.message : 'Failed to list sites'
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get current selected site
|
|
45
|
+
*/
|
|
46
|
+
export async function executeGetCurrentSite(client, siteId) {
|
|
47
|
+
try {
|
|
48
|
+
if (!siteId) {
|
|
49
|
+
return JSON.stringify({
|
|
50
|
+
success: false,
|
|
51
|
+
error: 'No site currently selected. Use heyseo_select_site to choose a site.'
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
const sites = await client.getSites();
|
|
55
|
+
const site = sites?.find((s) => s.id === siteId);
|
|
56
|
+
if (!site) {
|
|
57
|
+
return JSON.stringify({
|
|
58
|
+
success: false,
|
|
59
|
+
error: `Site with ID "${siteId}" not found`
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return JSON.stringify({
|
|
63
|
+
success: true,
|
|
64
|
+
data: {
|
|
65
|
+
id: site.id,
|
|
66
|
+
name: site.name,
|
|
67
|
+
url: site.url,
|
|
68
|
+
gscConnected: site.gscConnected !== false,
|
|
69
|
+
ga4Connected: site.ga4Connected !== false
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
return JSON.stringify({
|
|
75
|
+
success: false,
|
|
76
|
+
error: error instanceof Error ? error.message : 'Failed to get current site'
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validate and confirm site selection
|
|
82
|
+
*/
|
|
83
|
+
export async function executeSelectSite(client, siteId) {
|
|
84
|
+
try {
|
|
85
|
+
const sites = await client.getSites();
|
|
86
|
+
const site = sites?.find((s) => s.id === siteId);
|
|
87
|
+
if (!site) {
|
|
88
|
+
return JSON.stringify({
|
|
89
|
+
success: false,
|
|
90
|
+
error: `Site with ID "${siteId}" not found. Use heyseo_list_sites to see available sites.`
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
return JSON.stringify({
|
|
94
|
+
success: true,
|
|
95
|
+
data: {
|
|
96
|
+
selected: true,
|
|
97
|
+
site: {
|
|
98
|
+
id: site.id,
|
|
99
|
+
name: site.name,
|
|
100
|
+
url: site.url,
|
|
101
|
+
gscConnected: site.gscConnected !== false,
|
|
102
|
+
ga4Connected: site.ga4Connected !== false
|
|
103
|
+
},
|
|
104
|
+
message: `Successfully selected site: ${site.name}. All subsequent operations will use this site.`
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
catch (error) {
|
|
109
|
+
return JSON.stringify({
|
|
110
|
+
success: false,
|
|
111
|
+
error: error instanceof Error ? error.message : 'Failed to select site'
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Site management tool schemas
|
|
117
|
+
*/
|
|
118
|
+
export const listSitesSchema = z.object({});
|
|
119
|
+
export const getCurrentSiteSchema = z.object({
|
|
120
|
+
siteId: z.string().optional().describe('The currently selected site ID')
|
|
121
|
+
});
|
|
122
|
+
export const selectSiteSchema = z.object({
|
|
123
|
+
siteId: z.string().describe('The ID of the site to select for operations')
|
|
124
|
+
});
|
|
125
|
+
/**
|
|
126
|
+
* Site management tool definitions
|
|
127
|
+
*/
|
|
128
|
+
export const siteTools = [
|
|
129
|
+
{
|
|
130
|
+
name: 'heyseo_list_sites',
|
|
131
|
+
description: 'List all available sites for the current company. Shows site names, URLs, and connection status for GSC and GA4.',
|
|
132
|
+
inputSchema: {
|
|
133
|
+
type: 'object',
|
|
134
|
+
properties: {},
|
|
135
|
+
required: []
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'heyseo_select_site',
|
|
140
|
+
description: 'Select a specific site to work with for all subsequent SEO operations. This determines which site\'s data will be queried.',
|
|
141
|
+
inputSchema: {
|
|
142
|
+
type: 'object',
|
|
143
|
+
properties: {
|
|
144
|
+
siteId: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
description: 'The ID of the site to select'
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
required: ['siteId']
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
name: 'heyseo_get_current_site',
|
|
154
|
+
description: 'Get information about the currently selected site. Returns site details and connection status.',
|
|
155
|
+
inputSchema: {
|
|
156
|
+
type: 'object',
|
|
157
|
+
properties: {
|
|
158
|
+
siteId: {
|
|
159
|
+
type: 'string',
|
|
160
|
+
description: 'The currently selected site ID (stored in context)'
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
required: []
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
];
|
|
167
|
+
//# sourceMappingURL=site.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"site.js","sourceRoot":"","sources":["../../src/tools/site.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sitemaps Tools
|
|
3
|
+
* Tools for viewing sitemaps registered in Google Search Console
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import type { HeySeoApiClient } from '../utils/api-client.js';
|
|
7
|
+
export declare const listSitemapsSchema: z.ZodObject<{
|
|
8
|
+
siteId: z.ZodString;
|
|
9
|
+
}, "strip", z.ZodTypeAny, {
|
|
10
|
+
siteId: string;
|
|
11
|
+
}, {
|
|
12
|
+
siteId: string;
|
|
13
|
+
}>;
|
|
14
|
+
export type ListSitemapsInput = z.infer<typeof listSitemapsSchema>;
|
|
15
|
+
export declare function executeListSitemaps(client: HeySeoApiClient, input: ListSitemapsInput): Promise<string>;
|
|
16
|
+
export declare const sitemapTools: {
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: string;
|
|
21
|
+
properties: {
|
|
22
|
+
siteId: {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
required: string[];
|
|
28
|
+
};
|
|
29
|
+
}[];
|
|
30
|
+
//# sourceMappingURL=sitemaps.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemaps.d.ts","sourceRoot":"","sources":["../../src/tools/sitemaps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,eAAO,MAAM,kBAAkB;;;;;;EAE7B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEnE,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,iBAAiB,GACvB,OAAO,CAAC,MAAM,CAAC,CAoBjB;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;GAcxB,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sitemaps Tools
|
|
3
|
+
* Tools for viewing sitemaps registered in Google Search Console
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
export const listSitemapsSchema = z.object({
|
|
7
|
+
siteId: z.string().describe('The ID of the site'),
|
|
8
|
+
});
|
|
9
|
+
export async function executeListSitemaps(client, input) {
|
|
10
|
+
try {
|
|
11
|
+
const result = await client.getSitemaps(input.siteId);
|
|
12
|
+
if (!result.sitemaps || result.sitemaps.length === 0) {
|
|
13
|
+
return JSON.stringify({
|
|
14
|
+
success: true,
|
|
15
|
+
message: 'No sitemaps found registered in Google Search Console for this site.',
|
|
16
|
+
sitemaps: [],
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
return JSON.stringify({
|
|
20
|
+
success: true,
|
|
21
|
+
total: result.sitemaps.length,
|
|
22
|
+
sitemaps: result.sitemaps,
|
|
23
|
+
}, null, 2);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
return JSON.stringify({ success: false, error: error instanceof Error ? error.message : 'Unknown error' });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
export const sitemapTools = [
|
|
30
|
+
{
|
|
31
|
+
name: 'heyseo_list_sitemaps',
|
|
32
|
+
description: `List all sitemaps registered in Google Search Console for a site.
|
|
33
|
+
|
|
34
|
+
Returns sitemap URLs with their last download date, submission date, pending status, type (sitemap/sitemap index), and any errors or warnings.`,
|
|
35
|
+
inputSchema: {
|
|
36
|
+
type: 'object',
|
|
37
|
+
properties: {
|
|
38
|
+
siteId: { type: 'string', description: 'The ID of the site' },
|
|
39
|
+
},
|
|
40
|
+
required: ['siteId'],
|
|
41
|
+
},
|
|
42
|
+
},
|
|
43
|
+
];
|
|
44
|
+
//# sourceMappingURL=sitemaps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sitemaps.js","sourceRoot":"","sources":["../../src/tools/sitemaps.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;CAClD,CAAC,CAAC;AAIH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAuB,EACvB,KAAwB;IAExB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrD,OAAO,IAAI,CAAC,SAAS,CAAC;gBACpB,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,sEAAsE;gBAC/E,QAAQ,EAAE,EAAE;aACb,CAAC,CAAC;QACL,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;YACpB,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;SAC1B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,CAAC,CAAC;IAC7G,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE;;+IAE8H;QAC3I,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;aAC9D;YACD,QAAQ,EAAE,CAAC,QAAQ,CAAC;SACrB;KACF;CACF,CAAC"}
|
package/dist/tools/tasks.d.ts
CHANGED
|
@@ -11,17 +11,17 @@ export declare const createTaskSchema: z.ZodObject<{
|
|
|
11
11
|
priority: z.ZodDefault<z.ZodOptional<z.ZodEnum<["low", "medium", "high"]>>>;
|
|
12
12
|
category: z.ZodDefault<z.ZodOptional<z.ZodEnum<["technical", "content", "links", "ux"]>>>;
|
|
13
13
|
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
siteId: string;
|
|
14
15
|
title: string;
|
|
15
|
-
priority: "high" | "medium" | "low";
|
|
16
16
|
category: "technical" | "content" | "links" | "ux";
|
|
17
|
-
|
|
17
|
+
priority: "high" | "medium" | "low";
|
|
18
18
|
description?: string | undefined;
|
|
19
19
|
}, {
|
|
20
|
-
title: string;
|
|
21
20
|
siteId: string;
|
|
21
|
+
title: string;
|
|
22
22
|
description?: string | undefined;
|
|
23
|
-
priority?: "high" | "medium" | "low" | undefined;
|
|
24
23
|
category?: "technical" | "content" | "links" | "ux" | undefined;
|
|
24
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
25
25
|
}>;
|
|
26
26
|
export declare const listTasksSchema: z.ZodObject<{
|
|
27
27
|
siteId: z.ZodString;
|
|
@@ -31,13 +31,13 @@ export declare const listTasksSchema: z.ZodObject<{
|
|
|
31
31
|
}, "strip", z.ZodTypeAny, {
|
|
32
32
|
siteId: string;
|
|
33
33
|
status?: "todo" | "in_progress" | "done" | undefined;
|
|
34
|
-
priority?: "high" | "medium" | "low" | undefined;
|
|
35
34
|
category?: "technical" | "content" | "links" | "ux" | undefined;
|
|
35
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
36
36
|
}, {
|
|
37
37
|
siteId: string;
|
|
38
38
|
status?: "todo" | "in_progress" | "done" | undefined;
|
|
39
|
-
priority?: "high" | "medium" | "low" | undefined;
|
|
40
39
|
category?: "technical" | "content" | "links" | "ux" | undefined;
|
|
40
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
41
41
|
}>;
|
|
42
42
|
export declare const getTaskSchema: z.ZodObject<{
|
|
43
43
|
taskId: z.ZodString;
|
|
@@ -55,18 +55,18 @@ export declare const updateTaskSchema: z.ZodObject<{
|
|
|
55
55
|
category: z.ZodOptional<z.ZodEnum<["technical", "content", "links", "ux"]>>;
|
|
56
56
|
}, "strip", z.ZodTypeAny, {
|
|
57
57
|
taskId: string;
|
|
58
|
-
title?: string | undefined;
|
|
59
58
|
description?: string | undefined;
|
|
60
59
|
status?: "todo" | "in_progress" | "done" | undefined;
|
|
61
|
-
|
|
60
|
+
title?: string | undefined;
|
|
62
61
|
category?: "technical" | "content" | "links" | "ux" | undefined;
|
|
62
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
63
63
|
}, {
|
|
64
64
|
taskId: string;
|
|
65
|
-
title?: string | undefined;
|
|
66
65
|
description?: string | undefined;
|
|
67
66
|
status?: "todo" | "in_progress" | "done" | undefined;
|
|
68
|
-
|
|
67
|
+
title?: string | undefined;
|
|
69
68
|
category?: "technical" | "content" | "links" | "ux" | undefined;
|
|
69
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
70
70
|
}>;
|
|
71
71
|
export declare const deleteTaskSchema: z.ZodObject<{
|
|
72
72
|
taskId: z.ZodString;
|
|
@@ -84,21 +84,21 @@ export declare const bulkCreateTasksSchema: z.ZodObject<{
|
|
|
84
84
|
category: z.ZodDefault<z.ZodOptional<z.ZodEnum<["technical", "content", "links", "ux"]>>>;
|
|
85
85
|
}, "strip", z.ZodTypeAny, {
|
|
86
86
|
title: string;
|
|
87
|
-
priority: "high" | "medium" | "low";
|
|
88
87
|
category: "technical" | "content" | "links" | "ux";
|
|
88
|
+
priority: "high" | "medium" | "low";
|
|
89
89
|
description?: string | undefined;
|
|
90
90
|
}, {
|
|
91
91
|
title: string;
|
|
92
92
|
description?: string | undefined;
|
|
93
|
-
priority?: "high" | "medium" | "low" | undefined;
|
|
94
93
|
category?: "technical" | "content" | "links" | "ux" | undefined;
|
|
94
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
95
95
|
}>, "many">;
|
|
96
96
|
}, "strip", z.ZodTypeAny, {
|
|
97
97
|
siteId: string;
|
|
98
98
|
tasks: {
|
|
99
99
|
title: string;
|
|
100
|
-
priority: "high" | "medium" | "low";
|
|
101
100
|
category: "technical" | "content" | "links" | "ux";
|
|
101
|
+
priority: "high" | "medium" | "low";
|
|
102
102
|
description?: string | undefined;
|
|
103
103
|
}[];
|
|
104
104
|
}, {
|
|
@@ -106,8 +106,8 @@ export declare const bulkCreateTasksSchema: z.ZodObject<{
|
|
|
106
106
|
tasks: {
|
|
107
107
|
title: string;
|
|
108
108
|
description?: string | undefined;
|
|
109
|
-
priority?: "high" | "medium" | "low" | undefined;
|
|
110
109
|
category?: "technical" | "content" | "links" | "ux" | undefined;
|
|
110
|
+
priority?: "high" | "medium" | "low" | undefined;
|
|
111
111
|
}[];
|
|
112
112
|
}>;
|
|
113
113
|
export declare const bulkUpdateTasksSchema: z.ZodObject<{
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEO Audit Workflow Tools
|
|
3
|
+
* Composite workflow tools for high-level site analysis
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import type { HeySeoApiClient } from '../utils/api-client.js';
|
|
7
|
+
export declare const siteAuditSchema: z.ZodObject<{
|
|
8
|
+
siteId: z.ZodString;
|
|
9
|
+
days: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
+
}, "strip", z.ZodTypeAny, {
|
|
11
|
+
siteId: string;
|
|
12
|
+
days: number;
|
|
13
|
+
}, {
|
|
14
|
+
siteId: string;
|
|
15
|
+
days?: number | undefined;
|
|
16
|
+
}>;
|
|
17
|
+
export type SiteAuditInput = z.infer<typeof siteAuditSchema>;
|
|
18
|
+
/**
|
|
19
|
+
* Execute site audit workflow
|
|
20
|
+
* Performs comprehensive SEO audit including GSC, GA4, and opportunities analysis
|
|
21
|
+
*/
|
|
22
|
+
export declare function executeSiteAudit(client: HeySeoApiClient, input: SiteAuditInput): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Workflow tool definitions for MCP
|
|
25
|
+
*/
|
|
26
|
+
export declare const workflowTools: {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
inputSchema: {
|
|
30
|
+
type: string;
|
|
31
|
+
properties: {
|
|
32
|
+
siteId: {
|
|
33
|
+
type: string;
|
|
34
|
+
description: string;
|
|
35
|
+
};
|
|
36
|
+
days: {
|
|
37
|
+
type: string;
|
|
38
|
+
minimum: number;
|
|
39
|
+
maximum: number;
|
|
40
|
+
default: number;
|
|
41
|
+
description: string;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
required: string[];
|
|
45
|
+
};
|
|
46
|
+
hints: {
|
|
47
|
+
readOnlyHint: boolean;
|
|
48
|
+
destructiveHint: boolean;
|
|
49
|
+
idempotentHint: boolean;
|
|
50
|
+
openWorldHint: boolean;
|
|
51
|
+
};
|
|
52
|
+
}[];
|
|
53
|
+
//# sourceMappingURL=workflows.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.d.ts","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,eAAO,MAAM,eAAe;;;;;;;;;EAS1B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAE7D;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,MAAM,CAAC,CAgHjB;AAED;;GAEG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BzB,CAAC"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEO Audit Workflow Tools
|
|
3
|
+
* Composite workflow tools for high-level site analysis
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { formatResponse, formatErrorResponse } from '../utils/response-formatter.js';
|
|
7
|
+
// Schema for site audit workflow
|
|
8
|
+
export const siteAuditSchema = z.object({
|
|
9
|
+
siteId: z.string().describe('The ID of the site to audit'),
|
|
10
|
+
days: z
|
|
11
|
+
.number()
|
|
12
|
+
.min(7)
|
|
13
|
+
.max(90)
|
|
14
|
+
.optional()
|
|
15
|
+
.default(28)
|
|
16
|
+
.describe('Number of days to analyze'),
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* Execute site audit workflow
|
|
20
|
+
* Performs comprehensive SEO audit including GSC, GA4, and opportunities analysis
|
|
21
|
+
*/
|
|
22
|
+
export async function executeSiteAudit(client, input) {
|
|
23
|
+
try {
|
|
24
|
+
// Calculate date range
|
|
25
|
+
const endDate = new Date().toISOString().split('T')[0];
|
|
26
|
+
const startDate = new Date(Date.now() - input.days * 24 * 60 * 60 * 1000)
|
|
27
|
+
.toISOString()
|
|
28
|
+
.split('T')[0];
|
|
29
|
+
// Fetch all data in parallel
|
|
30
|
+
const [site, overview, topKeywords, topPages, opportunities] = await Promise.all([
|
|
31
|
+
client.getSite(input.siteId),
|
|
32
|
+
client.getSiteOverview(input.siteId, { startDate, endDate }),
|
|
33
|
+
client.getTopKeywords(input.siteId, { startDate, endDate, limit: 10 }),
|
|
34
|
+
client.getTopPages(input.siteId, { startDate, endDate, limit: 10 }),
|
|
35
|
+
client.getOpportunities(input.siteId),
|
|
36
|
+
]);
|
|
37
|
+
// Extract and format GSC metrics
|
|
38
|
+
const gscRow = overview.gsc.rows[0];
|
|
39
|
+
const gscMetrics = {
|
|
40
|
+
clicks: gscRow?.clicks || 0,
|
|
41
|
+
impressions: gscRow?.impressions || 0,
|
|
42
|
+
ctr: gscRow ? `${(gscRow.ctr * 100).toFixed(2)}%` : '0%',
|
|
43
|
+
avgPosition: gscRow?.position.toFixed(1) || 'N/A',
|
|
44
|
+
};
|
|
45
|
+
// Extract and format GA4 metrics
|
|
46
|
+
const ga4Row = overview.ga4[0];
|
|
47
|
+
const ga4Metrics = {
|
|
48
|
+
sessions: ga4Row?.metrics?.sessions || 0,
|
|
49
|
+
activeUsers: ga4Row?.metrics?.activeUsers || 0,
|
|
50
|
+
bounceRate: ga4Row?.metrics?.bounceRate
|
|
51
|
+
? `${(ga4Row.metrics.bounceRate * 100).toFixed(1)}%`
|
|
52
|
+
: '0%',
|
|
53
|
+
engagementRate: ga4Row?.metrics?.engagementRate
|
|
54
|
+
? `${(ga4Row.metrics.engagementRate * 100).toFixed(1)}%`
|
|
55
|
+
: '0%',
|
|
56
|
+
};
|
|
57
|
+
// Format top keywords
|
|
58
|
+
const topKeywordsList = topKeywords.rows.slice(0, 10).map((row, index) => ({
|
|
59
|
+
rank: index + 1,
|
|
60
|
+
keyword: row.keys[0] || 'N/A',
|
|
61
|
+
clicks: row.clicks || 0,
|
|
62
|
+
position: row.position.toFixed(1),
|
|
63
|
+
}));
|
|
64
|
+
// Format top pages
|
|
65
|
+
const topPagesList = topPages.rows.slice(0, 10).map((row, index) => ({
|
|
66
|
+
rank: index + 1,
|
|
67
|
+
page: row.keys[0] || 'N/A',
|
|
68
|
+
clicks: row.clicks || 0,
|
|
69
|
+
position: row.position.toFixed(1),
|
|
70
|
+
}));
|
|
71
|
+
// Count opportunities by type and find high-priority items
|
|
72
|
+
const opportunitiesByType = {
|
|
73
|
+
keyword: 0,
|
|
74
|
+
page: 0,
|
|
75
|
+
technical: 0,
|
|
76
|
+
content: 0,
|
|
77
|
+
};
|
|
78
|
+
const highPriorityOpportunities = [];
|
|
79
|
+
for (const opp of opportunities) {
|
|
80
|
+
const type = opp.type;
|
|
81
|
+
if (type in opportunitiesByType) {
|
|
82
|
+
opportunitiesByType[type]++;
|
|
83
|
+
}
|
|
84
|
+
if (opp.priority === 'high' && highPriorityOpportunities.length < 5) {
|
|
85
|
+
highPriorityOpportunities.push({
|
|
86
|
+
type: opp.type,
|
|
87
|
+
title: opp.title,
|
|
88
|
+
priority: opp.priority,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
// Build audit report
|
|
93
|
+
const auditReport = {
|
|
94
|
+
siteInfo: {
|
|
95
|
+
name: site.name || 'N/A',
|
|
96
|
+
url: site.url || 'N/A',
|
|
97
|
+
gscConnected: site.gscConnected,
|
|
98
|
+
ga4Connected: site.ga4Connected,
|
|
99
|
+
},
|
|
100
|
+
period: {
|
|
101
|
+
startDate,
|
|
102
|
+
endDate,
|
|
103
|
+
days: input.days,
|
|
104
|
+
},
|
|
105
|
+
metrics: {
|
|
106
|
+
gsc: gscMetrics,
|
|
107
|
+
ga4: ga4Metrics,
|
|
108
|
+
},
|
|
109
|
+
topKeywords: topKeywordsList,
|
|
110
|
+
topPages: topPagesList,
|
|
111
|
+
opportunities: {
|
|
112
|
+
total: opportunities.length,
|
|
113
|
+
byType: opportunitiesByType,
|
|
114
|
+
topPriority: highPriorityOpportunities,
|
|
115
|
+
},
|
|
116
|
+
};
|
|
117
|
+
return formatResponse(true, auditReport, {
|
|
118
|
+
summary: `Site audit for ${site.name || site.url} completed`,
|
|
119
|
+
period: { startDate, endDate },
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error';
|
|
124
|
+
return formatErrorResponse(errorMessage, 'siteAudit');
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Workflow tool definitions for MCP
|
|
129
|
+
*/
|
|
130
|
+
export const workflowTools = [
|
|
131
|
+
{
|
|
132
|
+
name: 'heyseo_site_audit',
|
|
133
|
+
description: `Perform comprehensive SEO audit for a site.
|
|
134
|
+
|
|
135
|
+
Analyzes GSC performance data, GA4 user engagement metrics, top keywords and pages, and SEO opportunities.
|
|
136
|
+
Returns a complete site health assessment with actionable insights.`,
|
|
137
|
+
inputSchema: {
|
|
138
|
+
type: 'object',
|
|
139
|
+
properties: {
|
|
140
|
+
siteId: {
|
|
141
|
+
type: 'string',
|
|
142
|
+
description: 'The ID of the site to audit',
|
|
143
|
+
},
|
|
144
|
+
days: {
|
|
145
|
+
type: 'number',
|
|
146
|
+
minimum: 7,
|
|
147
|
+
maximum: 90,
|
|
148
|
+
default: 28,
|
|
149
|
+
description: 'Number of days to analyze',
|
|
150
|
+
},
|
|
151
|
+
},
|
|
152
|
+
required: ['siteId'],
|
|
153
|
+
},
|
|
154
|
+
hints: {
|
|
155
|
+
readOnlyHint: true,
|
|
156
|
+
destructiveHint: false,
|
|
157
|
+
idempotentHint: true,
|
|
158
|
+
openWorldHint: true,
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
];
|
|
162
|
+
//# sourceMappingURL=workflows.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflows.js","sourceRoot":"","sources":["../../src/tools/workflows.ts"],"names":[],"mappings":"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"}
|