-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcomponentsData.mjs
More file actions
272 lines (272 loc) · 10.6 KB
/
Copy pathcomponentsData.mjs
File metadata and controls
272 lines (272 loc) · 10.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
export default {
inspectorTabs: {
overview: 'Overview',
pageAnalysis: 'Page analysis',
seoSocial: 'SEO & Social',
content: 'Content',
technical: 'Technical',
issues: 'Issues',
brokenMessage: 'Broken / error response ({status})',
redirectMessage: 'Redirect {status}',
},
copyBtn: {
copy: 'Copy',
copied: 'Copied!',
title: 'Copy to clipboard',
},
similarPages: {
title: 'Similar pages (TF-IDF)',
sectionTitle: 'Browser similarity',
loadingModel: 'Loading model…',
findSimilar: 'Find similar pages',
errNotEnoughText: 'Not enough text on this page to embed (add title/H1/description).',
errNoEmbedding: 'Could not compute embedding for this page.',
sqlBadge: 'sql',
},
linkTabs: {
overview: {
statStatus: 'Status',
statResponseTime: 'Response Time',
statDepth: 'Depth',
statInlinks: 'Inlinks',
statOutlinks: 'Outlinks',
statWords: 'Words',
statReadingLevel: 'Reading Level',
statRedirects: 'Redirects',
readingGrade: 'Grade {n}',
contentType: 'Content-Type',
fieldTitle: 'Title',
fieldMetaDesc: 'Meta Description',
fieldH1: 'H1',
missing: 'Missing',
h1Count: '{n} H1{s}',
},
seoSocial: {
canonicalUrl: 'Canonical URL',
notSet: 'Not set',
flagNoindex: 'Noindex',
flagHasSchema: 'Has Schema',
flagViewport: 'Viewport',
openGraphHeading: 'Open Graph',
twitterCardHeading: 'Twitter / X Card',
detectedTech: 'Detected Tech',
missingValue: 'Missing',
},
pageAnalysis: {
namedEntities: 'Named entities',
totalEntities: 'Total entities: {count}',
previewFailed: 'Preview failed to load (hotlink or CORS). Open link below.',
showLess: 'Show less',
showAll: 'Show all {count}',
reportTitle: 'Page analysis report',
summary: 'Summary',
totalWords: 'Total words',
internalLinks: 'Internal links',
externalLinks: 'External links',
images: 'Images',
scripts: 'Scripts',
stylesheets: 'Stylesheets',
preloadPreconnect: 'Preload / preconnect',
sslCertExpires: 'SSL cert expires (site)',
pageResourcesCaption: 'Page resources (same as summary counts)',
lhCategoryCaption: 'Lighthouse category scores (0–100)',
scoreAxis: 'Score',
intelligenceMl: 'Intelligence (Python ML)',
duplicateCluster: 'Duplicate cluster',
detectedLanguage: 'Detected language',
anomalyIsolation: 'Anomaly (IsolationForest)',
anomalyScorePrefix: 'score',
similarInternalCaption: 'Precomputed similar internal URLs (cosine vs site pages)',
socialPreviews: 'Social previews',
facebookOg: 'Facebook / Open Graph',
twitterX: 'Twitter / X',
webVitalsLighthouse: 'Web vitals / Lighthouse',
lhRecommendations: 'Recommendations (Lighthouse)',
failingAuditsCaption: 'Failing audits — expand for tables, thumbnails, and DOM nodes ({count})',
noLhData:
'No Lighthouse data for this URL. Run a crawl with per-page Lighthouse enabled to see Core Web Vitals and performance recommendations here.',
keywordAnalysis: 'Keyword analysis',
thKeyword: 'Keyword',
thCount: 'Count',
thScore: 'Score',
onPageWarnings: 'On-page warnings ({count})',
severityAll: 'All severities',
severityHigh: 'High',
severityMedium: 'Medium',
severityLow: 'Low',
noMatchingWarnings: 'No matching warnings for this page.',
resources: 'Resources',
resourceChartLabels: ['Internal links', 'External links', 'Images', 'Scripts', 'Stylesheets'],
resourceSections: [
{ key: 'internal_links', label: 'Internal links' },
{ key: 'external_links', label: 'External links' },
{ key: 'stylesheet_urls', label: 'Stylesheets' },
{ key: 'script_urls', label: 'Scripts' },
{ key: 'image_urls', label: 'Images' },
],
},
content: {
intro:
'Content metrics for this URL, with the same chart styles as Content Insights. Site-wide charts help you see where this page sits in the crawl.',
kpiWords: 'Words',
kpiReading: 'Reading',
notEnoughText: 'Not enough text',
textHtml: 'Text / HTML',
bodyTextShare: 'Body text share of HTML',
kpiDepth: 'Depth',
crawlDepth: 'Crawl depth',
thinQ: 'Thin?',
under300Words: '< 300 words',
vsSiteTitle: 'This page vs site',
vsSiteDesc: 'Compare word count to crawl-wide mean and median.',
wordCountComparison: 'Word count comparison',
vsSiteAggregates: 'This page versus site aggregates',
textVsMarkup: 'Text vs markup (this page)',
textVsMarkupDesc: 'Share of visible text in the HTML document',
doughnutBodyText: 'Body text',
doughnutOtherMarkup: 'Other (markup, scripts, etc.)',
siteDistTitle: 'Site distributions',
siteDistDesc: 'Same buckets as Content Insights. Caption shows where this page lands.',
wordCountDist: 'Word count distribution',
thisPageWords: 'This page ({words} words):',
readingLevelDist: 'Reading level distribution',
thisPageGrade: 'This page:',
gradeArrow: '→',
notEnoughReading: 'Not enough text for a reading level on this page.',
contentHtmlRatio: 'Content-to-HTML ratio',
thisPageRatio: 'This page:',
ratioArrow: '→ bucket',
topKeywordsPage: 'Top keywords (this page)',
freqThisUrl: 'Frequency on this URL only',
noKeywordPage: 'No keyword data for this page.',
onPageSignalsTitle: 'On-page signals (this page)',
onPageSignalsDesc: 'Title length, meta description, and H1 count — same categories as Content Insights.',
titleTag: 'Title tag',
characters: '{n} characters',
metaDesc: 'Meta description',
h1Count: 'H1 count',
headingCount: '{n} heading(s)',
noH1Data: 'No H1 data',
socialMetaTitle: 'Social meta (this page)',
socialMetaDesc: 'Open Graph, Twitter Card, and OG image presence on this URL.',
datasetPresent: 'Present',
datasetMissing: 'Missing',
siteArchTitle: 'Site architecture context',
siteArchDesc: 'Crawl depth across the site. This page is at the depth shown in the KPI row above.',
crawlDepthDist: 'Crawl depth distribution',
thisPageDepth: 'This page:',
depthLabel: 'Depth {n}',
headingStructure: 'Heading structure',
keywordsQuick: 'Keywords (quick view)',
occurrences: '{n} occurrences',
labelThisPage: 'This page',
labelSiteMean: 'Site mean',
labelSiteMedian: 'Site median',
axisBucket: 'Bucket',
axisDepth: 'Depth',
tooltipWords: '{n} words',
horizontalBarSuffix: 'occurrences',
tooltipPages: '{n} pages',
tooltipDoughnut: '{label}: {n}',
tooltipGroupedPct: '{dataset}: {pct}%',
axisPercent: '%',
occurrencesUnit: 'occurrences',
chartWords: 'words',
ratioLt10: '<10%',
ratio1020: '10-20%',
ratio2040: '20-40%',
ratioGt40: '>40%',
},
technical: {
securityHeaders: 'Security Headers',
headersPresentOf: 'Headers present (of {n})',
scriptsStylesImages: 'Scripts, stylesheets, images',
performanceCaching: 'Performance & Caching',
imagesA11y: 'Images & Accessibility',
totalImages: 'Total Images',
missingAlt: 'Missing Alt',
noLazyLoad: 'No Lazy Load',
ariaElements: 'ARIA Elements',
assetBarLabels: ['Scripts', 'Stylesheets', 'Images'],
doughnutPresent: 'Present',
doughnutMissing: 'Missing',
tooltipItems: '{n} items',
perfCacheControl: 'Cache-Control',
perfEtag: 'ETag',
perfScripts: 'Scripts',
perfStylesheets: 'Stylesheets',
perfMixedContent: 'Mixed Content',
etagPresent: 'Present',
notSet: 'Not set',
mixedNone: 'None',
mixedItems: '{n} item(s)',
securityRows: [
{
label: 'Strict-Transport-Security',
field: 'strict_transport_security',
rec: 'Set HSTS with max-age of at least 31536000 to enforce HTTPS.',
},
{
label: 'X-Content-Type-Options',
field: 'x_content_type_options',
rec: 'Set to "nosniff" to prevent MIME-type sniffing attacks.',
},
{
label: 'X-Frame-Options',
field: 'x_frame_options',
rec: 'Set to "SAMEORIGIN" or "DENY" to prevent clickjacking.',
},
{
label: 'Content-Security-Policy',
field: 'content_security_policy',
rec: 'Define a strict CSP to reduce XSS attack surface.',
},
],
},
issues: {
lighthouseScores: 'Lighthouse Scores',
lighthouseFailures: 'Lighthouse failures',
issuesBySource: 'Issues by source for this URL',
allIssues: 'All Issues ({count})',
filterAllSeverities: 'All Severities',
filterCritical: 'Critical',
filterHigh: 'High',
filterMedium: 'Medium',
filterLow: 'Low',
noIssues: 'No issues found',
noIssuesAtSeverity: ' at {severity} severity.',
recommendation: 'Recommendation: ',
whatToImprove: 'What to improve',
typeLabels: ['Broken', 'Redirect', 'SEO', 'Content', 'Category', 'Security'],
issueTooltip: '{n} issue{s}',
redirectWithFinal: 'Redirect {status} → {finalUrl}',
},
},
browserMlChat: {
panelTitle: 'Browser assistant',
welcome:
'Ask questions about this audit. The model runs in your browser; first load may download model files.',
chatSystemPrompt:
'You are a concise technical assistant helping the user understand an SEO / site crawl audit. Prefer short answers. When citing data, refer to the report sections provided. If the user asks for something not in the report, say you do not have that data.',
chatEmptyReply: '(No text returned from the model.)',
chatErrorGeneric: 'Something went wrong while generating a reply.',
chatErrorRangeBuffer:
'The in-browser model hit a memory or WASM limit. Try reloading the page, clearing site data, or using a smaller model.',
toolUnknownCommand: 'Unknown command. Type /help for available commands.',
closeAria: 'Close assistant',
launcherAria: 'Open browser assistant',
chatPlaceholder: 'Message… (Enter to send, Shift+Enter for newline)',
chatSendAria: 'Send message',
chatBusy: 'Thinking…',
chatSend: 'Send',
systemPromptToggleAria: 'Edit system prompt',
systemPromptHint:
'Instructions for the in-browser model. Tool usage rules and your audit data are still appended automatically after this text.',
systemPromptSave: 'Save',
systemPromptSaved: 'Saved',
systemPromptReset: 'Reset to default',
},
browserMl: {
progressLabel: 'Loading model',
},
};