@actuate-media/cms-admin 0.57.2 → 0.58.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.
@@ -0,0 +1,208 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
4
+ import { Check, ChevronDown, Loader2, Sparkles, Wand2 } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { applySeoIssueFix, fetchSeoIssueFixSuggestion, fetchSeoContentBrief, fetchSeoContentResearch, generateSeoContentBrief, ignoreSeoIssue, isInlineSeoFixIssue, researchAndBriefSeoIssue, supportsSeoContentBrief, supportsSeoContentResearch, } from '../../lib/seo-service.js';
7
+ import { SeoErrorState, btnPrimary, btnSecondary } from './primitives.js';
8
+ function formatValue(value) {
9
+ if (value === null || value === '')
10
+ return '—';
11
+ if (typeof value === 'boolean')
12
+ return value ? 'Yes' : 'No';
13
+ if (value.length > 280)
14
+ return `${value.slice(0, 277)}…`;
15
+ return value;
16
+ }
17
+ function ChangePreview({ changes }) {
18
+ if (changes.length === 0)
19
+ return null;
20
+ return (_jsx("div", { className: "border-border overflow-hidden rounded-md border", children: _jsxs("table", { className: "w-full text-sm", "aria-label": "Proposed SEO changes", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-border bg-muted/40 text-muted-foreground border-b text-left", children: [_jsx("th", { scope: "col", className: "py-2 pr-3 pl-3 font-medium", children: "Field" }), _jsx("th", { scope: "col", className: "py-2 pr-3 font-medium", children: "Current" }), _jsx("th", { scope: "col", className: "py-2 pr-3 font-medium", children: "Proposed" })] }) }), _jsx("tbody", { className: "divide-border divide-y", children: changes.map((c) => (_jsxs("tr", { children: [_jsx("td", { className: "text-foreground py-2 pr-3 pl-3 font-medium", children: c.label }), _jsx("td", { className: "text-muted-foreground max-w-48 py-2 pr-3 wrap-break-word", children: formatValue(c.before) }), _jsx("td", { className: "text-foreground max-w-48 py-2 pr-3 wrap-break-word", children: formatValue(c.after) })] }, c.field))) })] }) }));
21
+ }
22
+ function ContentResearchCard({ research }) {
23
+ return (_jsxs("div", { className: "border-border bg-card space-y-3 rounded-md border p-4", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsxs("span", { className: "bg-accent text-foreground inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium", children: [_jsx(Sparkles, { className: "h-3 w-3", "aria-hidden": true }), "Topic research"] }) }), _jsx("p", { className: "text-foreground text-sm", children: research.summary }), _jsxs("ul", { className: "text-foreground space-y-1.5 text-sm", children: [research.focusKeyword ? (_jsxs("li", { children: [_jsx("span", { className: "text-muted-foreground", children: "Focus keyword: " }), research.focusKeyword] })) : null, research.suggestedWordCount ? (_jsxs("li", { children: [_jsx("span", { className: "text-muted-foreground", children: "Suggested length: " }), "~", research.suggestedWordCount, " words"] })) : null] }), research.outline.length > 0 ? (_jsxs("div", { children: [_jsx("p", { className: "text-muted-foreground mb-1.5 text-xs font-medium tracking-wide uppercase", children: "Suggested outline" }), _jsx("ul", { className: "text-foreground list-disc space-y-1 pl-5 text-sm", children: research.outline.map((item) => (_jsx("li", { children: item }, item))) })] })) : null, research.faqCandidates.length > 0 ? (_jsxs("div", { children: [_jsx("p", { className: "text-muted-foreground mb-1.5 text-xs font-medium tracking-wide uppercase", children: "FAQ candidates" }), _jsx("ul", { className: "text-foreground list-disc space-y-1 pl-5 text-sm", children: research.faqCandidates.map((q) => (_jsx("li", { children: q }, q))) })] })) : null] }));
24
+ }
25
+ function ContentBriefCard({ brief }) {
26
+ return (_jsxs("div", { className: "border-border bg-card space-y-3 rounded-md border p-4", children: [_jsx("div", { className: "flex items-center gap-2", children: _jsxs("span", { className: "bg-primary/10 text-primary inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium", children: [_jsx(Sparkles, { className: "h-3 w-3", "aria-hidden": true }), "AI content brief"] }) }), _jsx("p", { className: "text-foreground text-sm", children: brief.summary }), _jsxs("ul", { className: "text-foreground space-y-1.5 text-sm", children: [brief.suggestedH1 ? (_jsxs("li", { children: [_jsx("span", { className: "text-muted-foreground", children: "Suggested H1: " }), brief.suggestedH1] })) : null, brief.targetWordCount ? (_jsxs("li", { children: [_jsx("span", { className: "text-muted-foreground", children: "Target length: " }), "~", brief.targetWordCount, ' ', "words"] })) : null, brief.keyTakeawayDraft ? (_jsxs("li", { children: [_jsx("span", { className: "text-muted-foreground", children: "GEO takeaway: " }), brief.keyTakeawayDraft] })) : null, brief.geoNote ? (_jsxs("li", { children: [_jsx("span", { className: "text-muted-foreground", children: "GEO note: " }), brief.geoNote] })) : null] }), brief.topics.length > 0 ? (_jsxs("div", { children: [_jsx("p", { className: "text-muted-foreground mb-1.5 text-xs font-medium tracking-wide uppercase", children: "Topics to cover" }), _jsx("ul", { className: "text-foreground list-disc space-y-1 pl-5 text-sm", children: brief.topics.map((topic) => (_jsx("li", { children: topic }, topic))) })] })) : null, brief.sections.map((section) => (_jsxs("div", { children: [_jsx("p", { className: "text-foreground text-sm font-medium", children: section.heading }), section.bullets.length > 0 ? (_jsx("ul", { className: "text-muted-foreground mt-1 list-disc space-y-1 pl-5 text-sm", children: section.bullets.map((bullet) => (_jsx("li", { children: bullet }, bullet))) })) : null] }, section.heading)))] }));
27
+ }
28
+ function manualPath(issue) {
29
+ const ent = issue.entityType;
30
+ const id = issue.entityId;
31
+ switch (issue.fixActionType) {
32
+ case 'edit-metadata':
33
+ case 'edit-canonical':
34
+ case 'edit-og':
35
+ case 'edit-og-image':
36
+ case 'edit-schema':
37
+ if (ent && id) {
38
+ return `/seo?tab=content&entityType=${ent}&entityId=${encodeURIComponent(id)}`;
39
+ }
40
+ return null;
41
+ case 'edit-content':
42
+ if (ent === 'page' && id)
43
+ return `/pages/${id}`;
44
+ if (ent && id) {
45
+ return `/seo?tab=content&entityType=${ent}&entityId=${encodeURIComponent(id)}`;
46
+ }
47
+ return null;
48
+ case 'fix-broken-link':
49
+ case 'fix-link':
50
+ case 'create-redirect':
51
+ return '/seo?tab=redirects';
52
+ case 'optimize-media':
53
+ return '/media';
54
+ case 'improve-speed':
55
+ return '/seo?tab=technical';
56
+ default:
57
+ if (ent === 'page' && id)
58
+ return `/pages/${id}`;
59
+ return null;
60
+ }
61
+ }
62
+ export function SeoIssueFixPanel({ issue, expanded, onChanged, onNavigate, onOpenDetails, }) {
63
+ const inlineFix = isInlineSeoFixIssue(issue.type);
64
+ const contentBriefEligible = supportsSeoContentBrief(issue.type);
65
+ const researchEligible = supportsSeoContentResearch(issue.type);
66
+ const [suggestion, setSuggestion] = useState(null);
67
+ const [contentBrief, setContentBrief] = useState(null);
68
+ const [contentResearch, setContentResearch] = useState(null);
69
+ const [competitorUrls, setCompetitorUrls] = useState(['', '', '']);
70
+ const [briefStale, setBriefStale] = useState(false);
71
+ const [researchStale, setResearchStale] = useState(false);
72
+ const [loading, setLoading] = useState(false);
73
+ const [error, setError] = useState(null);
74
+ const [busy, setBusy] = useState(false);
75
+ const [generatingBrief, setGeneratingBrief] = useState(false);
76
+ const [researching, setResearching] = useState(false);
77
+ useEffect(() => {
78
+ if (!expanded) {
79
+ setSuggestion(null);
80
+ setContentBrief(null);
81
+ setContentResearch(null);
82
+ setCompetitorUrls(['', '', '']);
83
+ setBriefStale(false);
84
+ setResearchStale(false);
85
+ setError(null);
86
+ return;
87
+ }
88
+ let alive = true;
89
+ setLoading(true);
90
+ setError(null);
91
+ async function load() {
92
+ if (inlineFix) {
93
+ const res = await fetchSeoIssueFixSuggestion(issue.id);
94
+ if (!alive)
95
+ return;
96
+ if (res.error)
97
+ setError(res.error);
98
+ else
99
+ setSuggestion(res.suggestion ?? null);
100
+ return;
101
+ }
102
+ if (contentBriefEligible) {
103
+ const briefRes = await fetchSeoContentBrief(issue.id);
104
+ if (!alive)
105
+ return;
106
+ if (briefRes.error)
107
+ setError(briefRes.error);
108
+ else {
109
+ setContentBrief(briefRes.brief ?? null);
110
+ setBriefStale(briefRes.stale ?? false);
111
+ }
112
+ if (researchEligible) {
113
+ const researchRes = await fetchSeoContentResearch(issue.id);
114
+ if (!alive)
115
+ return;
116
+ if (researchRes.error && !briefRes.error)
117
+ setError(researchRes.error);
118
+ else if (!researchRes.error) {
119
+ setContentResearch(researchRes.research ?? null);
120
+ setResearchStale(researchRes.stale ?? false);
121
+ }
122
+ }
123
+ }
124
+ }
125
+ load()
126
+ .catch((e) => alive && setError(e instanceof Error ? e.message : 'Failed to load'))
127
+ .finally(() => alive && setLoading(false));
128
+ return () => {
129
+ alive = false;
130
+ };
131
+ }, [expanded, issue.id, inlineFix, contentBriefEligible, researchEligible]);
132
+ function parsedCompetitorUrls() {
133
+ return competitorUrls
134
+ .map((u) => u.trim())
135
+ .filter(Boolean)
136
+ .slice(0, 3);
137
+ }
138
+ async function handleApprove() {
139
+ if (!suggestion?.autoFixable)
140
+ return;
141
+ setBusy(true);
142
+ const res = await applySeoIssueFix(issue.id, suggestion.fingerprint);
143
+ setBusy(false);
144
+ if (res.error) {
145
+ toast.error(res.error);
146
+ return;
147
+ }
148
+ toast.success('Fix applied and issue resolved.');
149
+ onChanged?.();
150
+ }
151
+ async function handleResearchAndBrief() {
152
+ setResearching(true);
153
+ const res = await researchAndBriefSeoIssue(issue.id, parsedCompetitorUrls());
154
+ setResearching(false);
155
+ if (res.error) {
156
+ toast.error(res.error);
157
+ return;
158
+ }
159
+ if (res.research) {
160
+ setContentResearch(res.research);
161
+ setResearchStale(false);
162
+ }
163
+ if (res.brief) {
164
+ setContentBrief(res.brief);
165
+ setBriefStale(false);
166
+ }
167
+ toast.success('Research and content brief generated — review before editing the page.');
168
+ }
169
+ async function handleGenerateBrief() {
170
+ setGeneratingBrief(true);
171
+ const res = await generateSeoContentBrief(issue.id);
172
+ setGeneratingBrief(false);
173
+ if (res.error) {
174
+ toast.error(res.error);
175
+ return;
176
+ }
177
+ if (res.brief) {
178
+ setContentBrief(res.brief);
179
+ setBriefStale(false);
180
+ toast.success('Content brief generated — review before editing the page.');
181
+ }
182
+ }
183
+ async function handleIgnore() {
184
+ setBusy(true);
185
+ const res = await ignoreSeoIssue(issue.id);
186
+ setBusy(false);
187
+ if (res.error)
188
+ return toast.error(res.error);
189
+ toast.success('Issue ignored.');
190
+ onChanged?.();
191
+ }
192
+ const manualRoute = manualPath(issue);
193
+ if (!expanded)
194
+ return null;
195
+ return (_jsx("tr", { children: _jsx("td", { colSpan: 5, className: "bg-muted/30 px-4 py-4", children: _jsx("div", { className: "space-y-4", children: loading ? (_jsxs("div", { className: "text-muted-foreground flex items-center gap-2 text-sm", role: "status", "aria-live": "polite", children: [_jsx(Loader2, { className: "h-4 w-4 motion-safe:animate-spin", "aria-hidden": true }), inlineFix ? 'Loading suggested fix…' : 'Loading issue details…'] })) : error ? (_jsx(SeoErrorState, { message: error })) : (_jsxs(_Fragment, { children: [!inlineFix && (issue.description || issue.recommendation) ? (_jsxs("div", { className: "space-y-2", children: [issue.description ? (_jsx("p", { className: "text-foreground text-sm", children: issue.description })) : null, issue.recommendation ? (_jsxs("p", { className: "text-muted-foreground text-sm", children: [_jsx("span", { className: "text-foreground font-medium", children: "Recommended fix: " }), issue.recommendation] })) : null] })) : null, inlineFix && suggestion ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex flex-wrap items-center gap-2", children: suggestion.source === 'ai' && !suggestion.aiUnavailable ? (_jsxs("span", { className: "bg-primary/10 text-primary inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium", children: [_jsx(Sparkles, { className: "h-3 w-3", "aria-hidden": true }), "AI suggestion"] })) : suggestion.source === 'deterministic' ? (_jsx("span", { className: "bg-muted text-muted-foreground rounded-full px-2.5 py-0.5 text-xs font-medium", children: "Rule-based fix" })) : null }), _jsxs("div", { className: "flex items-start gap-2", children: [_jsx(Sparkles, { className: "text-primary mt-0.5 h-4 w-4 shrink-0", "aria-hidden": true }), _jsx("p", { className: "text-foreground text-sm", children: suggestion.justification })] }), _jsx(ChangePreview, { changes: suggestion.changes })] })) : null, contentBriefEligible ? (_jsxs(_Fragment, { children: [researchEligible ? (_jsxs("div", { className: "space-y-2", children: [_jsx("p", { className: "text-muted-foreground text-sm", children: "Optional competitor URLs (SSRF-safe fetch, max 3) to enrich topic research for thin content." }), competitorUrls.map((value, index) => (_jsxs("label", { className: "block", children: [_jsxs("span", { className: "text-muted-foreground sr-only", children: ["Competitor URL ", index + 1] }), _jsx("input", { type: "url", value: value, onChange: (e) => {
196
+ const next = [...competitorUrls];
197
+ next[index] = e.target.value;
198
+ setCompetitorUrls(next);
199
+ }, placeholder: `Competitor URL ${index + 1} (optional)`, className: "border-border bg-input-background text-foreground focus-visible:ring-ring w-full rounded-md border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none" })] }, index)))] })) : null, researchStale && !contentResearch ? (_jsx("p", { className: "text-muted-foreground text-sm", role: "status", children: "Previous topic research is outdated because the page changed." })) : null, contentResearch ? _jsx(ContentResearchCard, { research: contentResearch }) : null, briefStale && !contentBrief ? (_jsx("p", { className: "text-muted-foreground text-sm", role: "status", children: "A previous content brief is outdated because the page changed. Generate a new one." })) : null, contentBrief ? _jsx(ContentBriefCard, { brief: contentBrief }) : null, !contentBrief ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Generate an AI content brief with suggested headings, topics, and GEO guidance for your dev team." })) : null] })) : null, _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [inlineFix && suggestion?.autoFixable ? (_jsxs("button", { type: "button", className: btnPrimary, onClick: handleApprove, disabled: busy, children: [_jsx(Check, { className: "h-4 w-4", "aria-hidden": true }), busy ? 'Applying…' : 'Approve fix'] })) : inlineFix && suggestion?.aiUnavailable ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Configure an AI provider in Settings \u2192 AI to enable generated fixes for this issue." })) : null, contentBriefEligible ? (_jsxs(_Fragment, { children: [researchEligible ? (_jsxs("button", { type: "button", className: !contentBrief && !contentResearch ? btnPrimary : btnSecondary, onClick: handleResearchAndBrief, disabled: busy || researching || generatingBrief, children: [_jsx(Sparkles, { className: `h-4 w-4 ${researching ? 'motion-safe:animate-pulse' : ''}`, "aria-hidden": true }), researching ? 'Researching…' : 'Research & brief'] })) : null, _jsxs("button", { type: "button", className: contentBrief ? btnSecondary : btnPrimary, onClick: handleGenerateBrief, disabled: busy || generatingBrief || researching, children: [_jsx(Wand2, { className: `h-4 w-4 ${generatingBrief ? 'motion-safe:animate-pulse' : ''}`, "aria-hidden": true }), generatingBrief
200
+ ? 'Generating brief…'
201
+ : contentBrief
202
+ ? 'Regenerate brief'
203
+ : 'Generate content brief'] })] })) : null, !inlineFix && !contentBriefEligible ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "This issue requires manual follow-up in the admin or codebase." })) : null, manualRoute && onNavigate ? (_jsx("button", { type: "button", className: btnSecondary, onClick: () => onNavigate(manualRoute), disabled: busy, children: "Edit manually" })) : null, _jsx("button", { type: "button", className: btnSecondary, onClick: handleIgnore, disabled: busy, children: "Ignore" }), onOpenDetails ? (_jsx("button", { type: "button", className: "text-primary hover:bg-accent focus-visible:ring-ring rounded-md px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none", onClick: onOpenDetails, disabled: busy, children: "More details" })) : null] })] })) }) }) }));
204
+ }
205
+ export function SeoIssueFixToggle({ expanded, fixable, onToggle, }) {
206
+ return (_jsxs("button", { type: "button", onClick: onToggle, "aria-expanded": expanded, className: "text-primary hover:bg-accent focus-visible:ring-ring inline-flex items-center gap-1 rounded-md px-2 py-1 text-sm focus-visible:ring-2 focus-visible:outline-none", children: [fixable ? 'Fix' : 'View', _jsx(ChevronDown, { className: `h-3.5 w-3.5 motion-safe:transition-transform ${expanded ? 'rotate-180' : ''}`, "aria-hidden": true })] }));
207
+ }
208
+ //# sourceMappingURL=SeoIssueFixPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeoIssueFixPanel.js","sourceRoot":"","sources":["../../../src/components/seo/SeoIssueFixPanel.tsx"],"names":[],"mappings":"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"}
@@ -200,6 +200,137 @@ export declare function ignoreSeoIssue(issueId: string): Promise<{
200
200
  export declare function reopenSeoIssue(issueId: string): Promise<{
201
201
  error?: string;
202
202
  }>;
203
+ export interface SeoFixFieldChange {
204
+ field: string;
205
+ label: string;
206
+ before: string | boolean | null;
207
+ after: string | boolean | null;
208
+ }
209
+ export interface SeoIssueFixSuggestion {
210
+ autoFixable: boolean;
211
+ source?: 'deterministic' | 'ai';
212
+ aiUnavailable?: boolean;
213
+ fingerprint: string;
214
+ patch: Record<string, unknown>;
215
+ changes: SeoFixFieldChange[];
216
+ justification: string;
217
+ }
218
+ export declare function fetchSeoIssueFixSuggestion(issueId: string): Promise<{
219
+ suggestion?: SeoIssueFixSuggestion;
220
+ error?: string;
221
+ }>;
222
+ export declare function applySeoIssueFix(issueId: string, fingerprint: string): Promise<{
223
+ issue?: SeoIssue;
224
+ error?: string;
225
+ }>;
226
+ export interface SeoFixBriefExport {
227
+ markdown: string;
228
+ filename: string;
229
+ issueCount: number;
230
+ }
231
+ export interface SeoFixBriefExportQuery {
232
+ severity?: SeoSeverity | 'all';
233
+ status?: SeoIssueStatus | 'all';
234
+ auditRunId?: string;
235
+ /** Default true — only issues needing dev/content handoff. */
236
+ manualOnly?: boolean;
237
+ /** Default true — embed cached AI content briefs when available. */
238
+ includeContentBriefs?: boolean;
239
+ /** Default true — embed cached topic research when available. */
240
+ includeContentResearch?: boolean;
241
+ }
242
+ export declare function exportSeoFixBrief(query?: SeoFixBriefExportQuery): Promise<{
243
+ data?: SeoFixBriefExport;
244
+ error?: string;
245
+ }>;
246
+ /** Issue types with inline Approve fix in the Audit tab (keep in sync with cms-core). */
247
+ export declare const SEO_INLINE_FIX_ISSUE_TYPES: Set<string>;
248
+ export declare function isInlineSeoFixIssue(type: string): boolean;
249
+ export declare const SEO_CONTENT_BRIEF_ISSUE_TYPES: readonly ["thin-content", "missing-h1", "multiple-h1", "missing-alt-text"];
250
+ export declare function supportsSeoContentBrief(type: string): boolean;
251
+ export interface SeoContentBriefSection {
252
+ heading: string;
253
+ bullets: string[];
254
+ }
255
+ export interface SeoContentBrief {
256
+ issueType: string;
257
+ entityId: string;
258
+ fingerprint: string;
259
+ generatedAt: string;
260
+ summary: string;
261
+ suggestedH1: string | null;
262
+ targetWordCount: number | null;
263
+ topics: string[];
264
+ sections: SeoContentBriefSection[];
265
+ keyTakeawayDraft: string | null;
266
+ geoNote: string | null;
267
+ }
268
+ export declare function fetchSeoContentBrief(issueId: string): Promise<{
269
+ supported?: boolean;
270
+ brief?: SeoContentBrief | null;
271
+ stale?: boolean;
272
+ error?: string;
273
+ }>;
274
+ export declare function generateSeoContentBrief(issueId: string): Promise<{
275
+ brief?: SeoContentBrief;
276
+ error?: string;
277
+ }>;
278
+ export declare const SEO_RESEARCH_ISSUE_TYPES: readonly ["thin-content"];
279
+ export declare function supportsSeoContentResearch(type: string): boolean;
280
+ export interface SeoContentResearchCompetitor {
281
+ url: string;
282
+ title: string;
283
+ note: string;
284
+ }
285
+ export interface SeoContentResearch {
286
+ issueType: string;
287
+ entityId: string;
288
+ fingerprint: string;
289
+ generatedAt: string;
290
+ focusKeyword: string | null;
291
+ suggestedWordCount: number | null;
292
+ outline: string[];
293
+ faqCandidates: string[];
294
+ entitiesToMention: string[];
295
+ competitorInsights: SeoContentResearchCompetitor[];
296
+ summary: string;
297
+ }
298
+ export declare function fetchSeoContentResearch(issueId: string): Promise<{
299
+ supported?: boolean;
300
+ research?: SeoContentResearch | null;
301
+ stale?: boolean;
302
+ error?: string;
303
+ }>;
304
+ export declare function generateSeoContentResearch(issueId: string, competitorUrls?: string[]): Promise<{
305
+ research?: SeoContentResearch;
306
+ error?: string;
307
+ }>;
308
+ export declare function researchAndBriefSeoIssue(issueId: string, competitorUrls?: string[]): Promise<{
309
+ research?: SeoContentResearch | null;
310
+ brief?: SeoContentBrief;
311
+ error?: string;
312
+ }>;
313
+ export interface BatchContentBriefResult {
314
+ generated: number;
315
+ skipped: number;
316
+ failed: number;
317
+ results: Array<{
318
+ issueId: string;
319
+ status: 'generated' | 'skipped' | 'failed';
320
+ error?: string;
321
+ }>;
322
+ }
323
+ export interface BatchContentBriefQuery {
324
+ severity?: SeoSeverity | 'all';
325
+ status?: SeoIssueStatus | 'all';
326
+ issueIds?: string[];
327
+ skipExisting?: boolean;
328
+ includeResearch?: boolean;
329
+ }
330
+ export declare function batchGenerateSeoContentBriefs(query?: BatchContentBriefQuery): Promise<{
331
+ data?: BatchContentBriefResult;
332
+ error?: string;
333
+ }>;
203
334
  export interface SitemapStatus {
204
335
  sitemapUrl: string;
205
336
  lastGeneratedAt: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"seo-service.d.ts","sourceRoot":"","sources":["../../src/lib/seo-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"seo-service.d.ts","sourceRoot":"","sources":["../../src/lib/seo-service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AAkBpF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,UAAU,CAAA;AAC5D,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAA;AACzD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAA;AAC1E,MAAM,MAAM,gBAAgB,GACxB,SAAS,GACT,WAAW,GACX,WAAW,GACX,OAAO,GACP,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,UAAU,CAAA;AACd,MAAM,MAAM,kBAAkB,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAA;AAI5D,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,QAAQ,CAAA;IACf,iDAAiD;IACjD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CACvF;AAED,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,sDAAsD;IACtD,KAAK,CAAC,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAA;CAC/B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB,QAAQ,EAAE,WAAW,CAAA;IACrB,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,MAAM,EAAE,cAAc,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;CAC7B;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,EAAE,MAAM,CAAA;IACnB,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,eAAe,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,YAAY,CAAA;IACvB,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,MAAM,EAAE,QAAQ,EAAE,CAAA;IAClB,aAAa,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAA;IACjF,SAAS,EAAE,QAAQ,EAAE,CAAA;IACrB,iBAAiB,EAAE,oBAAoB,EAAE,CAAA;IACzC,sBAAsB,EAAE,OAAO,CAAA;IAC/B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;CAC9B;AAaD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,CAAC,CAI7D;AAED,wBAAsB,sBAAsB,CAC1C,MAAM,GAAE;IACN,KAAK,CAAC,EAAE,MAAM,CAAA;CACV,GACL,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAKjC;AAID,0DAA0D;AAC1D,eAAO,MAAM,gBAAgB,mHAUnB,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7D,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAA;IACV,UAAU,EAAE,MAAM,GAAG,MAAM,CAAA;IAC3B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,GAAG,EAAE,MAAM,CAAA;IACX,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IAC9C,0EAA0E;IAC1E,WAAW,EAAE,WAAW,CAAA;IACxB,8EAA8E;IAC9E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,0EAA0E;IAC1E,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,gEAAgE;IAChE,YAAY,EAAE,OAAO,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,QAAQ,CAAA;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;AAErD,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAA;AAExD,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAI1E;AAED,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAMlC;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAsB,eAAe,CACnC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAM7B;AAED,sFAAsF;AACtF,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,gBAAgB,EAAE,EAC3B,KAAK,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,gBAAgB,CAAA;CAAE,GACpD,gBAAgB,EAAE,CAqBpB;AAID,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,SAAS,GAAG,WAAW,GAAG,UAAU,CAAA;AAEzE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,MAAM,EAAE,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAA;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;IACjB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,MAAM,CAAA;IACnB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;CAC5B;AAED,wBAAsB,WAAW,CAC/B,KAAK,GAAE,aAAsB,GAC5B,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE,WAAW,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOhD;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAIhE;AAED,wBAAsB,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAItF;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAA;IAC9B,QAAQ,CAAC,EAAE,gBAAgB,GAAG,KAAK,CAAA;IACnC,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAA;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,cAAc,CAAC,KAAK,GAAE,aAAkB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAUnF;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAI7E;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGlF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGjF;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGjF;AAID,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;IAC/B,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAA;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,OAAO,CAAA;IACpB,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,OAAO,EAAE,iBAAiB,EAAE,CAAA;IAC5B,aAAa,EAAE,MAAM,CAAA;CACtB;AAED,wBAAsB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACzE,UAAU,CAAC,EAAE,qBAAqB,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAOD;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,QAAQ,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU/C;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAA;IAC9B,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAA;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,oEAAoE;IACpE,oBAAoB,CAAC,EAAE,OAAO,CAAA;IAC9B,iEAAiE;IACjE,sBAAsB,CAAC,EAAE,OAAO,CAAA;CACjC;AAED,wBAAsB,iBAAiB,CACrC,KAAK,GAAE,sBAA2B,GACjC,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAYvD;AAED,yFAAyF;AACzF,eAAO,MAAM,0BAA0B,aAUrC,CAAA;AAEF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED,eAAO,MAAM,6BAA6B,4EAKhC,CAAA;AAEV,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,EAAE,CAAA;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,sBAAsB,EAAE,CAAA;IAClC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,KAAK,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IAC9B,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAUD;AAED,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,eAAe,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOtD;AAED,eAAO,MAAM,wBAAwB,2BAA4B,CAAA;AAEjE,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhE;AAED,MAAM,WAAW,4BAA4B;IAC3C,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAA;IAC3B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAA;IACjC,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,aAAa,EAAE,MAAM,EAAE,CAAA;IACvB,iBAAiB,EAAE,MAAM,EAAE,CAAA;IAC3B,kBAAkB,EAAE,4BAA4B,EAAE,CAAA;IAClD,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACtE,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAA;IACpC,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,CAAC,CAYD;AAED,wBAAsB,0BAA0B,CAC9C,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU5D;AAED,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,MAAM,EACf,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU5F;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAA;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAChG;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,WAAW,GAAG,KAAK,CAAA;IAC9B,MAAM,CAAC,EAAE,cAAc,GAAG,KAAK,CAAA;IAC/B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,wBAAsB,6BAA6B,CACjD,KAAK,GAAE,sBAA2B,GACjC,OAAO,CAAC;IAAE,IAAI,CAAC,EAAE,uBAAuB,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAc7D;AAID,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,aAAa,EAAE,MAAM,CAAA;IACrB,aAAa,EAAE,MAAM,CAAA;IACrB,uBAAuB,EAAE,OAAO,CAAA;IAChC,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,eAAe,EAAE,OAAO,CAAA;IACxB,sBAAsB,EAAE,OAAO,CAAA;IAC/B,qBAAqB,EAAE,OAAO,CAAA;CAC/B;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAIxE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,MAAM,CAAC,EAAE,aAAa,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAI7F;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAIxE;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,OAAO,CAAC,aAAa,CAAC,GAC9B,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAM7B;AAID,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,EAAE,YAAY,EAAE,CAAA;IACpB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CACzD;AAED,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAIzE;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,OAAO,CAAA;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,gBAAgB,EAAE,OAAO,CAAA;IACzB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAInE;AAED,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAG/E;AAED,sEAAsE;AACtE,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CAiChE;AAID,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,kBAAkB,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;IAChB,aAAa,EAAE,OAAO,CAAA;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,eAAe,EAAE,MAAM,CAAA;IACvB,cAAc,EAAE,MAAM,CAAA;IACtB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,MAAM,CAAA;IACpB,cAAc,EAAE,MAAM,CAAA;IACtB,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAA;IACV,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,WAAW,CAAA;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,IAAI,EAAE,OAAO,GAAG,MAAM,CAAA;IACtB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,aAAa,EAAE,MAAM,CAAA;IACrB,WAAW,EAAE,MAAM,CAAA;CACpB;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAavE;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAIlE;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,kBAAkB,CAAA;IACxB,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAG7B;AAED,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,GACpC,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAM7B;AAED,wBAAsB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAKxF;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC,CAIpE;AAED,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAMvF;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAI9E;AAED,wBAAsB,8BAA8B,IAAI,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAGlF;AAED,wBAAsB,wBAAwB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAQhG;AAED,wBAAsB,yBAAyB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAMjG;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAIpF;AAED,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAOnE;AAID,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IACxC,cAAc,CAAC,EAAE,yBAAyB,CAAA;IAC1C,uEAAuE;IACvE,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAWD,wBAAsB,gBAAgB,CACpC,KAAK,EACD,WAAW,GACX,iBAAiB,GACjB,SAAS,GACT,eAAe,GACf,cAAc,GACd,aAAa,EACjB,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAChD,OAAO,CAAC,WAAW,CAAC,CAOtB;AAED,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAO3E;AAED,wBAAsB,sBAAsB,CAAC,OAAO,EAAE;IACpD,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,UAAU,EAAE,MAAM,CAAA;CACnB,GAAG,OAAO,CAAC,WAAW,CAAC,CAOvB;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC,WAAW,CAAC,CAI9D"}
@@ -140,6 +140,133 @@ export async function reopenSeoIssue(issueId) {
140
140
  const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/reopen`, { method: 'POST' });
141
141
  return res.error ? { error: res.error } : {};
142
142
  }
143
+ export async function fetchSeoIssueFixSuggestion(issueId) {
144
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/suggest-fix`, { method: 'POST' });
145
+ if (res.error)
146
+ return { error: res.error };
147
+ return { suggestion: res.data?.suggestion };
148
+ }
149
+ export async function applySeoIssueFix(issueId, fingerprint) {
150
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/apply-fix`, {
151
+ method: 'POST',
152
+ body: JSON.stringify({ fingerprint }),
153
+ });
154
+ if (res.error)
155
+ return { error: res.error };
156
+ return { issue: res.data?.issue };
157
+ }
158
+ export async function exportSeoFixBrief(query = {}) {
159
+ const params = new URLSearchParams();
160
+ if (query.severity && query.severity !== 'all')
161
+ params.set('severity', query.severity);
162
+ if (query.status && query.status !== 'all')
163
+ params.set('status', query.status);
164
+ if (query.auditRunId)
165
+ params.set('auditRunId', query.auditRunId);
166
+ if (query.manualOnly === false)
167
+ params.set('manualOnly', 'false');
168
+ if (query.includeContentBriefs === false)
169
+ params.set('includeContentBriefs', 'false');
170
+ if (query.includeContentResearch === false)
171
+ params.set('includeContentResearch', 'false');
172
+ const qs = params.toString();
173
+ const res = await cmsApi(`/seo/issues/export-brief${qs ? `?${qs}` : ''}`);
174
+ if (res.error)
175
+ return { error: res.error };
176
+ return { data: res.data };
177
+ }
178
+ /** Issue types with inline Approve fix in the Audit tab (keep in sync with cms-core). */
179
+ export const SEO_INLINE_FIX_ISSUE_TYPES = new Set([
180
+ 'meta-title-length',
181
+ 'meta-description-length',
182
+ 'accidental-noindex',
183
+ 'missing-meta-title',
184
+ 'missing-meta-description',
185
+ 'missing-canonical',
186
+ 'duplicate-meta-title',
187
+ 'duplicate-meta-description',
188
+ 'missing-structured-data',
189
+ ]);
190
+ export function isInlineSeoFixIssue(type) {
191
+ return SEO_INLINE_FIX_ISSUE_TYPES.has(type);
192
+ }
193
+ export const SEO_CONTENT_BRIEF_ISSUE_TYPES = [
194
+ 'thin-content',
195
+ 'missing-h1',
196
+ 'multiple-h1',
197
+ 'missing-alt-text',
198
+ ];
199
+ export function supportsSeoContentBrief(type) {
200
+ return SEO_CONTENT_BRIEF_ISSUE_TYPES.includes(type);
201
+ }
202
+ export async function fetchSeoContentBrief(issueId) {
203
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/content-brief`);
204
+ if (res.error)
205
+ return { error: res.error };
206
+ return {
207
+ supported: res.data?.supported,
208
+ brief: res.data?.brief,
209
+ stale: res.data?.stale,
210
+ };
211
+ }
212
+ export async function generateSeoContentBrief(issueId) {
213
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/content-brief`, { method: 'POST' });
214
+ if (res.error)
215
+ return { error: res.error };
216
+ return { brief: res.data?.brief };
217
+ }
218
+ export const SEO_RESEARCH_ISSUE_TYPES = ['thin-content'];
219
+ export function supportsSeoContentResearch(type) {
220
+ return SEO_RESEARCH_ISSUE_TYPES.includes(type);
221
+ }
222
+ export async function fetchSeoContentResearch(issueId) {
223
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/content-research`);
224
+ if (res.error)
225
+ return { error: res.error };
226
+ return {
227
+ supported: res.data?.supported,
228
+ research: res.data?.research,
229
+ stale: res.data?.stale,
230
+ };
231
+ }
232
+ export async function generateSeoContentResearch(issueId, competitorUrls) {
233
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/content-research`, {
234
+ method: 'POST',
235
+ body: JSON.stringify({ competitorUrls: competitorUrls?.filter(Boolean) }),
236
+ });
237
+ if (res.error)
238
+ return { error: res.error };
239
+ return { research: res.data?.research };
240
+ }
241
+ export async function researchAndBriefSeoIssue(issueId, competitorUrls) {
242
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/research-and-brief`, {
243
+ method: 'POST',
244
+ body: JSON.stringify({ competitorUrls: competitorUrls?.filter(Boolean) }),
245
+ });
246
+ if (res.error)
247
+ return { error: res.error };
248
+ return { research: res.data?.research, brief: res.data?.brief };
249
+ }
250
+ export async function batchGenerateSeoContentBriefs(query = {}) {
251
+ const body = {};
252
+ if (query.severity && query.severity !== 'all')
253
+ body.severity = query.severity;
254
+ if (query.status && query.status !== 'all')
255
+ body.status = query.status;
256
+ if (query.issueIds?.length)
257
+ body.issueIds = query.issueIds;
258
+ if (query.skipExisting === false)
259
+ body.skipExisting = false;
260
+ if (query.includeResearch)
261
+ body.includeResearch = true;
262
+ const res = await cmsApi('/seo/issues/batch-content-briefs', {
263
+ method: 'POST',
264
+ body: JSON.stringify(body),
265
+ });
266
+ if (res.error)
267
+ return { error: res.error };
268
+ return { data: res.data };
269
+ }
143
270
  export async function fetchSitemapStatus() {
144
271
  const res = await cmsApi('/seo/sitemap/status');
145
272
  throwIfError(res);