n8n-nodes-seo-scanner 1.2.23 → 1.2.25
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/dist/SeoScanner.node.js
CHANGED
|
@@ -59,7 +59,7 @@ function readBoolean(value) {
|
|
|
59
59
|
return value;
|
|
60
60
|
if (typeof value === 'string') {
|
|
61
61
|
const normalized = value.trim().toLowerCase();
|
|
62
|
-
if (['true', '1', 'yes', 'si', '
|
|
62
|
+
if (['true', '1', 'yes', 'si', 'sí'].includes(normalized))
|
|
63
63
|
return true;
|
|
64
64
|
if (['false', '0', 'no'].includes(normalized))
|
|
65
65
|
return false;
|
|
@@ -120,6 +120,10 @@ async function validateApiKeyWithApp(params) {
|
|
|
120
120
|
},
|
|
121
121
|
body: JSON.stringify({
|
|
122
122
|
apiKey: params.apiKey,
|
|
123
|
+
...(params.useApiCredits ? { useApiCredits: true, source: 'api' } : {}),
|
|
124
|
+
...(params.debitApiCredits ? { debitApiCredits: true } : {}),
|
|
125
|
+
...(params.apiCreditCost ? { apiCreditCost: params.apiCreditCost } : {}),
|
|
126
|
+
...(params.reportId ? { reportId: params.reportId } : {}),
|
|
123
127
|
}),
|
|
124
128
|
});
|
|
125
129
|
let body;
|
|
@@ -137,15 +141,18 @@ async function notifyCallbackError(params) {
|
|
|
137
141
|
if (!params.callbackUrl || !params.reportId)
|
|
138
142
|
return;
|
|
139
143
|
const headers = { 'Content-Type': 'application/json' };
|
|
140
|
-
if (params.
|
|
141
|
-
headers['X-API-
|
|
144
|
+
if (params.apiToken)
|
|
145
|
+
headers['X-API-Token'] = params.apiToken;
|
|
146
|
+
const body = {
|
|
147
|
+
reportId: params.reportId,
|
|
148
|
+
error: params.message,
|
|
149
|
+
};
|
|
150
|
+
if (params.apiToken)
|
|
151
|
+
body.apiToken = params.apiToken;
|
|
142
152
|
await fetch(params.callbackUrl, {
|
|
143
153
|
method: 'POST',
|
|
144
154
|
headers,
|
|
145
|
-
body: JSON.stringify(
|
|
146
|
-
reportId: params.reportId,
|
|
147
|
-
error: params.message,
|
|
148
|
-
}),
|
|
155
|
+
body: JSON.stringify(body),
|
|
149
156
|
});
|
|
150
157
|
}
|
|
151
158
|
function getIncomingWebhookPayload(input) {
|
|
@@ -162,6 +169,8 @@ function getIncomingWebhookPayload(input) {
|
|
|
162
169
|
apiKey: readString(source.apiKey) ||
|
|
163
170
|
readHeader(headers, 'x-api-key') ||
|
|
164
171
|
readBearerToken(authorization),
|
|
172
|
+
apiToken: readString(source.apiToken) ||
|
|
173
|
+
readHeader(headers, 'x-api-token'),
|
|
165
174
|
scanInternalLinks: readBoolean(source.allsite) ?? readBoolean(source.scanInternalLinks),
|
|
166
175
|
maxInternalUrls: readNumber(source.maxInternalUrls),
|
|
167
176
|
};
|
|
@@ -174,10 +183,10 @@ class SeoScanner {
|
|
|
174
183
|
icon: 'file:seoScanner.svg',
|
|
175
184
|
group: ['transform'],
|
|
176
185
|
version: 1,
|
|
177
|
-
description: 'Escaneo SEO
|
|
186
|
+
description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
|
|
178
187
|
usableAsTool: {
|
|
179
188
|
replacements: {
|
|
180
|
-
description: 'Herramienta para escaneo SEO
|
|
189
|
+
description: 'Herramienta para escaneo SEO técnico completo de una página web. Parámetros: url (obligatorio), scanInternalLinks, maxInternalUrls, timeoutSeconds, customUserAgent, customUserAgentValue, simulateGooglebot, followRedirects, acceptLanguage, detailOptions. Devuelve: mainPage con problemsBySeverity (critical, important, warning, info), severitySummary (conteos por gravedad), issues, warnings, passed, recommendations. Gravedad: critical=bloquea indexación (no HTTPS, noindex, sin viewport, sin title), important=afecta SEO (sin meta description, sin H1, sin canonical, sin lang), warning=mejores prácticas (longitud título/description, imágenes sin alt, OG), info=opcional (JSON-LD, favicon). Usar para auditoría SEO o análisis técnico.',
|
|
181
190
|
},
|
|
182
191
|
},
|
|
183
192
|
defaults: { name: 'SEO UOPIX' },
|
|
@@ -191,59 +200,59 @@ class SeoScanner {
|
|
|
191
200
|
],
|
|
192
201
|
properties: [
|
|
193
202
|
{
|
|
194
|
-
displayName: 'URL de la
|
|
203
|
+
displayName: 'URL de la página',
|
|
195
204
|
name: 'url',
|
|
196
205
|
type: 'string',
|
|
197
206
|
default: '',
|
|
198
207
|
placeholder: 'https://example.com/pagina',
|
|
199
|
-
description: 'URL absoluta de la
|
|
208
|
+
description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
|
|
200
209
|
},
|
|
201
210
|
{
|
|
202
211
|
displayName: 'Escanear todo el sitio',
|
|
203
212
|
name: 'scanInternalLinks',
|
|
204
213
|
type: 'boolean',
|
|
205
214
|
default: false,
|
|
206
|
-
description: 'Si
|
|
215
|
+
description: 'Si está activado, además de la página principal se escanean URLs internas del mismo dominio encontradas en la página (hasta el límite indicado)',
|
|
207
216
|
},
|
|
208
217
|
{
|
|
209
|
-
displayName: '
|
|
218
|
+
displayName: 'Límite de páginas a escanear',
|
|
210
219
|
name: 'maxInternalUrls',
|
|
211
220
|
type: 'number',
|
|
212
221
|
default: 20,
|
|
213
222
|
typeOptions: { minValue: 1, maxValue: 100 },
|
|
214
|
-
description: '
|
|
223
|
+
description: 'Número máximo de páginas internas a analizar (1-100). Se usan las URLs internas encontradas en la página principal.',
|
|
215
224
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
216
225
|
},
|
|
217
226
|
{
|
|
218
|
-
displayName: 'Ignorar Fallos (Uno por
|
|
227
|
+
displayName: 'Ignorar Fallos (Uno por línea)',
|
|
219
228
|
name: 'ignoredIssues',
|
|
220
229
|
type: 'string',
|
|
221
230
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
222
231
|
default: '',
|
|
223
|
-
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrar
|
|
232
|
+
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
|
|
224
233
|
},
|
|
225
234
|
{
|
|
226
|
-
displayName: 'Ignorar
|
|
235
|
+
displayName: 'Ignorar Páginas (Una por línea)',
|
|
227
236
|
name: 'ignoredPages',
|
|
228
237
|
type: 'string',
|
|
229
238
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
230
239
|
default: '',
|
|
231
|
-
description: 'Fragmentos de URL que no deseas escanear.
|
|
240
|
+
description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
|
|
232
241
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
233
242
|
},
|
|
234
243
|
{
|
|
235
|
-
displayName: 'Timeout por
|
|
244
|
+
displayName: 'Timeout por página (segundos)',
|
|
236
245
|
name: 'timeoutSeconds',
|
|
237
246
|
type: 'number',
|
|
238
247
|
default: 15,
|
|
239
|
-
description: 'Tiempo
|
|
248
|
+
description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
|
|
240
249
|
},
|
|
241
250
|
{
|
|
242
251
|
displayName: 'User-Agent personalizado',
|
|
243
252
|
name: 'customUserAgent',
|
|
244
253
|
type: 'boolean',
|
|
245
254
|
default: false,
|
|
246
|
-
description: 'Si
|
|
255
|
+
description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
|
|
247
256
|
},
|
|
248
257
|
{
|
|
249
258
|
displayName: 'User-Agent',
|
|
@@ -251,7 +260,7 @@ class SeoScanner {
|
|
|
251
260
|
type: 'string',
|
|
252
261
|
default: '',
|
|
253
262
|
placeholder: 'Mozilla/5.0 (compatible; MiBot/1.0)',
|
|
254
|
-
description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado"
|
|
263
|
+
description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
|
|
255
264
|
displayOptions: { show: { customUserAgent: [true] } },
|
|
256
265
|
},
|
|
257
266
|
{
|
|
@@ -259,7 +268,7 @@ class SeoScanner {
|
|
|
259
268
|
name: 'simulateGooglebot',
|
|
260
269
|
type: 'boolean',
|
|
261
270
|
default: false,
|
|
262
|
-
description: 'Usa el User-Agent de Googlebot para ver la
|
|
271
|
+
description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
|
|
263
272
|
},
|
|
264
273
|
{
|
|
265
274
|
displayName: 'Seguir redirecciones',
|
|
@@ -274,7 +283,7 @@ class SeoScanner {
|
|
|
274
283
|
type: 'string',
|
|
275
284
|
default: '',
|
|
276
285
|
placeholder: 'es-ES,es;q=0.9,en;q=0.8',
|
|
277
|
-
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto.
|
|
286
|
+
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
|
|
278
287
|
},
|
|
279
288
|
{
|
|
280
289
|
displayName: 'Generar informe HTML',
|
|
@@ -288,14 +297,14 @@ class SeoScanner {
|
|
|
288
297
|
name: 'useJsRendering',
|
|
289
298
|
type: 'boolean',
|
|
290
299
|
default: false,
|
|
291
|
-
description: 'Si
|
|
300
|
+
description: 'Si está activado, usa un navegador invisible (Puppeteer) para cargar la página. Necesario para webs React, Vue o Angular que renderizan meta etiquetas y contenido dinámicamente. Es más lento que la petición HTTP normal.',
|
|
292
301
|
},
|
|
293
302
|
{
|
|
294
303
|
displayName: 'Enviar resultados a API externa',
|
|
295
304
|
name: 'sendToExternalApi',
|
|
296
305
|
type: 'boolean',
|
|
297
306
|
default: false,
|
|
298
|
-
description: 'Si
|
|
307
|
+
description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
|
|
299
308
|
},
|
|
300
309
|
{
|
|
301
310
|
displayName: 'Callback URL',
|
|
@@ -303,7 +312,7 @@ class SeoScanner {
|
|
|
303
312
|
type: 'string',
|
|
304
313
|
default: '',
|
|
305
314
|
placeholder: 'http://localhost:3000/api/reports',
|
|
306
|
-
description: 'URL a la que se
|
|
315
|
+
description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
|
|
307
316
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
308
317
|
},
|
|
309
318
|
{
|
|
@@ -312,27 +321,27 @@ class SeoScanner {
|
|
|
312
321
|
type: 'string',
|
|
313
322
|
default: '',
|
|
314
323
|
placeholder: '',
|
|
315
|
-
description: 'Identificador del reporte en la
|
|
324
|
+
description: 'Identificador del reporte en la aplicación externa (se incluye en el JSON enviado). Útil si el escaneo se lanzó desde la web.',
|
|
316
325
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
317
326
|
},
|
|
318
327
|
{
|
|
319
|
-
displayName: 'API
|
|
328
|
+
displayName: 'API Token del callback',
|
|
320
329
|
name: 'apiToken',
|
|
321
330
|
type: 'string',
|
|
322
331
|
default: '',
|
|
323
332
|
typeOptions: { password: true },
|
|
324
|
-
description: '
|
|
333
|
+
description: 'Token interno para autenticar el callback de resultados (se envía como header X-API-Token).',
|
|
325
334
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
326
335
|
},
|
|
327
336
|
{
|
|
328
337
|
displayName: 'Opciones de detalle',
|
|
329
338
|
name: 'detailOptions',
|
|
330
339
|
type: 'collection',
|
|
331
|
-
placeholder: '
|
|
340
|
+
placeholder: 'Añadir opción',
|
|
332
341
|
default: {},
|
|
333
342
|
options: [
|
|
334
343
|
{
|
|
335
|
-
displayName: 'Incluir detalle de
|
|
344
|
+
displayName: 'Incluir detalle de imágenes',
|
|
336
345
|
name: 'includeImageDetails',
|
|
337
346
|
type: 'boolean',
|
|
338
347
|
default: true,
|
|
@@ -367,11 +376,11 @@ class SeoScanner {
|
|
|
367
376
|
description: 'Hacer HEAD request a enlaces para detectar 404 u otros errores (puede ralentizar)',
|
|
368
377
|
},
|
|
369
378
|
{
|
|
370
|
-
displayName: '
|
|
379
|
+
displayName: 'Máximo enlaces a comprobar',
|
|
371
380
|
name: 'maxBrokenLinksToCheck',
|
|
372
381
|
type: 'number',
|
|
373
382
|
default: 15,
|
|
374
|
-
description: '
|
|
383
|
+
description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
|
|
375
384
|
},
|
|
376
385
|
{
|
|
377
386
|
displayName: 'Comprobar contraste de colores',
|
|
@@ -388,7 +397,7 @@ class SeoScanner {
|
|
|
388
397
|
description: 'En cada fallo (p. ej. contraste) incluye el selector o etiqueta HTML del elemento afectado',
|
|
389
398
|
},
|
|
390
399
|
],
|
|
391
|
-
description: '
|
|
400
|
+
description: 'Qué detalles incluir en la salida',
|
|
392
401
|
},
|
|
393
402
|
],
|
|
394
403
|
};
|
|
@@ -404,15 +413,18 @@ class SeoScanner {
|
|
|
404
413
|
credentials = {};
|
|
405
414
|
}
|
|
406
415
|
const apiKey = incoming.apiKey || readString(credentials?.apiKey) || '';
|
|
416
|
+
const apiToken = incoming.apiToken || '';
|
|
407
417
|
const appBaseUrl = readString(credentials?.appBaseUrl) ||
|
|
408
418
|
getOriginFromUrl(incoming.callbackUrl || '') ||
|
|
409
419
|
DEFAULT_APP_BASE_URL;
|
|
410
420
|
let licenseWarning = '';
|
|
411
421
|
try {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
422
|
+
if (!apiToken) {
|
|
423
|
+
await validateApiKeyWithApp({
|
|
424
|
+
appBaseUrl,
|
|
425
|
+
apiKey,
|
|
426
|
+
});
|
|
427
|
+
}
|
|
416
428
|
}
|
|
417
429
|
catch (e) {
|
|
418
430
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -420,7 +432,7 @@ class SeoScanner {
|
|
|
420
432
|
await notifyCallbackError({
|
|
421
433
|
callbackUrl: incoming.callbackUrl || '',
|
|
422
434
|
reportId: incoming.reportId || '',
|
|
423
|
-
|
|
435
|
+
apiToken,
|
|
424
436
|
message: errorMessage,
|
|
425
437
|
}).catch(() => undefined);
|
|
426
438
|
return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
|
|
@@ -433,12 +445,12 @@ class SeoScanner {
|
|
|
433
445
|
headers: { 'Accept': 'application/json' }
|
|
434
446
|
});
|
|
435
447
|
if (!res.ok) {
|
|
436
|
-
throw new Error(`El servidor de licencias
|
|
448
|
+
throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
|
|
437
449
|
}
|
|
438
450
|
const jsonText = await res.text();
|
|
439
451
|
const data = JSON.parse(jsonText);
|
|
440
452
|
if (!data.hasOwnProperty(apiKey)) {
|
|
441
|
-
throw new Error('La licencia introducida no es
|
|
453
|
+
throw new Error('La licencia introducida no es válida.');
|
|
442
454
|
}
|
|
443
455
|
}
|
|
444
456
|
catch (e) {
|
|
@@ -519,14 +531,31 @@ class SeoScanner {
|
|
|
519
531
|
baseUrl = new URL(url).href;
|
|
520
532
|
}
|
|
521
533
|
catch {
|
|
522
|
-
return [[{ json: { error: 'URL no
|
|
534
|
+
return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
|
|
535
|
+
}
|
|
536
|
+
if (!apiToken) {
|
|
537
|
+
try {
|
|
538
|
+
await validateApiKeyWithApp({
|
|
539
|
+
appBaseUrl,
|
|
540
|
+
apiKey,
|
|
541
|
+
useApiCredits: true,
|
|
542
|
+
debitApiCredits: true,
|
|
543
|
+
apiCreditCost: 1,
|
|
544
|
+
reportId: incoming.reportId || undefined,
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
catch (e) {
|
|
548
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
549
|
+
const errorMessage = `No se pudo consumir crédito API: ${msg}`;
|
|
550
|
+
return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
|
|
551
|
+
}
|
|
523
552
|
}
|
|
524
553
|
try {
|
|
525
554
|
const { html, finalUrl, statusCode, responseTimeMs, timeToFirstByteMs, responseHeaders } = await (0, networkUtils_1.fetchPage)(baseUrl, timeoutMs, fetchOpts);
|
|
526
555
|
if (statusCode >= 400) {
|
|
527
556
|
return [[{
|
|
528
557
|
json: {
|
|
529
|
-
error: `La
|
|
558
|
+
error: `La página devolvió código ${statusCode}`,
|
|
530
559
|
statusCode,
|
|
531
560
|
url: baseUrl,
|
|
532
561
|
},
|
|
@@ -618,7 +647,7 @@ class SeoScanner {
|
|
|
618
647
|
if (mainResult.brokenLinks.length > 0) {
|
|
619
648
|
const msg = `${mainResult.brokenLinks.length} enlace(s) roto(s) detectado(s)`;
|
|
620
649
|
if (!isIgnored(msg)) {
|
|
621
|
-
const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15}
|
|
650
|
+
const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15} más` : '');
|
|
622
651
|
mainResult.problemsBySeverity.important.push({
|
|
623
652
|
message: msg,
|
|
624
653
|
recommendation: 'Corregir o eliminar los enlaces que devuelven 404 u otros errores.',
|
|
@@ -663,7 +692,7 @@ class SeoScanner {
|
|
|
663
692
|
mainResult.sitemapUrlsChecked = robotsSitemap.sitemapUrlsChecked;
|
|
664
693
|
mainResult.sitemapError = robotsSitemap.sitemapError;
|
|
665
694
|
if (robotsSitemap.robotsTxtBlocked) {
|
|
666
|
-
const msg = 'La URL
|
|
695
|
+
const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
|
|
667
696
|
if (!isIgnored(msg)) {
|
|
668
697
|
mainResult.problemsBySeverity.critical.push({
|
|
669
698
|
message: msg,
|
|
@@ -681,7 +710,7 @@ class SeoScanner {
|
|
|
681
710
|
if (!isIgnored(msg)) {
|
|
682
711
|
mainResult.problemsBySeverity.info.push({
|
|
683
712
|
message: msg,
|
|
684
|
-
recommendation: '
|
|
713
|
+
recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
|
|
685
714
|
});
|
|
686
715
|
}
|
|
687
716
|
}
|
|
@@ -732,7 +761,7 @@ class SeoScanner {
|
|
|
732
761
|
sitemapInSitemap: mainResult.sitemapInSitemap,
|
|
733
762
|
},
|
|
734
763
|
scannedUrls: 1,
|
|
735
|
-
message: `Escaneada 1
|
|
764
|
+
message: `Escaneada 1 página: ${finalUrl}`,
|
|
736
765
|
pageTextContent: mainResult.pageTextContent ?? '',
|
|
737
766
|
};
|
|
738
767
|
let internalResults = [];
|
|
@@ -755,12 +784,12 @@ class SeoScanner {
|
|
|
755
784
|
internalResults.push(result);
|
|
756
785
|
}
|
|
757
786
|
catch {
|
|
758
|
-
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la
|
|
787
|
+
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
|
|
759
788
|
}
|
|
760
789
|
}
|
|
761
790
|
output.internalPages = internalResults;
|
|
762
791
|
output.scannedUrls = 1 + internalResults.length;
|
|
763
|
-
output.message = `Escaneadas ${output.scannedUrls}
|
|
792
|
+
output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
|
|
764
793
|
if (analyzeOpts.checkBrokenLinks) {
|
|
765
794
|
const maxSiteCheck = Math.min(100, Math.max(analyzeOpts.maxBrokenLinksToCheck ?? 15, 30));
|
|
766
795
|
const seenInternal = new Set();
|
|
@@ -832,24 +861,24 @@ class SeoScanner {
|
|
|
832
861
|
dupDesc.push(p.url);
|
|
833
862
|
}
|
|
834
863
|
if (dupTitle.length > 0 || dupDesc.length > 0) {
|
|
835
|
-
const msg = `Posible contenido duplicado:
|
|
864
|
+
const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
|
|
836
865
|
if (!isIgnored(msg)) {
|
|
837
866
|
mainResult.duplicateContent = [];
|
|
838
867
|
let elementText = '';
|
|
839
868
|
if (dupTitle.length > 0) {
|
|
840
869
|
mainResult.duplicateContent.push({ type: 'title', duplicateWith: dupTitle });
|
|
841
|
-
elementText += `[
|
|
870
|
+
elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
|
|
842
871
|
}
|
|
843
872
|
if (dupDesc.length > 0) {
|
|
844
873
|
mainResult.duplicateContent.push({ type: 'description', duplicateWith: dupDesc });
|
|
845
|
-
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada
|
|
874
|
+
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
|
|
846
875
|
}
|
|
847
876
|
mainResult.problemsBySeverity.important.push({
|
|
848
877
|
message: msg,
|
|
849
|
-
recommendation: 'Usar
|
|
878
|
+
recommendation: 'Usar títulos y meta descriptions únicos por página.',
|
|
850
879
|
element: elementText.trim()
|
|
851
880
|
});
|
|
852
|
-
mainResult.issues.push('Contenido duplicado detectado (
|
|
881
|
+
mainResult.issues.push('Contenido duplicado detectado (título o description)');
|
|
853
882
|
mainResult.severitySummary.important = mainResult.problemsBySeverity.important.length;
|
|
854
883
|
}
|
|
855
884
|
}
|
|
@@ -874,12 +903,12 @@ class SeoScanner {
|
|
|
874
903
|
}
|
|
875
904
|
if (orphanPages.length > 0) {
|
|
876
905
|
mainResult.isOrphan = false;
|
|
877
|
-
const msg = `${orphanPages.length}
|
|
906
|
+
const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
|
|
878
907
|
if (!isIgnored(msg)) {
|
|
879
|
-
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15}
|
|
908
|
+
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
|
|
880
909
|
mainResult.problemsBySeverity.warning.push({
|
|
881
910
|
message: msg,
|
|
882
|
-
recommendation: '
|
|
911
|
+
recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
|
|
883
912
|
element: orphansList
|
|
884
913
|
});
|
|
885
914
|
mainResult.warnings.push(msg);
|
|
@@ -888,7 +917,7 @@ class SeoScanner {
|
|
|
888
917
|
output.summary.orphanPagesCount = orphanPages.length;
|
|
889
918
|
}
|
|
890
919
|
else {
|
|
891
|
-
mainResult.passed.push('No se detectaron
|
|
920
|
+
mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
|
|
892
921
|
output.summary.orphanPagesCount = 0;
|
|
893
922
|
}
|
|
894
923
|
}
|
|
@@ -940,12 +969,12 @@ class SeoScanner {
|
|
|
940
969
|
}
|
|
941
970
|
const invalidCross = resultObj.crossHreflang.filter(c => !c.valid);
|
|
942
971
|
if (invalidCross.length > 0) {
|
|
943
|
-
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length}
|
|
972
|
+
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
|
|
944
973
|
if (!isIgnored(msg)) {
|
|
945
974
|
const crossList = invalidCross.map(c => `- ${c.targetUrl} (${c.error})`).join('\n');
|
|
946
975
|
resultObj.problemsBySeverity.important.push({
|
|
947
976
|
message: msg,
|
|
948
|
-
recommendation: '
|
|
977
|
+
recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
|
|
949
978
|
element: crossList
|
|
950
979
|
});
|
|
951
980
|
resultObj.issues.push(msg);
|
|
@@ -953,7 +982,7 @@ class SeoScanner {
|
|
|
953
982
|
}
|
|
954
983
|
}
|
|
955
984
|
else if (resultObj.crossHreflang.length > 0) {
|
|
956
|
-
resultObj.passed.push('
|
|
985
|
+
resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
|
|
957
986
|
}
|
|
958
987
|
};
|
|
959
988
|
await verifyCrossHreflang(mainResult);
|
|
@@ -988,7 +1017,7 @@ class SeoScanner {
|
|
|
988
1017
|
if (sendToExternalApi) {
|
|
989
1018
|
let callbackUrl = '';
|
|
990
1019
|
let reportId = '';
|
|
991
|
-
let
|
|
1020
|
+
let apiTokenExt = '';
|
|
992
1021
|
try {
|
|
993
1022
|
callbackUrl = (this.getNodeParameter('callbackUrl', 0) || '').trim();
|
|
994
1023
|
}
|
|
@@ -998,15 +1027,15 @@ class SeoScanner {
|
|
|
998
1027
|
}
|
|
999
1028
|
catch { }
|
|
1000
1029
|
try {
|
|
1001
|
-
|
|
1030
|
+
apiTokenExt = (this.getNodeParameter('apiToken', 0) || '').trim();
|
|
1002
1031
|
}
|
|
1003
1032
|
catch { }
|
|
1004
1033
|
if (!callbackUrl && incoming.callbackUrl)
|
|
1005
1034
|
callbackUrl = incoming.callbackUrl;
|
|
1006
1035
|
if (!reportId && incoming.reportId)
|
|
1007
1036
|
reportId = incoming.reportId;
|
|
1008
|
-
if (!
|
|
1009
|
-
|
|
1037
|
+
if (!apiTokenExt && incoming.apiToken)
|
|
1038
|
+
apiTokenExt = incoming.apiToken;
|
|
1010
1039
|
if (callbackUrl && reportId) {
|
|
1011
1040
|
try {
|
|
1012
1041
|
const callbackBody = {
|
|
@@ -1017,8 +1046,10 @@ class SeoScanner {
|
|
|
1017
1046
|
const headers = {
|
|
1018
1047
|
'Content-Type': 'application/json',
|
|
1019
1048
|
};
|
|
1020
|
-
if (
|
|
1021
|
-
headers['X-API-
|
|
1049
|
+
if (apiTokenExt) {
|
|
1050
|
+
headers['X-API-Token'] = apiTokenExt;
|
|
1051
|
+
callbackBody.apiToken = apiTokenExt;
|
|
1052
|
+
}
|
|
1022
1053
|
const callbackResponse = await fetch(callbackUrl, {
|
|
1023
1054
|
method: 'POST',
|
|
1024
1055
|
headers,
|
|
@@ -1026,11 +1057,11 @@ class SeoScanner {
|
|
|
1026
1057
|
});
|
|
1027
1058
|
if (!callbackResponse.ok) {
|
|
1028
1059
|
const responseText = await callbackResponse.text().catch(() => '');
|
|
1029
|
-
throw new Error(`La API externa
|
|
1060
|
+
throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
|
|
1030
1061
|
}
|
|
1031
1062
|
output.externalApiSent = true;
|
|
1032
1063
|
output.externalApiUrl = callbackUrl;
|
|
1033
|
-
output.externalApiKeyUsed = Boolean(
|
|
1064
|
+
output.externalApiKeyUsed = Boolean(apiTokenExt);
|
|
1034
1065
|
}
|
|
1035
1066
|
catch (callbackErr) {
|
|
1036
1067
|
output.externalApiSent = false;
|
|
@@ -1044,7 +1075,7 @@ class SeoScanner {
|
|
|
1044
1075
|
const msg = e instanceof Error ? e.message : String(e);
|
|
1045
1076
|
return [[{
|
|
1046
1077
|
json: {
|
|
1047
|
-
error: 'No se pudo escanear la
|
|
1078
|
+
error: 'No se pudo escanear la página',
|
|
1048
1079
|
detail: msg,
|
|
1049
1080
|
url: baseUrl,
|
|
1050
1081
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeoScanner.node.js","sourceRoot":"","sources":["../nodes/SeoScanner/SeoScanner.node.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"SeoScanner.node.js","sourceRoot":"","sources":["../nodes/SeoScanner/SeoScanner.node.ts"],"names":[],"mappings":"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"}
|
|
@@ -59,7 +59,7 @@ function readBoolean(value) {
|
|
|
59
59
|
return value;
|
|
60
60
|
if (typeof value === 'string') {
|
|
61
61
|
const normalized = value.trim().toLowerCase();
|
|
62
|
-
if (['true', '1', 'yes', 'si', '
|
|
62
|
+
if (['true', '1', 'yes', 'si', 'sí'].includes(normalized))
|
|
63
63
|
return true;
|
|
64
64
|
if (['false', '0', 'no'].includes(normalized))
|
|
65
65
|
return false;
|
|
@@ -120,6 +120,10 @@ async function validateApiKeyWithApp(params) {
|
|
|
120
120
|
},
|
|
121
121
|
body: JSON.stringify({
|
|
122
122
|
apiKey: params.apiKey,
|
|
123
|
+
...(params.useApiCredits ? { useApiCredits: true, source: 'api' } : {}),
|
|
124
|
+
...(params.debitApiCredits ? { debitApiCredits: true } : {}),
|
|
125
|
+
...(params.apiCreditCost ? { apiCreditCost: params.apiCreditCost } : {}),
|
|
126
|
+
...(params.reportId ? { reportId: params.reportId } : {}),
|
|
123
127
|
}),
|
|
124
128
|
});
|
|
125
129
|
let body;
|
|
@@ -137,15 +141,18 @@ async function notifyCallbackError(params) {
|
|
|
137
141
|
if (!params.callbackUrl || !params.reportId)
|
|
138
142
|
return;
|
|
139
143
|
const headers = { 'Content-Type': 'application/json' };
|
|
140
|
-
if (params.
|
|
141
|
-
headers['X-API-
|
|
144
|
+
if (params.apiToken)
|
|
145
|
+
headers['X-API-Token'] = params.apiToken;
|
|
146
|
+
const body = {
|
|
147
|
+
reportId: params.reportId,
|
|
148
|
+
error: params.message,
|
|
149
|
+
};
|
|
150
|
+
if (params.apiToken)
|
|
151
|
+
body.apiToken = params.apiToken;
|
|
142
152
|
await fetch(params.callbackUrl, {
|
|
143
153
|
method: 'POST',
|
|
144
154
|
headers,
|
|
145
|
-
body: JSON.stringify(
|
|
146
|
-
reportId: params.reportId,
|
|
147
|
-
error: params.message,
|
|
148
|
-
}),
|
|
155
|
+
body: JSON.stringify(body),
|
|
149
156
|
});
|
|
150
157
|
}
|
|
151
158
|
function getIncomingWebhookPayload(input) {
|
|
@@ -162,6 +169,8 @@ function getIncomingWebhookPayload(input) {
|
|
|
162
169
|
apiKey: readString(source.apiKey) ||
|
|
163
170
|
readHeader(headers, 'x-api-key') ||
|
|
164
171
|
readBearerToken(authorization),
|
|
172
|
+
apiToken: readString(source.apiToken) ||
|
|
173
|
+
readHeader(headers, 'x-api-token'),
|
|
165
174
|
scanInternalLinks: readBoolean(source.allsite) ?? readBoolean(source.scanInternalLinks),
|
|
166
175
|
maxInternalUrls: readNumber(source.maxInternalUrls),
|
|
167
176
|
};
|
|
@@ -174,10 +183,10 @@ class SeoScanner {
|
|
|
174
183
|
icon: 'file:seoScanner.svg',
|
|
175
184
|
group: ['transform'],
|
|
176
185
|
version: 1,
|
|
177
|
-
description: 'Escaneo SEO
|
|
186
|
+
description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
|
|
178
187
|
usableAsTool: {
|
|
179
188
|
replacements: {
|
|
180
|
-
description: 'Herramienta para escaneo SEO
|
|
189
|
+
description: 'Herramienta para escaneo SEO técnico completo de una página web. Parámetros: url (obligatorio), scanInternalLinks, maxInternalUrls, timeoutSeconds, customUserAgent, customUserAgentValue, simulateGooglebot, followRedirects, acceptLanguage, detailOptions. Devuelve: mainPage con problemsBySeverity (critical, important, warning, info), severitySummary (conteos por gravedad), issues, warnings, passed, recommendations. Gravedad: critical=bloquea indexación (no HTTPS, noindex, sin viewport, sin title), important=afecta SEO (sin meta description, sin H1, sin canonical, sin lang), warning=mejores prácticas (longitud título/description, imágenes sin alt, OG), info=opcional (JSON-LD, favicon). Usar para auditoría SEO o análisis técnico.',
|
|
181
190
|
},
|
|
182
191
|
},
|
|
183
192
|
defaults: { name: 'SEO UOPIX' },
|
|
@@ -191,59 +200,59 @@ class SeoScanner {
|
|
|
191
200
|
],
|
|
192
201
|
properties: [
|
|
193
202
|
{
|
|
194
|
-
displayName: 'URL de la
|
|
203
|
+
displayName: 'URL de la página',
|
|
195
204
|
name: 'url',
|
|
196
205
|
type: 'string',
|
|
197
206
|
default: '',
|
|
198
207
|
placeholder: 'https://example.com/pagina',
|
|
199
|
-
description: 'URL absoluta de la
|
|
208
|
+
description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
|
|
200
209
|
},
|
|
201
210
|
{
|
|
202
211
|
displayName: 'Escanear todo el sitio',
|
|
203
212
|
name: 'scanInternalLinks',
|
|
204
213
|
type: 'boolean',
|
|
205
214
|
default: false,
|
|
206
|
-
description: 'Si
|
|
215
|
+
description: 'Si está activado, además de la página principal se escanean URLs internas del mismo dominio encontradas en la página (hasta el límite indicado)',
|
|
207
216
|
},
|
|
208
217
|
{
|
|
209
|
-
displayName: '
|
|
218
|
+
displayName: 'Límite de páginas a escanear',
|
|
210
219
|
name: 'maxInternalUrls',
|
|
211
220
|
type: 'number',
|
|
212
221
|
default: 20,
|
|
213
222
|
typeOptions: { minValue: 1, maxValue: 100 },
|
|
214
|
-
description: '
|
|
223
|
+
description: 'Número máximo de páginas internas a analizar (1-100). Se usan las URLs internas encontradas en la página principal.',
|
|
215
224
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
216
225
|
},
|
|
217
226
|
{
|
|
218
|
-
displayName: 'Ignorar Fallos (Uno por
|
|
227
|
+
displayName: 'Ignorar Fallos (Uno por línea)',
|
|
219
228
|
name: 'ignoredIssues',
|
|
220
229
|
type: 'string',
|
|
221
230
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
222
231
|
default: '',
|
|
223
|
-
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrar
|
|
232
|
+
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
|
|
224
233
|
},
|
|
225
234
|
{
|
|
226
|
-
displayName: 'Ignorar
|
|
235
|
+
displayName: 'Ignorar Páginas (Una por línea)',
|
|
227
236
|
name: 'ignoredPages',
|
|
228
237
|
type: 'string',
|
|
229
238
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
230
239
|
default: '',
|
|
231
|
-
description: 'Fragmentos de URL que no deseas escanear.
|
|
240
|
+
description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
|
|
232
241
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
233
242
|
},
|
|
234
243
|
{
|
|
235
|
-
displayName: 'Timeout por
|
|
244
|
+
displayName: 'Timeout por página (segundos)',
|
|
236
245
|
name: 'timeoutSeconds',
|
|
237
246
|
type: 'number',
|
|
238
247
|
default: 15,
|
|
239
|
-
description: 'Tiempo
|
|
248
|
+
description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
|
|
240
249
|
},
|
|
241
250
|
{
|
|
242
251
|
displayName: 'User-Agent personalizado',
|
|
243
252
|
name: 'customUserAgent',
|
|
244
253
|
type: 'boolean',
|
|
245
254
|
default: false,
|
|
246
|
-
description: 'Si
|
|
255
|
+
description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
|
|
247
256
|
},
|
|
248
257
|
{
|
|
249
258
|
displayName: 'User-Agent',
|
|
@@ -251,7 +260,7 @@ class SeoScanner {
|
|
|
251
260
|
type: 'string',
|
|
252
261
|
default: '',
|
|
253
262
|
placeholder: 'Mozilla/5.0 (compatible; MiBot/1.0)',
|
|
254
|
-
description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado"
|
|
263
|
+
description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
|
|
255
264
|
displayOptions: { show: { customUserAgent: [true] } },
|
|
256
265
|
},
|
|
257
266
|
{
|
|
@@ -259,7 +268,7 @@ class SeoScanner {
|
|
|
259
268
|
name: 'simulateGooglebot',
|
|
260
269
|
type: 'boolean',
|
|
261
270
|
default: false,
|
|
262
|
-
description: 'Usa el User-Agent de Googlebot para ver la
|
|
271
|
+
description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
|
|
263
272
|
},
|
|
264
273
|
{
|
|
265
274
|
displayName: 'Seguir redirecciones',
|
|
@@ -274,7 +283,7 @@ class SeoScanner {
|
|
|
274
283
|
type: 'string',
|
|
275
284
|
default: '',
|
|
276
285
|
placeholder: 'es-ES,es;q=0.9,en;q=0.8',
|
|
277
|
-
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto.
|
|
286
|
+
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
|
|
278
287
|
},
|
|
279
288
|
{
|
|
280
289
|
displayName: 'Generar informe HTML',
|
|
@@ -288,14 +297,14 @@ class SeoScanner {
|
|
|
288
297
|
name: 'useJsRendering',
|
|
289
298
|
type: 'boolean',
|
|
290
299
|
default: false,
|
|
291
|
-
description: 'Si
|
|
300
|
+
description: 'Si está activado, usa un navegador invisible (Puppeteer) para cargar la página. Necesario para webs React, Vue o Angular que renderizan meta etiquetas y contenido dinámicamente. Es más lento que la petición HTTP normal.',
|
|
292
301
|
},
|
|
293
302
|
{
|
|
294
303
|
displayName: 'Enviar resultados a API externa',
|
|
295
304
|
name: 'sendToExternalApi',
|
|
296
305
|
type: 'boolean',
|
|
297
306
|
default: false,
|
|
298
|
-
description: 'Si
|
|
307
|
+
description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
|
|
299
308
|
},
|
|
300
309
|
{
|
|
301
310
|
displayName: 'Callback URL',
|
|
@@ -303,7 +312,7 @@ class SeoScanner {
|
|
|
303
312
|
type: 'string',
|
|
304
313
|
default: '',
|
|
305
314
|
placeholder: 'http://localhost:3000/api/reports',
|
|
306
|
-
description: 'URL a la que se
|
|
315
|
+
description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
|
|
307
316
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
308
317
|
},
|
|
309
318
|
{
|
|
@@ -312,27 +321,27 @@ class SeoScanner {
|
|
|
312
321
|
type: 'string',
|
|
313
322
|
default: '',
|
|
314
323
|
placeholder: '',
|
|
315
|
-
description: 'Identificador del reporte en la
|
|
324
|
+
description: 'Identificador del reporte en la aplicación externa (se incluye en el JSON enviado). Útil si el escaneo se lanzó desde la web.',
|
|
316
325
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
317
326
|
},
|
|
318
327
|
{
|
|
319
|
-
displayName: 'API
|
|
328
|
+
displayName: 'API Token del callback',
|
|
320
329
|
name: 'apiToken',
|
|
321
330
|
type: 'string',
|
|
322
331
|
default: '',
|
|
323
332
|
typeOptions: { password: true },
|
|
324
|
-
description: '
|
|
333
|
+
description: 'Token interno para autenticar el callback de resultados (se envía como header X-API-Token).',
|
|
325
334
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
326
335
|
},
|
|
327
336
|
{
|
|
328
337
|
displayName: 'Opciones de detalle',
|
|
329
338
|
name: 'detailOptions',
|
|
330
339
|
type: 'collection',
|
|
331
|
-
placeholder: '
|
|
340
|
+
placeholder: 'Añadir opción',
|
|
332
341
|
default: {},
|
|
333
342
|
options: [
|
|
334
343
|
{
|
|
335
|
-
displayName: 'Incluir detalle de
|
|
344
|
+
displayName: 'Incluir detalle de imágenes',
|
|
336
345
|
name: 'includeImageDetails',
|
|
337
346
|
type: 'boolean',
|
|
338
347
|
default: true,
|
|
@@ -367,11 +376,11 @@ class SeoScanner {
|
|
|
367
376
|
description: 'Hacer HEAD request a enlaces para detectar 404 u otros errores (puede ralentizar)',
|
|
368
377
|
},
|
|
369
378
|
{
|
|
370
|
-
displayName: '
|
|
379
|
+
displayName: 'Máximo enlaces a comprobar',
|
|
371
380
|
name: 'maxBrokenLinksToCheck',
|
|
372
381
|
type: 'number',
|
|
373
382
|
default: 15,
|
|
374
|
-
description: '
|
|
383
|
+
description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
|
|
375
384
|
},
|
|
376
385
|
{
|
|
377
386
|
displayName: 'Comprobar contraste de colores',
|
|
@@ -388,7 +397,7 @@ class SeoScanner {
|
|
|
388
397
|
description: 'En cada fallo (p. ej. contraste) incluye el selector o etiqueta HTML del elemento afectado',
|
|
389
398
|
},
|
|
390
399
|
],
|
|
391
|
-
description: '
|
|
400
|
+
description: 'Qué detalles incluir en la salida',
|
|
392
401
|
},
|
|
393
402
|
],
|
|
394
403
|
};
|
|
@@ -404,15 +413,18 @@ class SeoScanner {
|
|
|
404
413
|
credentials = {};
|
|
405
414
|
}
|
|
406
415
|
const apiKey = incoming.apiKey || readString(credentials?.apiKey) || '';
|
|
416
|
+
const apiToken = incoming.apiToken || '';
|
|
407
417
|
const appBaseUrl = readString(credentials?.appBaseUrl) ||
|
|
408
418
|
getOriginFromUrl(incoming.callbackUrl || '') ||
|
|
409
419
|
DEFAULT_APP_BASE_URL;
|
|
410
420
|
let licenseWarning = '';
|
|
411
421
|
try {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
422
|
+
if (!apiToken) {
|
|
423
|
+
await validateApiKeyWithApp({
|
|
424
|
+
appBaseUrl,
|
|
425
|
+
apiKey,
|
|
426
|
+
});
|
|
427
|
+
}
|
|
416
428
|
}
|
|
417
429
|
catch (e) {
|
|
418
430
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -420,7 +432,7 @@ class SeoScanner {
|
|
|
420
432
|
await notifyCallbackError({
|
|
421
433
|
callbackUrl: incoming.callbackUrl || '',
|
|
422
434
|
reportId: incoming.reportId || '',
|
|
423
|
-
|
|
435
|
+
apiToken,
|
|
424
436
|
message: errorMessage,
|
|
425
437
|
}).catch(() => undefined);
|
|
426
438
|
return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
|
|
@@ -433,12 +445,12 @@ class SeoScanner {
|
|
|
433
445
|
headers: { 'Accept': 'application/json' }
|
|
434
446
|
});
|
|
435
447
|
if (!res.ok) {
|
|
436
|
-
throw new Error(`El servidor de licencias
|
|
448
|
+
throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
|
|
437
449
|
}
|
|
438
450
|
const jsonText = await res.text();
|
|
439
451
|
const data = JSON.parse(jsonText);
|
|
440
452
|
if (!data.hasOwnProperty(apiKey)) {
|
|
441
|
-
throw new Error('La licencia introducida no es
|
|
453
|
+
throw new Error('La licencia introducida no es válida.');
|
|
442
454
|
}
|
|
443
455
|
}
|
|
444
456
|
catch (e) {
|
|
@@ -519,14 +531,31 @@ class SeoScanner {
|
|
|
519
531
|
baseUrl = new URL(url).href;
|
|
520
532
|
}
|
|
521
533
|
catch {
|
|
522
|
-
return [[{ json: { error: 'URL no
|
|
534
|
+
return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
|
|
535
|
+
}
|
|
536
|
+
if (!apiToken) {
|
|
537
|
+
try {
|
|
538
|
+
await validateApiKeyWithApp({
|
|
539
|
+
appBaseUrl,
|
|
540
|
+
apiKey,
|
|
541
|
+
useApiCredits: true,
|
|
542
|
+
debitApiCredits: true,
|
|
543
|
+
apiCreditCost: 1,
|
|
544
|
+
reportId: incoming.reportId || undefined,
|
|
545
|
+
});
|
|
546
|
+
}
|
|
547
|
+
catch (e) {
|
|
548
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
549
|
+
const errorMessage = `No se pudo consumir crédito API: ${msg}`;
|
|
550
|
+
return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
|
|
551
|
+
}
|
|
523
552
|
}
|
|
524
553
|
try {
|
|
525
554
|
const { html, finalUrl, statusCode, responseTimeMs, timeToFirstByteMs, responseHeaders } = await (0, networkUtils_1.fetchPage)(baseUrl, timeoutMs, fetchOpts);
|
|
526
555
|
if (statusCode >= 400) {
|
|
527
556
|
return [[{
|
|
528
557
|
json: {
|
|
529
|
-
error: `La
|
|
558
|
+
error: `La página devolvió código ${statusCode}`,
|
|
530
559
|
statusCode,
|
|
531
560
|
url: baseUrl,
|
|
532
561
|
},
|
|
@@ -618,7 +647,7 @@ class SeoScanner {
|
|
|
618
647
|
if (mainResult.brokenLinks.length > 0) {
|
|
619
648
|
const msg = `${mainResult.brokenLinks.length} enlace(s) roto(s) detectado(s)`;
|
|
620
649
|
if (!isIgnored(msg)) {
|
|
621
|
-
const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15}
|
|
650
|
+
const blList = mainResult.brokenLinks.slice(0, 15).map(b => `${b.statusCode}: ${b.url}`).join('\n') + (mainResult.brokenLinks.length > 15 ? `\n...y ${mainResult.brokenLinks.length - 15} más` : '');
|
|
622
651
|
mainResult.problemsBySeverity.important.push({
|
|
623
652
|
message: msg,
|
|
624
653
|
recommendation: 'Corregir o eliminar los enlaces que devuelven 404 u otros errores.',
|
|
@@ -663,7 +692,7 @@ class SeoScanner {
|
|
|
663
692
|
mainResult.sitemapUrlsChecked = robotsSitemap.sitemapUrlsChecked;
|
|
664
693
|
mainResult.sitemapError = robotsSitemap.sitemapError;
|
|
665
694
|
if (robotsSitemap.robotsTxtBlocked) {
|
|
666
|
-
const msg = 'La URL
|
|
695
|
+
const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
|
|
667
696
|
if (!isIgnored(msg)) {
|
|
668
697
|
mainResult.problemsBySeverity.critical.push({
|
|
669
698
|
message: msg,
|
|
@@ -681,7 +710,7 @@ class SeoScanner {
|
|
|
681
710
|
if (!isIgnored(msg)) {
|
|
682
711
|
mainResult.problemsBySeverity.info.push({
|
|
683
712
|
message: msg,
|
|
684
|
-
recommendation: '
|
|
713
|
+
recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
|
|
685
714
|
});
|
|
686
715
|
}
|
|
687
716
|
}
|
|
@@ -732,7 +761,7 @@ class SeoScanner {
|
|
|
732
761
|
sitemapInSitemap: mainResult.sitemapInSitemap,
|
|
733
762
|
},
|
|
734
763
|
scannedUrls: 1,
|
|
735
|
-
message: `Escaneada 1
|
|
764
|
+
message: `Escaneada 1 página: ${finalUrl}`,
|
|
736
765
|
pageTextContent: mainResult.pageTextContent ?? '',
|
|
737
766
|
};
|
|
738
767
|
let internalResults = [];
|
|
@@ -755,12 +784,12 @@ class SeoScanner {
|
|
|
755
784
|
internalResults.push(result);
|
|
756
785
|
}
|
|
757
786
|
catch {
|
|
758
|
-
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la
|
|
787
|
+
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
|
|
759
788
|
}
|
|
760
789
|
}
|
|
761
790
|
output.internalPages = internalResults;
|
|
762
791
|
output.scannedUrls = 1 + internalResults.length;
|
|
763
|
-
output.message = `Escaneadas ${output.scannedUrls}
|
|
792
|
+
output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
|
|
764
793
|
if (analyzeOpts.checkBrokenLinks) {
|
|
765
794
|
const maxSiteCheck = Math.min(100, Math.max(analyzeOpts.maxBrokenLinksToCheck ?? 15, 30));
|
|
766
795
|
const seenInternal = new Set();
|
|
@@ -832,24 +861,24 @@ class SeoScanner {
|
|
|
832
861
|
dupDesc.push(p.url);
|
|
833
862
|
}
|
|
834
863
|
if (dupTitle.length > 0 || dupDesc.length > 0) {
|
|
835
|
-
const msg = `Posible contenido duplicado:
|
|
864
|
+
const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
|
|
836
865
|
if (!isIgnored(msg)) {
|
|
837
866
|
mainResult.duplicateContent = [];
|
|
838
867
|
let elementText = '';
|
|
839
868
|
if (dupTitle.length > 0) {
|
|
840
869
|
mainResult.duplicateContent.push({ type: 'title', duplicateWith: dupTitle });
|
|
841
|
-
elementText += `[
|
|
870
|
+
elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
|
|
842
871
|
}
|
|
843
872
|
if (dupDesc.length > 0) {
|
|
844
873
|
mainResult.duplicateContent.push({ type: 'description', duplicateWith: dupDesc });
|
|
845
|
-
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada
|
|
874
|
+
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
|
|
846
875
|
}
|
|
847
876
|
mainResult.problemsBySeverity.important.push({
|
|
848
877
|
message: msg,
|
|
849
|
-
recommendation: 'Usar
|
|
878
|
+
recommendation: 'Usar títulos y meta descriptions únicos por página.',
|
|
850
879
|
element: elementText.trim()
|
|
851
880
|
});
|
|
852
|
-
mainResult.issues.push('Contenido duplicado detectado (
|
|
881
|
+
mainResult.issues.push('Contenido duplicado detectado (título o description)');
|
|
853
882
|
mainResult.severitySummary.important = mainResult.problemsBySeverity.important.length;
|
|
854
883
|
}
|
|
855
884
|
}
|
|
@@ -874,12 +903,12 @@ class SeoScanner {
|
|
|
874
903
|
}
|
|
875
904
|
if (orphanPages.length > 0) {
|
|
876
905
|
mainResult.isOrphan = false;
|
|
877
|
-
const msg = `${orphanPages.length}
|
|
906
|
+
const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
|
|
878
907
|
if (!isIgnored(msg)) {
|
|
879
|
-
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15}
|
|
908
|
+
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
|
|
880
909
|
mainResult.problemsBySeverity.warning.push({
|
|
881
910
|
message: msg,
|
|
882
|
-
recommendation: '
|
|
911
|
+
recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
|
|
883
912
|
element: orphansList
|
|
884
913
|
});
|
|
885
914
|
mainResult.warnings.push(msg);
|
|
@@ -888,7 +917,7 @@ class SeoScanner {
|
|
|
888
917
|
output.summary.orphanPagesCount = orphanPages.length;
|
|
889
918
|
}
|
|
890
919
|
else {
|
|
891
|
-
mainResult.passed.push('No se detectaron
|
|
920
|
+
mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
|
|
892
921
|
output.summary.orphanPagesCount = 0;
|
|
893
922
|
}
|
|
894
923
|
}
|
|
@@ -940,12 +969,12 @@ class SeoScanner {
|
|
|
940
969
|
}
|
|
941
970
|
const invalidCross = resultObj.crossHreflang.filter(c => !c.valid);
|
|
942
971
|
if (invalidCross.length > 0) {
|
|
943
|
-
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length}
|
|
972
|
+
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
|
|
944
973
|
if (!isIgnored(msg)) {
|
|
945
974
|
const crossList = invalidCross.map(c => `- ${c.targetUrl} (${c.error})`).join('\n');
|
|
946
975
|
resultObj.problemsBySeverity.important.push({
|
|
947
976
|
message: msg,
|
|
948
|
-
recommendation: '
|
|
977
|
+
recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
|
|
949
978
|
element: crossList
|
|
950
979
|
});
|
|
951
980
|
resultObj.issues.push(msg);
|
|
@@ -953,7 +982,7 @@ class SeoScanner {
|
|
|
953
982
|
}
|
|
954
983
|
}
|
|
955
984
|
else if (resultObj.crossHreflang.length > 0) {
|
|
956
|
-
resultObj.passed.push('
|
|
985
|
+
resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
|
|
957
986
|
}
|
|
958
987
|
};
|
|
959
988
|
await verifyCrossHreflang(mainResult);
|
|
@@ -988,7 +1017,7 @@ class SeoScanner {
|
|
|
988
1017
|
if (sendToExternalApi) {
|
|
989
1018
|
let callbackUrl = '';
|
|
990
1019
|
let reportId = '';
|
|
991
|
-
let
|
|
1020
|
+
let apiTokenExt = '';
|
|
992
1021
|
try {
|
|
993
1022
|
callbackUrl = (this.getNodeParameter('callbackUrl', 0) || '').trim();
|
|
994
1023
|
}
|
|
@@ -998,15 +1027,15 @@ class SeoScanner {
|
|
|
998
1027
|
}
|
|
999
1028
|
catch { }
|
|
1000
1029
|
try {
|
|
1001
|
-
|
|
1030
|
+
apiTokenExt = (this.getNodeParameter('apiToken', 0) || '').trim();
|
|
1002
1031
|
}
|
|
1003
1032
|
catch { }
|
|
1004
1033
|
if (!callbackUrl && incoming.callbackUrl)
|
|
1005
1034
|
callbackUrl = incoming.callbackUrl;
|
|
1006
1035
|
if (!reportId && incoming.reportId)
|
|
1007
1036
|
reportId = incoming.reportId;
|
|
1008
|
-
if (!
|
|
1009
|
-
|
|
1037
|
+
if (!apiTokenExt && incoming.apiToken)
|
|
1038
|
+
apiTokenExt = incoming.apiToken;
|
|
1010
1039
|
if (callbackUrl && reportId) {
|
|
1011
1040
|
try {
|
|
1012
1041
|
const callbackBody = {
|
|
@@ -1017,8 +1046,10 @@ class SeoScanner {
|
|
|
1017
1046
|
const headers = {
|
|
1018
1047
|
'Content-Type': 'application/json',
|
|
1019
1048
|
};
|
|
1020
|
-
if (
|
|
1021
|
-
headers['X-API-
|
|
1049
|
+
if (apiTokenExt) {
|
|
1050
|
+
headers['X-API-Token'] = apiTokenExt;
|
|
1051
|
+
callbackBody.apiToken = apiTokenExt;
|
|
1052
|
+
}
|
|
1022
1053
|
const callbackResponse = await fetch(callbackUrl, {
|
|
1023
1054
|
method: 'POST',
|
|
1024
1055
|
headers,
|
|
@@ -1026,11 +1057,11 @@ class SeoScanner {
|
|
|
1026
1057
|
});
|
|
1027
1058
|
if (!callbackResponse.ok) {
|
|
1028
1059
|
const responseText = await callbackResponse.text().catch(() => '');
|
|
1029
|
-
throw new Error(`La API externa
|
|
1060
|
+
throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
|
|
1030
1061
|
}
|
|
1031
1062
|
output.externalApiSent = true;
|
|
1032
1063
|
output.externalApiUrl = callbackUrl;
|
|
1033
|
-
output.externalApiKeyUsed = Boolean(
|
|
1064
|
+
output.externalApiKeyUsed = Boolean(apiTokenExt);
|
|
1034
1065
|
}
|
|
1035
1066
|
catch (callbackErr) {
|
|
1036
1067
|
output.externalApiSent = false;
|
|
@@ -1044,7 +1075,7 @@ class SeoScanner {
|
|
|
1044
1075
|
const msg = e instanceof Error ? e.message : String(e);
|
|
1045
1076
|
return [[{
|
|
1046
1077
|
json: {
|
|
1047
|
-
error: 'No se pudo escanear la
|
|
1078
|
+
error: 'No se pudo escanear la página',
|
|
1048
1079
|
detail: msg,
|
|
1049
1080
|
url: baseUrl,
|
|
1050
1081
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n8n-nodes-seo-scanner",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.25",
|
|
4
4
|
"description": "Nodo n8n: escaneo SEO técnico completo de una página web, con opción de escanear enlaces internos, informe HTML tipo dashboard, detección de CMS/plugins, crawl extendido (DNS, CDN, SSL, analytics).",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|