@actuate-media/plugin-ai 0.4.1 → 0.5.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/CHANGELOG.md +20 -0
- package/dist/__tests__/alt-text-prompt.test.d.ts +2 -0
- package/dist/__tests__/alt-text-prompt.test.d.ts.map +1 -0
- package/dist/__tests__/alt-text-prompt.test.js +15 -0
- package/dist/__tests__/alt-text-prompt.test.js.map +1 -0
- package/dist/__tests__/meta-generator.test.d.ts +2 -0
- package/dist/__tests__/meta-generator.test.d.ts.map +1 -0
- package/dist/__tests__/meta-generator.test.js +28 -0
- package/dist/__tests__/meta-generator.test.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/media/alt-text-generator.d.ts.map +1 -1
- package/dist/media/alt-text-generator.js +25 -13
- package/dist/media/alt-text-generator.js.map +1 -1
- package/dist/media/alt-text-prompt.d.ts +6 -0
- package/dist/media/alt-text-prompt.d.ts.map +1 -0
- package/dist/media/alt-text-prompt.js +32 -0
- package/dist/media/alt-text-prompt.js.map +1 -0
- package/dist/writing/meta-generator.d.ts +6 -0
- package/dist/writing/meta-generator.d.ts.map +1 -1
- package/dist/writing/meta-generator.js +17 -0
- package/dist/writing/meta-generator.js.map +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,25 @@
|
|
|
1
1
|
# @actuate-media/plugin-ai
|
|
2
2
|
|
|
3
|
+
## 0.5.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 4afb589: WCAG-aligned AI alt text: improved vision prompts, feature-gated `/ai/media-metadata` with `aiAltText` suggestions, post-upload auto-suggest in Media, MCP `generate_media_alt` tool, and validation warnings for static image paths outside the media library.
|
|
8
|
+
|
|
9
|
+
## 0.5.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- bf00622: Add a GEO "key takeaway" field — a concise, citable 1-2 sentence page summary
|
|
14
|
+
for generative answer engines.
|
|
15
|
+
- Editable in the document SEO panel and the SEO Operations Center, each with an
|
|
16
|
+
AI Generate button.
|
|
17
|
+
- New `generateKeyTakeaway()` in plugin-ai and a `keyTakeaway` branch on
|
|
18
|
+
`POST /ai/seo/generate-field`.
|
|
19
|
+
- Rendered automatically as the Schema.org `abstract` on the page/article node,
|
|
20
|
+
as a meta-description fallback, and as the preferred `llms.txt` description.
|
|
21
|
+
- Stored as `data.keyTakeaway` (or `pageSettings.keyTakeaway`).
|
|
22
|
+
|
|
3
23
|
## 0.4.1
|
|
4
24
|
|
|
5
25
|
### Patch Changes
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alt-text-prompt.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/alt-text-prompt.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { normalizeGeneratedAltText } from '../media/alt-text-prompt.js';
|
|
3
|
+
describe('normalizeGeneratedAltText', () => {
|
|
4
|
+
it('returns empty for decorative', () => {
|
|
5
|
+
expect(normalizeGeneratedAltText('anything', true)).toBe('');
|
|
6
|
+
});
|
|
7
|
+
it('strips redundant "image of" prefix', () => {
|
|
8
|
+
expect(normalizeGeneratedAltText('Image of a red bicycle parked outside', false)).toBe('a red bicycle parked outside');
|
|
9
|
+
});
|
|
10
|
+
it('clamps to 125 characters', () => {
|
|
11
|
+
const long = 'a'.repeat(200);
|
|
12
|
+
expect(normalizeGeneratedAltText(long, false).length).toBeLessThanOrEqual(125);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=alt-text-prompt.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alt-text-prompt.test.js","sourceRoot":"","sources":["../../src/__tests__/alt-text-prompt.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAEvE,QAAQ,CAAC,2BAA2B,EAAE,GAAG,EAAE;IACzC,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,yBAAyB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC9D,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,yBAAyB,CAAC,uCAAuC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CACpF,8BAA8B,CAC/B,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,CAAC,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-generator.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/meta-generator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { generateKeyTakeaway } from '../writing/meta-generator.js';
|
|
3
|
+
function makeProvider(responseText) {
|
|
4
|
+
return {
|
|
5
|
+
async generateText() {
|
|
6
|
+
return { text: responseText, usage: { promptTokens: 0, completionTokens: 0 } };
|
|
7
|
+
},
|
|
8
|
+
async generateEmbedding() {
|
|
9
|
+
return [];
|
|
10
|
+
},
|
|
11
|
+
async *streamText() {
|
|
12
|
+
yield responseText;
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
describe('generateKeyTakeaway', () => {
|
|
17
|
+
it('returns a trimmed, unquoted takeaway', async () => {
|
|
18
|
+
const provider = makeProvider('"Choose hiking boots by terrain, fit, and waterproofing."');
|
|
19
|
+
const out = await generateKeyTakeaway('Long article about hiking boots...', 240, provider);
|
|
20
|
+
expect(out).toBe('Choose hiking boots by terrain, fit, and waterproofing.');
|
|
21
|
+
});
|
|
22
|
+
it('truncates to the max length', async () => {
|
|
23
|
+
const provider = makeProvider('x'.repeat(500));
|
|
24
|
+
const out = await generateKeyTakeaway('content', 240, provider);
|
|
25
|
+
expect(out.length).toBe(240);
|
|
26
|
+
});
|
|
27
|
+
});
|
|
28
|
+
//# sourceMappingURL=meta-generator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-generator.test.js","sourceRoot":"","sources":["../../src/__tests__/meta-generator.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAA;AAGlE,SAAS,YAAY,CAAC,YAAoB;IACxC,OAAO;QACL,KAAK,CAAC,YAAY;YAChB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAA;QAChF,CAAC;QACD,KAAK,CAAC,iBAAiB;YACrB,OAAO,EAAE,CAAA;QACX,CAAC;QACD,KAAK,CAAC,CAAC,UAAU;YACf,MAAM,YAAY,CAAA;QACpB,CAAC;KACF,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,sCAAsC,EAAE,KAAK,IAAI,EAAE;QACpD,MAAM,QAAQ,GAAG,YAAY,CAAC,2DAA2D,CAAC,CAAA;QAC1F,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,oCAAoC,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC1F,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,yDAAyD,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QAC3C,MAAM,QAAQ,GAAG,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;QAC9C,MAAM,GAAG,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAA;QAC/D,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export { buildBrandProfile } from './brand/profile-builder.js';
|
|
|
16
16
|
export { checkConsistency } from './brand/consistency-checker.js';
|
|
17
17
|
export { generate, expand, compress, rewrite, proofread } from './writing/assistant.js';
|
|
18
18
|
export { getSuggestions } from './writing/inline-suggestions.js';
|
|
19
|
-
export { generateMetaDescription, generateExcerpt, generateTitle, } from './writing/meta-generator.js';
|
|
19
|
+
export { generateMetaDescription, generateExcerpt, generateKeyTakeaway, generateTitle, } from './writing/meta-generator.js';
|
|
20
20
|
export { generateDocumentContent } from './writing/content-generator.js';
|
|
21
21
|
export type { GenerateDocumentInput, GenerateDocumentResult, DocumentGenerationContext, CollectionShape, FieldShape, } from './writing/content-generator.js';
|
|
22
22
|
export { suggestInternalLinks } from './links/smart-links.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ export { buildBrandProfile } from './brand/profile-builder.js';
|
|
|
16
16
|
export { checkConsistency } from './brand/consistency-checker.js';
|
|
17
17
|
export { generate, expand, compress, rewrite, proofread } from './writing/assistant.js';
|
|
18
18
|
export { getSuggestions } from './writing/inline-suggestions.js';
|
|
19
|
-
export { generateMetaDescription, generateExcerpt, generateTitle, } from './writing/meta-generator.js';
|
|
19
|
+
export { generateMetaDescription, generateExcerpt, generateKeyTakeaway, generateTitle, } from './writing/meta-generator.js';
|
|
20
20
|
export { generateDocumentContent } from './writing/content-generator.js';
|
|
21
21
|
export { suggestInternalLinks } from './links/smart-links.js';
|
|
22
22
|
export { autoTagImage } from './media/auto-tagger.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alt-text-generator.d.ts","sourceRoot":"","sources":["../../src/media/alt-text-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"alt-text-generator.d.ts","sourceRoot":"","sources":["../../src/media/alt-text-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AASnE,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,OAAO,CAAC,EAAE,YAAY,GAAG,aAAa,GAAG,YAAY,CAAA;IACrD,QAAQ,CAAC,EAAE,UAAU,CAAA;IACrB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,UAAU,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,YAAY,EAAE,MAAM,EAAE,CAAA;IACtB,mEAAmE;IACnE,UAAU,EAAE,OAAO,CAAA;CACpB;AAKD;;kDAEkD;AAClD,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CAqExB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { requireAIProvider } from '../providers/index.js';
|
|
2
|
+
import { ALT_TEXT_JSON_SHAPE, ALT_TEXT_SYSTEM_PROMPT, normalizeGeneratedAltText, } from './alt-text-prompt.js';
|
|
2
3
|
import { clampConfidence, stripJsonFences } from './json.js';
|
|
3
4
|
/** Max confidence we'll report for a text-only (no real image) heuristic. */
|
|
4
5
|
const HEURISTIC_MAX_CONFIDENCE = 0.4;
|
|
@@ -18,16 +19,11 @@ export async function generateAltText(imageUrl, context) {
|
|
|
18
19
|
]
|
|
19
20
|
.filter(Boolean)
|
|
20
21
|
.join('\n');
|
|
21
|
-
const jsonShape = `Return a JSON object with:
|
|
22
|
-
- "altText": concise, descriptive alt text (max 125 characters)
|
|
23
|
-
- "alternatives": array of 2 alternative alt text options
|
|
24
|
-
- "confidence": number 0-1 for how confident you are`;
|
|
25
|
-
const systemPrompt = 'You are an accessibility expert. Generate descriptive, concise alt text for images. Return valid JSON only.';
|
|
26
22
|
let result;
|
|
27
23
|
if (canSeeImage) {
|
|
28
|
-
const prompt = `Analyze the attached image and generate accessible alt text.\n\n${contextInfo ? `Context:\n${contextInfo}\n\n` : ''}${
|
|
24
|
+
const prompt = `Analyze the attached image and generate accessible alt text.\n\n${contextInfo ? `Context:\n${contextInfo}\n\n` : ''}${ALT_TEXT_JSON_SHAPE}`;
|
|
29
25
|
result = await ai.analyzeImage(context.image, prompt, {
|
|
30
|
-
systemPrompt,
|
|
26
|
+
systemPrompt: ALT_TEXT_SYSTEM_PROMPT,
|
|
31
27
|
maxTokens: 512,
|
|
32
28
|
temperature: 0.3,
|
|
33
29
|
});
|
|
@@ -35,17 +31,33 @@ export async function generateAltText(imageUrl, context) {
|
|
|
35
31
|
else {
|
|
36
32
|
// No vision: infer ONLY from context. Be explicit so the model doesn't
|
|
37
33
|
// fabricate visual detail it cannot possibly know.
|
|
38
|
-
const prompt = `You CANNOT see the image. Based only on the context below and the file name, suggest plausible accessible alt text, and report low confidence since the image was not analyzed.\n\n${contextInfo ? `Context:\n${contextInfo}\n` : ''}File: ${imageUrl}\n\n${
|
|
39
|
-
result = await ai.generateText(prompt, {
|
|
34
|
+
const prompt = `You CANNOT see the image. Based only on the context below and the file name, suggest plausible accessible alt text, set isDecorative false unless context clearly indicates ornamentation, and report low confidence since the image was not analyzed.\n\n${contextInfo ? `Context:\n${contextInfo}\n` : ''}File: ${imageUrl}\n\n${ALT_TEXT_JSON_SHAPE}`;
|
|
35
|
+
result = await ai.generateText(prompt, {
|
|
36
|
+
systemPrompt: ALT_TEXT_SYSTEM_PROMPT,
|
|
37
|
+
maxTokens: 512,
|
|
38
|
+
temperature: 0.3,
|
|
39
|
+
});
|
|
40
40
|
}
|
|
41
41
|
try {
|
|
42
42
|
const parsed = JSON.parse(stripJsonFences(result.text));
|
|
43
|
+
const isDecorative = parsed.isDecorative === true;
|
|
44
|
+
const altText = normalizeGeneratedAltText(parsed.altText ?? '', isDecorative);
|
|
43
45
|
const rawConfidence = clampConfidence(parsed.confidence, canSeeImage ? 0.7 : 0.3);
|
|
46
|
+
const alternatives = isDecorative
|
|
47
|
+
? []
|
|
48
|
+
: (Array.isArray(parsed.alternatives) ? parsed.alternatives : [])
|
|
49
|
+
.map((a) => normalizeGeneratedAltText(String(a ?? ''), false))
|
|
50
|
+
.filter(Boolean)
|
|
51
|
+
.slice(0, 2);
|
|
44
52
|
return {
|
|
45
|
-
altText
|
|
46
|
-
isDecorative
|
|
47
|
-
confidence:
|
|
48
|
-
|
|
53
|
+
altText,
|
|
54
|
+
isDecorative,
|
|
55
|
+
confidence: isDecorative
|
|
56
|
+
? 1
|
|
57
|
+
: canSeeImage
|
|
58
|
+
? rawConfidence
|
|
59
|
+
: Math.min(rawConfidence, HEURISTIC_MAX_CONFIDENCE),
|
|
60
|
+
alternatives,
|
|
49
61
|
usedVision: canSeeImage,
|
|
50
62
|
};
|
|
51
63
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"alt-text-generator.js","sourceRoot":"","sources":["../../src/media/alt-text-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAyB5D,6EAA6E;AAC7E,MAAM,wBAAwB,GAAG,GAAG,CAAA;AAEpC;;kDAEkD;AAClD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,OAAwB;IAExB,IAAI,OAAO,EAAE,OAAO,KAAK,YAAY,EAAE,CAAC;QACtC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,CAAA;IAClG,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IACnD,MAAM,WAAW,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,EAAE,CAAC,YAAY,KAAK,UAAU,CAAA;IAE7E,MAAM,WAAW,GAAG;QAClB,OAAO,EAAE,SAAS,IAAI,eAAe,OAAO,CAAC,SAAS,EAAE;QACxD,OAAO,EAAE,eAAe,IAAI,gBAAgB,OAAO,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;QACnF,OAAO,EAAE,OAAO,IAAI,YAAY,OAAO,CAAC,OAAO,EAAE;KAClD;SACE,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,IAAI,CAAC,CAAA;IAEb,
|
|
1
|
+
{"version":3,"file":"alt-text-generator.js","sourceRoot":"","sources":["../../src/media/alt-text-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/** WCAG-aligned alt-text guidance shared by vision and heuristic paths. */
|
|
2
|
+
export declare const ALT_TEXT_SYSTEM_PROMPT = "You are an accessibility specialist writing alt text for web images (WCAG 2.1 / W3C best practices).\n\nRules:\n- Describe what matters for the image's purpose in context \u2014 not every visual detail.\n- Be concise: target \u2264125 characters; never exceed 125.\n- Do NOT start with \"image of\", \"photo of\", \"picture of\", or \"graphic of\" \u2014 screen readers already announce it as an image.\n- Do NOT include file names, dimensions, or SEO keyword stuffing.\n- Include visible text in the image when it is essential to understanding.\n- For people: describe relevant appearance only when needed for context; avoid speculative identity or sensitive traits.\n- If the image is purely decorative (borders, spacers, visual flourish with no informational value), set isDecorative true and altText to \"\".\n- For functional images (icons/buttons), describe the action or destination, not the pixel art.\n- When page context is provided, prefer alt text that fits the surrounding content.\n\nReturn valid JSON only.";
|
|
3
|
+
export declare const ALT_TEXT_JSON_SHAPE = "Return a JSON object with:\n- \"altText\": string (empty when decorative)\n- \"isDecorative\": boolean\n- \"alternatives\": array of exactly 2 alternative alt text options (empty strings when decorative)\n- \"confidence\": number 0-1";
|
|
4
|
+
/** Normalize model output to publishing-ready alt text. */
|
|
5
|
+
export declare function normalizeGeneratedAltText(raw: string, isDecorative: boolean): string;
|
|
6
|
+
//# sourceMappingURL=alt-text-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alt-text-prompt.d.ts","sourceRoot":"","sources":["../../src/media/alt-text-prompt.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,kgCAaX,CAAA;AAExB,eAAO,MAAM,mBAAmB,8OAIL,CAAA;AAE3B,2DAA2D;AAC3D,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,GAAG,MAAM,CAOpF"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** WCAG-aligned alt-text guidance shared by vision and heuristic paths. */
|
|
2
|
+
export const ALT_TEXT_SYSTEM_PROMPT = `You are an accessibility specialist writing alt text for web images (WCAG 2.1 / W3C best practices).
|
|
3
|
+
|
|
4
|
+
Rules:
|
|
5
|
+
- Describe what matters for the image's purpose in context — not every visual detail.
|
|
6
|
+
- Be concise: target ≤125 characters; never exceed 125.
|
|
7
|
+
- Do NOT start with "image of", "photo of", "picture of", or "graphic of" — screen readers already announce it as an image.
|
|
8
|
+
- Do NOT include file names, dimensions, or SEO keyword stuffing.
|
|
9
|
+
- Include visible text in the image when it is essential to understanding.
|
|
10
|
+
- For people: describe relevant appearance only when needed for context; avoid speculative identity or sensitive traits.
|
|
11
|
+
- If the image is purely decorative (borders, spacers, visual flourish with no informational value), set isDecorative true and altText to "".
|
|
12
|
+
- For functional images (icons/buttons), describe the action or destination, not the pixel art.
|
|
13
|
+
- When page context is provided, prefer alt text that fits the surrounding content.
|
|
14
|
+
|
|
15
|
+
Return valid JSON only.`;
|
|
16
|
+
export const ALT_TEXT_JSON_SHAPE = `Return a JSON object with:
|
|
17
|
+
- "altText": string (empty when decorative)
|
|
18
|
+
- "isDecorative": boolean
|
|
19
|
+
- "alternatives": array of exactly 2 alternative alt text options (empty strings when decorative)
|
|
20
|
+
- "confidence": number 0-1`;
|
|
21
|
+
/** Normalize model output to publishing-ready alt text. */
|
|
22
|
+
export function normalizeGeneratedAltText(raw, isDecorative) {
|
|
23
|
+
if (isDecorative)
|
|
24
|
+
return '';
|
|
25
|
+
let s = raw.trim();
|
|
26
|
+
s = s.replace(/^(an?\s+)?(image|photo|picture|graphic|screenshot)\s+of\s+/i, '');
|
|
27
|
+
s = s.replace(/\s+/g, ' ').trim();
|
|
28
|
+
if (s.length > 125)
|
|
29
|
+
s = `${s.slice(0, 122).trim()}…`;
|
|
30
|
+
return s;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=alt-text-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alt-text-prompt.js","sourceRoot":"","sources":["../../src/media/alt-text-prompt.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;wBAad,CAAA;AAExB,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;2BAIR,CAAA;AAE3B,2DAA2D;AAC3D,MAAM,UAAU,yBAAyB,CAAC,GAAW,EAAE,YAAqB;IAC1E,IAAI,YAAY;QAAE,OAAO,EAAE,CAAA;IAC3B,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAClB,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,6DAA6D,EAAE,EAAE,CAAC,CAAA;IAChF,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACjC,IAAI,CAAC,CAAC,MAAM,GAAG,GAAG;QAAE,CAAC,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAA;IACpD,OAAO,CAAC,CAAA;AACV,CAAC"}
|
|
@@ -8,6 +8,12 @@ export interface TitleOptions {
|
|
|
8
8
|
export declare function generateMetaDescription(content: string, maxLength?: number, provider?: AIProvider): Promise<string>;
|
|
9
9
|
/** Generates a concise excerpt from content. */
|
|
10
10
|
export declare function generateExcerpt(content: string, maxLength?: number, provider?: AIProvider): Promise<string>;
|
|
11
|
+
/**
|
|
12
|
+
* Generates a GEO "key takeaway" — a single self-contained 1-2 sentence summary
|
|
13
|
+
* that an AI answer engine can extract and cite verbatim. Unlike a meta
|
|
14
|
+
* description (written to earn a click), this is written to be quoted.
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateKeyTakeaway(content: string, maxLength?: number, provider?: AIProvider): Promise<string>;
|
|
11
17
|
/** Generates title options from content in the given style. */
|
|
12
18
|
export declare function generateTitle(content: string, options?: TitleOptions): Promise<string[]>;
|
|
13
19
|
//# sourceMappingURL=meta-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-generator.d.ts","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAOvD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAA;IACpD,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,+DAA+D;AAC/D,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,gDAAgD;AAChD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,+DAA+D;AAC/D,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB9F"}
|
|
1
|
+
{"version":3,"file":"meta-generator.d.ts","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAOvD,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,aAAa,GAAG,UAAU,GAAG,eAAe,CAAA;IACpD,QAAQ,CAAC,EAAE,UAAU,CAAA;CACtB;AAED,+DAA+D;AAC/D,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,gDAAgD;AAChD,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,MAAY,EACvB,QAAQ,CAAC,EAAE,UAAU,GACpB,OAAO,CAAC,MAAM,CAAC,CAgBjB;AAED,+DAA+D;AAC/D,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAuB9F"}
|
|
@@ -27,6 +27,23 @@ export async function generateExcerpt(content, maxLength = 300, provider) {
|
|
|
27
27
|
.trim()
|
|
28
28
|
.slice(0, maxLength);
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Generates a GEO "key takeaway" — a single self-contained 1-2 sentence summary
|
|
32
|
+
* that an AI answer engine can extract and cite verbatim. Unlike a meta
|
|
33
|
+
* description (written to earn a click), this is written to be quoted.
|
|
34
|
+
*/
|
|
35
|
+
export async function generateKeyTakeaway(content, maxLength = 240, provider) {
|
|
36
|
+
const ai = provider ?? requireAIProvider();
|
|
37
|
+
const result = await ai.generateText(`Write a single self-contained key takeaway (maximum ${maxLength} characters, 1-2 sentences) that directly states what the following content is about, so an AI assistant can quote it verbatim when answering a user. Be factual and specific — no marketing fluff.\n\n${fenceUntrusted(content.slice(0, 3000), 'CONTENT')}`, {
|
|
38
|
+
systemPrompt: `You are a generative-engine-optimization specialist. Write only the takeaway text, no quotes or labels. ${FENCE_NOTE}`,
|
|
39
|
+
maxTokens: 200,
|
|
40
|
+
temperature: 0.3,
|
|
41
|
+
});
|
|
42
|
+
return result.text
|
|
43
|
+
.replace(/^["']|["']$/g, '')
|
|
44
|
+
.trim()
|
|
45
|
+
.slice(0, maxLength);
|
|
46
|
+
}
|
|
30
47
|
/** Generates title options from content in the given style. */
|
|
31
48
|
export async function generateTitle(content, options) {
|
|
32
49
|
const ai = options?.provider ?? requireAIProvider();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-generator.js","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAE9D,MAAM,UAAU,GACd,4GAA4G,CAAA;AAQ9G,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,OAAe,EACf,YAAoB,GAAG,EACvB,QAAqB;IAErB,MAAM,EAAE,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IAE1C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,gDAAgD,SAAS,oKAAoK,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,EAChR;QACE,YAAY,EAAE,sIAAsI,UAAU,EAAE;QAChK,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAA;IAED,OAAO,MAAM,CAAC,IAAI;SACf,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AACxB,CAAC;AAED,gDAAgD;AAChD,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,YAAoB,GAAG,EACvB,QAAqB;IAErB,MAAM,EAAE,GAAG,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IAE1C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,oCAAoC,SAAS,yHAAyH,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,EACzN;QACE,YAAY,EAAE,wEAAwE,UAAU,EAAE;QAClG,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAA;IAED,OAAO,MAAM,CAAC,IAAI;SACf,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,IAAI,EAAE;SACN,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;AACxB,CAAC;AAED,+DAA+D;AAC/D,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,OAAsB;IACzE,MAAM,EAAE,GAAG,OAAO,EAAE,QAAQ,IAAI,iBAAiB,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,CAAC,CAAA;IACjC,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,IAAI,aAAa,CAAA;IAE7C,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,YAAY,CAClC,YAAY,KAAK,IAAI,KAAK,wFAAwF,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,EAAE,SAAS,CAAC,EAAE,EACrK;QACE,YAAY,EAAE,yGAAyG,UAAU,EAAE;QACnI,SAAS,EAAE,GAAG;QACd,WAAW,EAAE,GAAG;KACjB,CACF,CAAA;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;QACvD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAEV,OAAO,MAAM,CAAC,IAAI;SACf,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;SACxC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;AACpB,CAAC"}
|
|
1
|
+
{"version":3,"file":"meta-generator.js","sourceRoot":"","sources":["../../src/writing/meta-generator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/plugin-ai",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/actuatecms/actuatecms.git",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"@types/react": "^19.0.0",
|
|
28
28
|
"typescript": "^5.7.0",
|
|
29
29
|
"vitest": "^4.1.0",
|
|
30
|
-
"@actuate-media/cms-core": "0.
|
|
30
|
+
"@actuate-media/cms-core": "0.90.0"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
33
|
"@actuate-media/cms-core": ">=0.1.0",
|