@drowlink/aeo-linter-core 0.1.3 → 0.1.5
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 +8 -7
- package/dist/__tests__/assertions.test.d.ts +2 -0
- package/dist/__tests__/assertions.test.d.ts.map +1 -0
- package/dist/__tests__/assertions.test.js +89 -0
- package/dist/__tests__/assertions.test.js.map +1 -0
- package/dist/__tests__/audit-contract.test.js +32 -0
- package/dist/__tests__/audit-contract.test.js.map +1 -1
- package/dist/__tests__/author-eeat-presence.test.d.ts +2 -0
- package/dist/__tests__/author-eeat-presence.test.d.ts.map +1 -0
- package/dist/__tests__/author-eeat-presence.test.js +137 -0
- package/dist/__tests__/author-eeat-presence.test.js.map +1 -0
- package/dist/__tests__/fact-citation-density.test.d.ts +2 -0
- package/dist/__tests__/fact-citation-density.test.d.ts.map +1 -0
- package/dist/__tests__/fact-citation-density.test.js +100 -0
- package/dist/__tests__/fact-citation-density.test.js.map +1 -0
- package/dist/__tests__/llms-txt.test.d.ts +2 -0
- package/dist/__tests__/llms-txt.test.d.ts.map +1 -0
- package/dist/__tests__/llms-txt.test.js +108 -0
- package/dist/__tests__/llms-txt.test.js.map +1 -0
- package/dist/__tests__/runner.test.js +16 -3
- package/dist/__tests__/runner.test.js.map +1 -1
- package/dist/__tests__/table-list-scannability.test.d.ts +2 -0
- package/dist/__tests__/table-list-scannability.test.d.ts.map +1 -0
- package/dist/__tests__/table-list-scannability.test.js +97 -0
- package/dist/__tests__/table-list-scannability.test.js.map +1 -0
- package/dist/audits/ai-accessibility/ai-llms-txt.d.ts +10 -0
- package/dist/audits/ai-accessibility/ai-llms-txt.d.ts.map +1 -0
- package/dist/audits/ai-accessibility/ai-llms-txt.js +52 -0
- package/dist/audits/ai-accessibility/ai-llms-txt.js.map +1 -0
- package/dist/audits/content-chunking/table-list-scannability.d.ts +10 -0
- package/dist/audits/content-chunking/table-list-scannability.d.ts.map +1 -0
- package/dist/audits/content-chunking/table-list-scannability.js +79 -0
- package/dist/audits/content-chunking/table-list-scannability.js.map +1 -0
- package/dist/audits/direct-answer-density/fact-citation-density.d.ts +10 -0
- package/dist/audits/direct-answer-density/fact-citation-density.d.ts.map +1 -0
- package/dist/audits/direct-answer-density/fact-citation-density.js +73 -0
- package/dist/audits/direct-answer-density/fact-citation-density.js.map +1 -0
- package/dist/audits/index.d.ts +5 -1
- package/dist/audits/index.d.ts.map +1 -1
- package/dist/audits/index.js +9 -1
- package/dist/audits/index.js.map +1 -1
- package/dist/audits/structured-data/author-eeat-presence.d.ts +10 -0
- package/dist/audits/structured-data/author-eeat-presence.d.ts.map +1 -0
- package/dist/audits/structured-data/author-eeat-presence.js +87 -0
- package/dist/audits/structured-data/author-eeat-presence.js.map +1 -0
- package/dist/config/default-config.d.ts.map +1 -1
- package/dist/config/default-config.js +19 -11
- package/dist/config/default-config.js.map +1 -1
- package/dist/gather/gatherers/content-chunks-gatherer.d.ts.map +1 -1
- package/dist/gather/gatherers/content-chunks-gatherer.js +8 -0
- package/dist/gather/gatherers/content-chunks-gatherer.js.map +1 -1
- package/dist/gather/gatherers/direct-answers-gatherer.d.ts.map +1 -1
- package/dist/gather/gatherers/direct-answers-gatherer.js +31 -0
- package/dist/gather/gatherers/direct-answers-gatherer.js.map +1 -1
- package/dist/gather/gatherers/jsonld-gatherer.d.ts +1 -1
- package/dist/gather/gatherers/jsonld-gatherer.d.ts.map +1 -1
- package/dist/gather/gatherers/jsonld-gatherer.js +89 -6
- package/dist/gather/gatherers/jsonld-gatherer.js.map +1 -1
- package/dist/gather/gatherers/llms-txt-gatherer.d.ts +11 -0
- package/dist/gather/gatherers/llms-txt-gatherer.d.ts.map +1 -0
- package/dist/gather/gatherers/llms-txt-gatherer.js +123 -0
- package/dist/gather/gatherers/llms-txt-gatherer.js.map +1 -0
- package/dist/gather/index.d.ts +1 -0
- package/dist/gather/index.d.ts.map +1 -1
- package/dist/gather/index.js +1 -0
- package/dist/gather/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/runner/assertions.d.ts +25 -0
- package/dist/runner/assertions.d.ts.map +1 -0
- package/dist/runner/assertions.js +53 -0
- package/dist/runner/assertions.js.map +1 -0
- package/dist/runner/runner.d.ts.map +1 -1
- package/dist/runner/runner.js +5 -1
- package/dist/runner/runner.js.map +1 -1
- package/dist/types/artifacts.d.ts +64 -0
- package/dist/types/artifacts.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -13,39 +13,43 @@ export const defaultConfig = {
|
|
|
13
13
|
description: 'Verifies that AI agents and search crawlers (GPTBot, PerplexityBot, ClaudeBot, Google-Extended, etc.) have unrestricted crawling permissions via robots.txt and HTTP headers.',
|
|
14
14
|
weight: 25,
|
|
15
15
|
auditRefs: [
|
|
16
|
-
{ id: 'ai-robots-txt', weight:
|
|
17
|
-
{ id: 'ai-x-robots-tag', weight:
|
|
18
|
-
{ id: 'ai-bot-sitemap', weight:
|
|
16
|
+
{ id: 'ai-robots-txt', weight: 9, group: 'crawling' },
|
|
17
|
+
{ id: 'ai-x-robots-tag', weight: 7, group: 'crawling' },
|
|
18
|
+
{ id: 'ai-bot-sitemap', weight: 3, group: 'crawling' },
|
|
19
|
+
{ id: 'ai-llms-txt', weight: 6, group: 'crawling' },
|
|
19
20
|
],
|
|
20
21
|
},
|
|
21
22
|
'structured-data': {
|
|
22
23
|
title: 'Structured Data & RAG Schemas',
|
|
23
|
-
description: 'Audits JSON-LD schemas optimized for RAG (FAQPage, HowTo, Article, QAPage, sameAs) that enrich LLM knowledge graphs with structured entity data.',
|
|
24
|
+
description: 'Audits JSON-LD schemas optimized for RAG (FAQPage, HowTo, Article, QAPage, sameAs, Author E-E-A-T) that enrich LLM knowledge graphs with structured entity data.',
|
|
24
25
|
weight: 25,
|
|
25
26
|
auditRefs: [
|
|
26
|
-
{ id: 'jsonld-syntax-validity', weight:
|
|
27
|
+
{ id: 'jsonld-syntax-validity', weight: 7, group: 'schema' },
|
|
27
28
|
{ id: 'rag-schema-presence', weight: 8, group: 'schema' },
|
|
28
29
|
{ id: 'entity-sameas-links', weight: 4, group: 'knowledge-graph' },
|
|
30
|
+
{ id: 'author-eeat-presence', weight: 6, group: 'eeat' },
|
|
29
31
|
],
|
|
30
32
|
},
|
|
31
33
|
'content-chunking': {
|
|
32
34
|
title: 'Content Chunking & Semantic Structure',
|
|
33
|
-
description: 'Evaluates H1-H3 sequential hierarchy, semantic partitioning (<article>, <section>, <main>),
|
|
35
|
+
description: 'Evaluates H1-H3 sequential hierarchy, semantic partitioning (<article>, <section>, <main>), token density, and structured tables/lists for optimal RAG embedding extraction.',
|
|
34
36
|
weight: 25,
|
|
35
37
|
auditRefs: [
|
|
36
|
-
{ id: 'heading-hierarchy', weight:
|
|
38
|
+
{ id: 'heading-hierarchy', weight: 7, group: 'structure' },
|
|
37
39
|
{ id: 'semantic-containers', weight: 6, group: 'structure' },
|
|
38
40
|
{ id: 'chunk-token-density', weight: 6, group: 'embeddings' },
|
|
41
|
+
{ id: 'table-list-scannability', weight: 6, group: 'structure' },
|
|
39
42
|
],
|
|
40
43
|
},
|
|
41
44
|
'direct-answer-density': {
|
|
42
|
-
title: 'Direct Answer Density',
|
|
43
|
-
description: 'Detects concise
|
|
45
|
+
title: 'Direct Answer Density & Fact Grounding',
|
|
46
|
+
description: 'Detects concise direct answers, clear definitions, and verifiable facts/citations that optimize extraction for Answer Engines (Perplexity, SearchGPT, AI Overviews).',
|
|
44
47
|
weight: 25,
|
|
45
48
|
auditRefs: [
|
|
46
|
-
{ id: 'direct-definition-answering', weight:
|
|
49
|
+
{ id: 'direct-definition-answering', weight: 8, group: 'answers' },
|
|
47
50
|
{ id: 'concise-answer-wordcount', weight: 6, group: 'answers' },
|
|
48
|
-
{ id: 'question-heading-alignment', weight:
|
|
51
|
+
{ id: 'question-heading-alignment', weight: 5, group: 'answers' },
|
|
52
|
+
{ id: 'fact-citation-density', weight: 6, group: 'facts' },
|
|
49
53
|
],
|
|
50
54
|
},
|
|
51
55
|
},
|
|
@@ -54,18 +58,22 @@ export const defaultConfig = {
|
|
|
54
58
|
'ai-robots-txt',
|
|
55
59
|
'ai-x-robots-tag',
|
|
56
60
|
'ai-bot-sitemap',
|
|
61
|
+
'ai-llms-txt',
|
|
57
62
|
// Structured Data
|
|
58
63
|
'jsonld-syntax-validity',
|
|
59
64
|
'rag-schema-presence',
|
|
60
65
|
'entity-sameas-links',
|
|
66
|
+
'author-eeat-presence',
|
|
61
67
|
// Content Chunking
|
|
62
68
|
'heading-hierarchy',
|
|
63
69
|
'semantic-containers',
|
|
64
70
|
'chunk-token-density',
|
|
71
|
+
'table-list-scannability',
|
|
65
72
|
// Direct Answer Density
|
|
66
73
|
'direct-definition-answering',
|
|
67
74
|
'concise-answer-wordcount',
|
|
68
75
|
'question-heading-alignment',
|
|
76
|
+
'fact-citation-density',
|
|
69
77
|
],
|
|
70
78
|
};
|
|
71
79
|
//# sourceMappingURL=default-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../src/config/default-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO;QACf,iBAAiB,EAAE,KAAK;KACzB;IACD,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,KAAK,EAAE,6BAA6B;YACpC,WAAW,EACT,+KAA+K;YACjL,MAAM,EAAE,EAAE;YACV,SAAS,EAAE;gBACT,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"default-config.js","sourceRoot":"","sources":["../../src/config/default-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,CAAC,MAAM,aAAa,GAAiB;IACzC,QAAQ,EAAE;QACR,MAAM,EAAE,OAAO;QACf,iBAAiB,EAAE,KAAK;KACzB;IACD,UAAU,EAAE;QACV,kBAAkB,EAAE;YAClB,KAAK,EAAE,6BAA6B;YACpC,WAAW,EACT,+KAA+K;YACjL,MAAM,EAAE,EAAE;YACV,SAAS,EAAE;gBACT,EAAE,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;gBACrD,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;gBACvD,EAAE,EAAE,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;gBACtD,EAAE,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE;aACpD;SACF;QACD,iBAAiB,EAAE;YACjB,KAAK,EAAE,+BAA+B;YACtC,WAAW,EACT,kKAAkK;YACpK,MAAM,EAAE,EAAE;YACV,SAAS,EAAE;gBACT,EAAE,EAAE,EAAE,wBAAwB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;gBAC5D,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;gBACzD,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE;gBAClE,EAAE,EAAE,EAAE,sBAAsB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE;aACzD;SACF;QACD,kBAAkB,EAAE;YAClB,KAAK,EAAE,uCAAuC;YAC9C,WAAW,EACT,8KAA8K;YAChL,MAAM,EAAE,EAAE;YACV,SAAS,EAAE;gBACT,EAAE,EAAE,EAAE,mBAAmB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;gBAC1D,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;gBAC5D,EAAE,EAAE,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC7D,EAAE,EAAE,EAAE,yBAAyB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE;aACjE;SACF;QACD,uBAAuB,EAAE;YACvB,KAAK,EAAE,wCAAwC;YAC/C,WAAW,EACT,sKAAsK;YACxK,MAAM,EAAE,EAAE;YACV,SAAS,EAAE;gBACT,EAAE,EAAE,EAAE,6BAA6B,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;gBAClE,EAAE,EAAE,EAAE,0BAA0B,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;gBAC/D,EAAE,EAAE,EAAE,4BAA4B,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE;gBACjE,EAAE,EAAE,EAAE,uBAAuB,EAAE,MAAM,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE;aAC3D;SACF;KACF;IACD,MAAM,EAAE;QACN,mBAAmB;QACnB,eAAe;QACf,iBAAiB;QACjB,gBAAgB;QAChB,aAAa;QACb,kBAAkB;QAClB,wBAAwB;QACxB,qBAAqB;QACrB,qBAAqB;QACrB,sBAAsB;QACtB,mBAAmB;QACnB,mBAAmB;QACnB,qBAAqB;QACrB,qBAAqB;QACrB,yBAAyB;QACzB,wBAAwB;QACxB,6BAA6B;QAC7B,0BAA0B;QAC1B,4BAA4B;QAC5B,uBAAuB;KACxB;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-chunks-gatherer.d.ts","sourceRoot":"","sources":["../../../src/gather/gatherers/content-chunks-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAgB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEjG,qBAAa,qBAAsB,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAClE,SAAyB,IAAI,EAAG,eAAe,CAAU;IAEnC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"content-chunks-gatherer.d.ts","sourceRoot":"","sources":["../../../src/gather/gatherers/content-chunks-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAgB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEjG,qBAAa,qBAAsB,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAClE,SAAyB,IAAI,EAAG,eAAe,CAAU;IAEnC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;CA0G5F"}
|
|
@@ -83,6 +83,10 @@ export class ContentChunksGatherer extends Gatherer {
|
|
|
83
83
|
const totalWordCount = chunks.reduce((sum, c) => sum + c.wordCount, 0);
|
|
84
84
|
const totalEstimatedTokens = chunks.reduce((sum, c) => sum + c.estimatedTokens, 0);
|
|
85
85
|
const averageChunkTokenCount = chunks.length > 0 ? Math.round(totalEstimatedTokens / chunks.length) : 0;
|
|
86
|
+
const totalTablesCount = $('table').length;
|
|
87
|
+
const structuredTablesCount = $('table').filter((_, el) => $(el).find('thead, th').length > 0).length;
|
|
88
|
+
const totalListsCount = $('ul, ol').length;
|
|
89
|
+
const totalListItemsCount = $('li').length;
|
|
86
90
|
return {
|
|
87
91
|
chunks,
|
|
88
92
|
totalWordCount,
|
|
@@ -92,6 +96,10 @@ export class ContentChunksGatherer extends Gatherer {
|
|
|
92
96
|
hasSemanticMain: $('main').length > 0,
|
|
93
97
|
hasSemanticArticle: $('article').length > 0,
|
|
94
98
|
hasSemanticSections: $('section').length > 0,
|
|
99
|
+
totalTablesCount,
|
|
100
|
+
totalListsCount,
|
|
101
|
+
totalListItemsCount,
|
|
102
|
+
structuredTablesCount,
|
|
95
103
|
};
|
|
96
104
|
}
|
|
97
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content-chunks-gatherer.js","sourceRoot":"","sources":["../../../src/gather/gatherers/content-chunks-gatherer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"content-chunks-gatherer.js","sourceRoot":"","sources":["../../../src/gather/gatherers/content-chunks-gatherer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-answers-gatherer.d.ts","sourceRoot":"","sources":["../../../src/gather/gatherers/direct-answers-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAoB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAErG,qBAAa,qBAAsB,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAClE,SAAyB,IAAI,EAAG,eAAe,CAAU;IAEnC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"direct-answers-gatherer.d.ts","sourceRoot":"","sources":["../../../src/gather/gatherers/direct-answers-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,qBAAqB,EAAoB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAErG,qBAAa,qBAAsB,SAAQ,QAAQ,CAAC,eAAe,CAAC;IAClE,SAAyB,IAAI,EAAG,eAAe,CAAU;IAEnC,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,qBAAqB,CAAC;CAyF5F"}
|
|
@@ -46,11 +46,42 @@ export class DirectAnswersGatherer extends Gatherer {
|
|
|
46
46
|
});
|
|
47
47
|
const conciseAnswersCount = pairs.filter((p) => p.isConcise).length;
|
|
48
48
|
const directAnswerRatio = pairs.length > 0 ? conciseAnswersCount / pairs.length : 0;
|
|
49
|
+
// Fact, Citation, and Numerical Metrics Extraction for GEO
|
|
50
|
+
$('script, style, noscript, svg, nav, footer, header').remove();
|
|
51
|
+
const mainText = $('main, article, section, body').text().replace(/\s+/g, ' ');
|
|
52
|
+
const percentageMatches = mainText.match(/\b\d+(?:\.\d+)?\s*(?:%|percent\b|por ciento\b)/gi) || [];
|
|
53
|
+
const numericalMatches = mainText.match(/(?:[\$€£¥]\s*\d+(?:\.\d+)?|\b\d+(?:\.\d+)?\s*(?:ms|kb|mb|gb|tb|km|kg|k|m|million|billion|millones|tokens|users|usuarios|fps)\b)/gi) || [];
|
|
54
|
+
const citationMatches = mainText.match(/\b(?:according to|study by|research by|survey by|reported by|published by|data shows|data from|source:|según|estudio de|investigación de|fuente:|datos de|informe de)\b/gi) || [];
|
|
55
|
+
const externalSourcesUrls = [];
|
|
56
|
+
let currentHost = '';
|
|
57
|
+
try {
|
|
58
|
+
const finalUrl = await context.driver.getUrl();
|
|
59
|
+
currentHost = new URL(finalUrl).hostname;
|
|
60
|
+
}
|
|
61
|
+
catch { }
|
|
62
|
+
$('a[href^="http"]').each((_, a) => {
|
|
63
|
+
const href = $(a).attr('href') || '';
|
|
64
|
+
try {
|
|
65
|
+
const linkUrl = new URL(href);
|
|
66
|
+
if (linkUrl.hostname && linkUrl.hostname !== currentHost && !externalSourcesUrls.includes(linkUrl.origin)) {
|
|
67
|
+
externalSourcesUrls.push(linkUrl.origin);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch { }
|
|
71
|
+
});
|
|
49
72
|
return {
|
|
50
73
|
pairs,
|
|
51
74
|
directAnswerRatio,
|
|
52
75
|
conciseAnswersCount,
|
|
53
76
|
definitionPatternsFound,
|
|
77
|
+
facts: {
|
|
78
|
+
percentagesCount: percentageMatches.length,
|
|
79
|
+
numericalMetricsCount: numericalMatches.length,
|
|
80
|
+
citationPhrasesCount: citationMatches.length,
|
|
81
|
+
externalSourcesCount: externalSourcesUrls.length,
|
|
82
|
+
externalSourcesUrls,
|
|
83
|
+
totalFactSignals: percentageMatches.length + numericalMatches.length + citationMatches.length + externalSourcesUrls.length,
|
|
84
|
+
},
|
|
54
85
|
};
|
|
55
86
|
}
|
|
56
87
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"direct-answers-gatherer.js","sourceRoot":"","sources":["../../../src/gather/gatherers/direct-answers-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,qBAAsB,SAAQ,QAAyB;IACzC,IAAI,GAAG,eAAwB,CAAC;IAEzC,KAAK,CAAC,WAAW,CAAC,OAAwB;QACxD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAuB,EAAE,CAAC;QACrC,IAAI,uBAAuB,GAAG,CAAC,CAAC;QAEhC,MAAM,kBAAkB,GAAG,wHAAwH,CAAC;QACpJ,MAAM,eAAe,GAAG,6JAA6J,CAAC;QAEtL,CAAC,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACjC,MAAM,WAAW,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,UAAU,GAAG,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAErF,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,KAAK,EAAE,CAAC;gBACpD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxB,MAAM,UAAU,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBACtD,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;oBAErC,8EAA8E;oBAC9E,MAAM,SAAS,GAAG,eAAe,IAAI,EAAE,IAAI,eAAe,IAAI,EAAE,CAAC;oBACjE,MAAM,mBAAmB,GAAG,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBAE3E,IAAI,mBAAmB,EAAE,CAAC;wBACxB,uBAAuB,EAAE,CAAC;oBAC5B,CAAC;oBAED,IAAI,UAAU,GAAG,GAAG,CAAC;oBACrB,IAAI,SAAS;wBAAE,UAAU,IAAI,GAAG,CAAC;oBACjC,IAAI,mBAAmB;wBAAE,UAAU,IAAI,GAAG,CAAC;oBAE3C,KAAK,CAAC,IAAI,CAAC;wBACT,QAAQ,EAAE,WAAW;wBACrB,cAAc,EAAE,SAAS;wBACzB,UAAU;wBACV,eAAe;wBACf,SAAS;wBACT,mBAAmB;wBACnB,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,CAAC;qBAC3C,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC;QACpE,MAAM,iBAAiB,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,mBAAmB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpF,OAAO;YACL,KAAK;YACL,iBAAiB;YACjB,mBAAmB;YACnB,uBAAuB;
|
|
1
|
+
{"version":3,"file":"direct-answers-gatherer.js","sourceRoot":"","sources":["../../../src/gather/gatherers/direct-answers-gatherer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview JSONLDGatherer para extraer y estructurar schemas JSON-LD del DOM.
|
|
2
|
+
* @fileoverview JSONLDGatherer para extraer y estructurar schemas JSON-LD del DOM y señales E-E-A-T.
|
|
3
3
|
*/
|
|
4
4
|
import { Gatherer } from '../gatherer.js';
|
|
5
5
|
import type { JSONLDArtifact, GathererContext } from '../../types/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonld-gatherer.d.ts","sourceRoot":"","sources":["../../../src/gather/gatherers/jsonld-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"jsonld-gatherer.d.ts","sourceRoot":"","sources":["../../../src/gather/gatherers/jsonld-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAA8B,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAExG,qBAAa,cAAe,SAAQ,QAAQ,CAAC,QAAQ,CAAC;IACpD,SAAyB,IAAI,EAAG,QAAQ,CAAU;IAE5B,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAyFpF,OAAO,CAAC,iBAAiB;CAgH1B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview JSONLDGatherer para extraer y estructurar schemas JSON-LD del DOM.
|
|
2
|
+
* @fileoverview JSONLDGatherer para extraer y estructurar schemas JSON-LD del DOM y señales E-E-A-T.
|
|
3
3
|
*/
|
|
4
4
|
import * as cheerio from 'cheerio';
|
|
5
5
|
import { Gatherer } from '../gatherer.js';
|
|
@@ -11,6 +11,16 @@ export class JSONLDGatherer extends Gatherer {
|
|
|
11
11
|
const items = [];
|
|
12
12
|
const schemasCountByType = {};
|
|
13
13
|
const sameAsUrls = [];
|
|
14
|
+
const authorEeat = {
|
|
15
|
+
hasAuthorSchema: false,
|
|
16
|
+
authorSameAsUrls: [],
|
|
17
|
+
hasJobTitle: false,
|
|
18
|
+
hasPublisherSchema: false,
|
|
19
|
+
hasDatePublished: false,
|
|
20
|
+
hasDateModified: false,
|
|
21
|
+
hasDomAuthorByline: false,
|
|
22
|
+
hasDomPublishedDate: false,
|
|
23
|
+
};
|
|
14
24
|
const scriptTags = $('script[type="application/ld+json"]');
|
|
15
25
|
scriptTags.each((_, el) => {
|
|
16
26
|
const raw = $(el).text().trim();
|
|
@@ -28,7 +38,7 @@ export class JSONLDGatherer extends Gatherer {
|
|
|
28
38
|
if (typeof parsed === 'object' && parsed !== null) {
|
|
29
39
|
item.context = parsed['@context'] ? String(parsed['@context']) : null;
|
|
30
40
|
item.type = parsed['@type'] ?? null;
|
|
31
|
-
this.inspectSchemaNode(parsed, schemasCountByType, sameAsUrls);
|
|
41
|
+
this.inspectSchemaNode(parsed, schemasCountByType, sameAsUrls, authorEeat);
|
|
32
42
|
}
|
|
33
43
|
items.push(item);
|
|
34
44
|
}
|
|
@@ -43,6 +53,19 @@ export class JSONLDGatherer extends Gatherer {
|
|
|
43
53
|
});
|
|
44
54
|
}
|
|
45
55
|
});
|
|
56
|
+
// Check DOM byline & dates for visible E-E-A-T
|
|
57
|
+
const domByline = $('[rel="author"], [itemprop="author"], .author, .byline, [class*="author-name"], [class*="post-author"]').first();
|
|
58
|
+
if (domByline.length > 0) {
|
|
59
|
+
const text = domByline.text().trim().replace(/\s+/g, ' ');
|
|
60
|
+
if (text.length > 0 && text.length < 100) {
|
|
61
|
+
authorEeat.hasDomAuthorByline = true;
|
|
62
|
+
authorEeat.domAuthorText = text;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const domTime = $('time[datetime], [itemprop="datePublished"], [class*="publish-date"], [class*="post-date"]').first();
|
|
66
|
+
if (domTime.length > 0) {
|
|
67
|
+
authorEeat.hasDomPublishedDate = true;
|
|
68
|
+
}
|
|
46
69
|
const hasType = (typeName) => {
|
|
47
70
|
const count = schemasCountByType[typeName.toLowerCase()] || 0;
|
|
48
71
|
return count > 0;
|
|
@@ -58,13 +81,14 @@ export class JSONLDGatherer extends Gatherer {
|
|
|
58
81
|
hasProduct: hasType('product'),
|
|
59
82
|
hasSameAs: sameAsUrls.length > 0,
|
|
60
83
|
sameAsUrls,
|
|
84
|
+
authorEeat,
|
|
61
85
|
};
|
|
62
86
|
}
|
|
63
|
-
inspectSchemaNode(node, typeCounts, sameAsUrls) {
|
|
87
|
+
inspectSchemaNode(node, typeCounts, sameAsUrls, authorEeat) {
|
|
64
88
|
if (Array.isArray(node)) {
|
|
65
89
|
for (const item of node) {
|
|
66
90
|
if (typeof item === 'object' && item !== null) {
|
|
67
|
-
this.inspectSchemaNode(item, typeCounts, sameAsUrls);
|
|
91
|
+
this.inspectSchemaNode(item, typeCounts, sameAsUrls, authorEeat);
|
|
68
92
|
}
|
|
69
93
|
}
|
|
70
94
|
return;
|
|
@@ -72,7 +96,7 @@ export class JSONLDGatherer extends Gatherer {
|
|
|
72
96
|
if (node['@graph'] && Array.isArray(node['@graph'])) {
|
|
73
97
|
for (const item of node['@graph']) {
|
|
74
98
|
if (typeof item === 'object' && item !== null) {
|
|
75
|
-
this.inspectSchemaNode(item, typeCounts, sameAsUrls);
|
|
99
|
+
this.inspectSchemaNode(item, typeCounts, sameAsUrls, authorEeat);
|
|
76
100
|
}
|
|
77
101
|
}
|
|
78
102
|
}
|
|
@@ -80,14 +104,73 @@ export class JSONLDGatherer extends Gatherer {
|
|
|
80
104
|
if (typeof type === 'string') {
|
|
81
105
|
const t = type.toLowerCase();
|
|
82
106
|
typeCounts[t] = (typeCounts[t] || 0) + 1;
|
|
107
|
+
if (t === 'person') {
|
|
108
|
+
authorEeat.hasAuthorSchema = true;
|
|
109
|
+
authorEeat.authorType = 'Person';
|
|
110
|
+
if (node['name'] && typeof node['name'] === 'string') {
|
|
111
|
+
authorEeat.authorName = node['name'];
|
|
112
|
+
}
|
|
113
|
+
}
|
|
83
114
|
}
|
|
84
115
|
else if (Array.isArray(type)) {
|
|
85
116
|
for (const t of type) {
|
|
86
117
|
if (typeof t === 'string') {
|
|
87
118
|
const lower = t.toLowerCase();
|
|
88
119
|
typeCounts[lower] = (typeCounts[lower] || 0) + 1;
|
|
120
|
+
if (lower === 'person') {
|
|
121
|
+
authorEeat.hasAuthorSchema = true;
|
|
122
|
+
authorEeat.authorType = 'Person';
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
// Inspect author property inside Article/BlogPosting
|
|
128
|
+
if (node['author']) {
|
|
129
|
+
authorEeat.hasAuthorSchema = true;
|
|
130
|
+
const authorNode = node['author'];
|
|
131
|
+
if (typeof authorNode === 'object' && authorNode !== null && !Array.isArray(authorNode)) {
|
|
132
|
+
const aObj = authorNode;
|
|
133
|
+
if (aObj['name'] && typeof aObj['name'] === 'string') {
|
|
134
|
+
authorEeat.authorName = aObj['name'];
|
|
135
|
+
}
|
|
136
|
+
if (aObj['@type'] && typeof aObj['@type'] === 'string') {
|
|
137
|
+
authorEeat.authorType = aObj['@type'];
|
|
138
|
+
}
|
|
139
|
+
if (aObj['jobTitle'] && typeof aObj['jobTitle'] === 'string') {
|
|
140
|
+
authorEeat.hasJobTitle = true;
|
|
141
|
+
authorEeat.jobTitle = aObj['jobTitle'];
|
|
142
|
+
}
|
|
143
|
+
if (aObj['sameAs']) {
|
|
144
|
+
const s = aObj['sameAs'];
|
|
145
|
+
if (typeof s === 'string')
|
|
146
|
+
authorEeat.authorSameAsUrls.push(s);
|
|
147
|
+
else if (Array.isArray(s))
|
|
148
|
+
authorEeat.authorSameAsUrls.push(...s.filter((x) => typeof x === 'string'));
|
|
89
149
|
}
|
|
90
150
|
}
|
|
151
|
+
else if (typeof authorNode === 'string') {
|
|
152
|
+
authorEeat.authorName = authorNode;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
// Inspect publisher property
|
|
156
|
+
if (node['publisher']) {
|
|
157
|
+
authorEeat.hasPublisherSchema = true;
|
|
158
|
+
const pubNode = node['publisher'];
|
|
159
|
+
if (typeof pubNode === 'object' && pubNode !== null) {
|
|
160
|
+
const pObj = pubNode;
|
|
161
|
+
if (pObj['name'] && typeof pObj['name'] === 'string') {
|
|
162
|
+
authorEeat.publisherName = pObj['name'];
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
// Dates
|
|
167
|
+
if (node['datePublished'] && typeof node['datePublished'] === 'string') {
|
|
168
|
+
authorEeat.hasDatePublished = true;
|
|
169
|
+
authorEeat.datePublished = node['datePublished'];
|
|
170
|
+
}
|
|
171
|
+
if (node['dateModified'] && typeof node['dateModified'] === 'string') {
|
|
172
|
+
authorEeat.hasDateModified = true;
|
|
173
|
+
authorEeat.dateModified = node['dateModified'];
|
|
91
174
|
}
|
|
92
175
|
const sameAs = node['sameAs'];
|
|
93
176
|
if (typeof sameAs === 'string' && sameAs.trim()) {
|
|
@@ -102,7 +185,7 @@ export class JSONLDGatherer extends Gatherer {
|
|
|
102
185
|
}
|
|
103
186
|
for (const key of Object.keys(node)) {
|
|
104
187
|
if (key !== '@graph' && typeof node[key] === 'object' && node[key] !== null) {
|
|
105
|
-
this.inspectSchemaNode(node[key], typeCounts, sameAsUrls);
|
|
188
|
+
this.inspectSchemaNode(node[key], typeCounts, sameAsUrls, authorEeat);
|
|
106
189
|
}
|
|
107
190
|
}
|
|
108
191
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonld-gatherer.js","sourceRoot":"","sources":["../../../src/gather/gatherers/jsonld-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,MAAM,OAAO,cAAe,SAAQ,QAAkB;IAC3B,IAAI,GAAG,QAAiB,CAAC;IAElC,KAAK,CAAC,WAAW,CAAC,OAAwB;QACxD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE7B,MAAM,KAAK,GAAiB,EAAE,CAAC;QAC/B,MAAM,kBAAkB,GAA2B,EAAE,CAAC;QACtD,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,MAAM,UAAU,GAAG,CAAC,CAAC,oCAAoC,CAAC,CAAC;QAE3D,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACxB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,CAAC,GAAG;gBAAE,OAAO;YAEjB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC/B,MAAM,IAAI,GAAe;oBACvB,GAAG;oBACH,MAAM;oBACN,IAAI,EAAE,IAAI;oBACV,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,IAAI;iBACd,CAAC;gBAEF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;oBAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBACtE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC;oBACpC,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,UAAU,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"jsonld-gatherer.js","sourceRoot":"","sources":["../../../src/gather/gatherers/jsonld-gatherer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LlmsTxtGatherer to check and parse /llms.txt and /llms-full.txt standard files.
|
|
3
|
+
*/
|
|
4
|
+
import { Gatherer } from '../gatherer.js';
|
|
5
|
+
import type { LlmsTxtArtifact, GathererContext } from '../../types/index.js';
|
|
6
|
+
export declare class LlmsTxtGatherer extends Gatherer<'LlmsTxt'> {
|
|
7
|
+
readonly name: "LlmsTxt";
|
|
8
|
+
getArtifact(context: GathererContext): Promise<LlmsTxtArtifact>;
|
|
9
|
+
private parseLlmsTxt;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=llms-txt-gatherer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llms-txt-gatherer.d.ts","sourceRoot":"","sources":["../../../src/gather/gatherers/llms-txt-gatherer.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,KAAK,EAAE,eAAe,EAAkB,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAE7F,qBAAa,eAAgB,SAAQ,QAAQ,CAAC,SAAS,CAAC;IACtD,SAAyB,IAAI,EAAG,SAAS,CAAU;IAE7B,WAAW,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC;IA4DrF,OAAO,CAAC,YAAY;CAyErB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview LlmsTxtGatherer to check and parse /llms.txt and /llms-full.txt standard files.
|
|
3
|
+
*/
|
|
4
|
+
import { Gatherer } from '../gatherer.js';
|
|
5
|
+
export class LlmsTxtGatherer extends Gatherer {
|
|
6
|
+
name = 'LlmsTxt';
|
|
7
|
+
async getArtifact(context) {
|
|
8
|
+
const finalUrl = await context.driver.getUrl();
|
|
9
|
+
const urlObj = new URL(finalUrl);
|
|
10
|
+
const llmsUrl = `${urlObj.origin}/llms.txt`;
|
|
11
|
+
const llmsFullUrl = `${urlObj.origin}/llms-full.txt`;
|
|
12
|
+
let rawContent = null;
|
|
13
|
+
let statusCode = null;
|
|
14
|
+
let exists = false;
|
|
15
|
+
let hasFullVersion = false;
|
|
16
|
+
let fullStatusCode = null;
|
|
17
|
+
// 1. Fetch /llms.txt
|
|
18
|
+
try {
|
|
19
|
+
const response = await context.driver.fetch(llmsUrl);
|
|
20
|
+
statusCode = response.status;
|
|
21
|
+
if (response.ok) {
|
|
22
|
+
const text = await response.text();
|
|
23
|
+
// Check it is not an HTML 404/SPA fallback
|
|
24
|
+
const trimmed = text.trim().toLowerCase();
|
|
25
|
+
if (!trimmed.startsWith('<!doctype html') && !trimmed.startsWith('<html') && !trimmed.includes('<head>')) {
|
|
26
|
+
rawContent = text;
|
|
27
|
+
exists = true;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
exists = false;
|
|
33
|
+
}
|
|
34
|
+
// 2. Fetch /llms-full.txt (only if origin permits, check existence)
|
|
35
|
+
try {
|
|
36
|
+
const responseFull = await context.driver.fetch(llmsFullUrl);
|
|
37
|
+
fullStatusCode = responseFull.status;
|
|
38
|
+
if (responseFull.ok) {
|
|
39
|
+
const textFull = await responseFull.text();
|
|
40
|
+
const trimmed = textFull.trim().toLowerCase();
|
|
41
|
+
if (!trimmed.startsWith('<!doctype html') && !trimmed.startsWith('<html')) {
|
|
42
|
+
hasFullVersion = true;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
hasFullVersion = false;
|
|
48
|
+
}
|
|
49
|
+
const { title, summary, sections, totalDeclaredLinks } = this.parseLlmsTxt(rawContent || '');
|
|
50
|
+
return {
|
|
51
|
+
exists,
|
|
52
|
+
statusCode,
|
|
53
|
+
rawContent,
|
|
54
|
+
charCount: rawContent ? rawContent.length : 0,
|
|
55
|
+
hasFullVersion,
|
|
56
|
+
fullStatusCode,
|
|
57
|
+
title,
|
|
58
|
+
summary,
|
|
59
|
+
sections,
|
|
60
|
+
totalDeclaredLinks,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
parseLlmsTxt(content) {
|
|
64
|
+
if (!content) {
|
|
65
|
+
return { sections: [], totalDeclaredLinks: 0 };
|
|
66
|
+
}
|
|
67
|
+
let title;
|
|
68
|
+
let summary;
|
|
69
|
+
const sections = [];
|
|
70
|
+
let currentSection = { title: 'Main', links: [] };
|
|
71
|
+
let totalDeclaredLinks = 0;
|
|
72
|
+
const lines = content.split(/\r?\n/);
|
|
73
|
+
for (const rawLine of lines) {
|
|
74
|
+
const line = rawLine.trim();
|
|
75
|
+
if (!line)
|
|
76
|
+
continue;
|
|
77
|
+
// Extract H1 title (# Title)
|
|
78
|
+
if (line.startsWith('# ') && !title) {
|
|
79
|
+
title = line.replace(/^#\s+/, '').trim();
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
// Extract blockquote summary (> Summary)
|
|
83
|
+
if (line.startsWith('>') && !summary) {
|
|
84
|
+
summary = line.replace(/^>\s*/, '').trim();
|
|
85
|
+
continue;
|
|
86
|
+
}
|
|
87
|
+
// Extract H2 section (## Section)
|
|
88
|
+
if (line.startsWith('## ')) {
|
|
89
|
+
if (currentSection.links.length > 0 || currentSection.title !== 'Main') {
|
|
90
|
+
sections.push(currentSection);
|
|
91
|
+
}
|
|
92
|
+
currentSection = {
|
|
93
|
+
title: line.replace(/^##\s+/, '').trim(),
|
|
94
|
+
links: [],
|
|
95
|
+
};
|
|
96
|
+
continue;
|
|
97
|
+
}
|
|
98
|
+
// Extract Markdown links: - [Title](URL): Optional description
|
|
99
|
+
const linkMatch = line.match(/^[-*]\s+\[([^\]]+)\]\(([^)]+)\)(?::?\s*(.*))?$/);
|
|
100
|
+
if (linkMatch) {
|
|
101
|
+
const linkTitle = linkMatch[1]?.trim() || '';
|
|
102
|
+
const linkUrl = linkMatch[2]?.trim() || '';
|
|
103
|
+
const linkDesc = linkMatch[3]?.trim() || undefined;
|
|
104
|
+
currentSection.links.push({
|
|
105
|
+
title: linkTitle,
|
|
106
|
+
url: linkUrl,
|
|
107
|
+
description: linkDesc,
|
|
108
|
+
});
|
|
109
|
+
totalDeclaredLinks++;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (currentSection.links.length > 0 || currentSection.title !== 'Main') {
|
|
113
|
+
sections.push(currentSection);
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
title,
|
|
117
|
+
summary,
|
|
118
|
+
sections,
|
|
119
|
+
totalDeclaredLinks,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=llms-txt-gatherer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llms-txt-gatherer.js","sourceRoot":"","sources":["../../../src/gather/gatherers/llms-txt-gatherer.ts"],"names":[],"mappings":"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"}
|
package/dist/gather/index.d.ts
CHANGED
|
@@ -11,4 +11,5 @@ export * from './gatherers/meta-tags-gatherer.js';
|
|
|
11
11
|
export * from './gatherers/headings-hierarchy-gatherer.js';
|
|
12
12
|
export * from './gatherers/content-chunks-gatherer.js';
|
|
13
13
|
export * from './gatherers/direct-answers-gatherer.js';
|
|
14
|
+
export * from './gatherers/llms-txt-gatherer.js';
|
|
14
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gather/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/gather/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC"}
|
package/dist/gather/index.js
CHANGED
|
@@ -11,4 +11,5 @@ export * from './gatherers/meta-tags-gatherer.js';
|
|
|
11
11
|
export * from './gatherers/headings-hierarchy-gatherer.js';
|
|
12
12
|
export * from './gatherers/content-chunks-gatherer.js';
|
|
13
13
|
export * from './gatherers/direct-answers-gatherer.js';
|
|
14
|
+
export * from './gatherers/llms-txt-gatherer.js';
|
|
14
15
|
//# sourceMappingURL=index.js.map
|
package/dist/gather/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gather/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/gather/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,4BAA4B,CAAC;AAC3C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oCAAoC,CAAC;AACnD,cAAc,sCAAsC,CAAC;AACrD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,wCAAwC,CAAC;AACvD,cAAc,wCAAwC,CAAC;AACvD,cAAc,kCAAkC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export * from './audits/index.js';
|
|
|
6
6
|
export * from './gather/index.js';
|
|
7
7
|
export * from './config/default-config.js';
|
|
8
8
|
export * from './runner/aggregator.js';
|
|
9
|
+
export * from './runner/assertions.js';
|
|
9
10
|
export * from './runner/runner.js';
|
|
10
11
|
export * from './report/index.js';
|
|
11
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -6,6 +6,7 @@ export * from './audits/index.js';
|
|
|
6
6
|
export * from './gather/index.js';
|
|
7
7
|
export * from './config/default-config.js';
|
|
8
8
|
export * from './runner/aggregator.js';
|
|
9
|
+
export * from './runner/assertions.js';
|
|
9
10
|
export * from './runner/runner.js';
|
|
10
11
|
export * from './report/index.js';
|
|
11
12
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC"}
|