n8n-nodes-seo-scanner 1.2.23 → 1.2.24
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;
|
|
@@ -137,15 +137,18 @@ async function notifyCallbackError(params) {
|
|
|
137
137
|
if (!params.callbackUrl || !params.reportId)
|
|
138
138
|
return;
|
|
139
139
|
const headers = { 'Content-Type': 'application/json' };
|
|
140
|
-
if (params.
|
|
141
|
-
headers['X-API-
|
|
140
|
+
if (params.apiToken)
|
|
141
|
+
headers['X-API-Token'] = params.apiToken;
|
|
142
|
+
const body = {
|
|
143
|
+
reportId: params.reportId,
|
|
144
|
+
error: params.message,
|
|
145
|
+
};
|
|
146
|
+
if (params.apiToken)
|
|
147
|
+
body.apiToken = params.apiToken;
|
|
142
148
|
await fetch(params.callbackUrl, {
|
|
143
149
|
method: 'POST',
|
|
144
150
|
headers,
|
|
145
|
-
body: JSON.stringify(
|
|
146
|
-
reportId: params.reportId,
|
|
147
|
-
error: params.message,
|
|
148
|
-
}),
|
|
151
|
+
body: JSON.stringify(body),
|
|
149
152
|
});
|
|
150
153
|
}
|
|
151
154
|
function getIncomingWebhookPayload(input) {
|
|
@@ -162,6 +165,8 @@ function getIncomingWebhookPayload(input) {
|
|
|
162
165
|
apiKey: readString(source.apiKey) ||
|
|
163
166
|
readHeader(headers, 'x-api-key') ||
|
|
164
167
|
readBearerToken(authorization),
|
|
168
|
+
apiToken: readString(source.apiToken) ||
|
|
169
|
+
readHeader(headers, 'x-api-token'),
|
|
165
170
|
scanInternalLinks: readBoolean(source.allsite) ?? readBoolean(source.scanInternalLinks),
|
|
166
171
|
maxInternalUrls: readNumber(source.maxInternalUrls),
|
|
167
172
|
};
|
|
@@ -174,10 +179,10 @@ class SeoScanner {
|
|
|
174
179
|
icon: 'file:seoScanner.svg',
|
|
175
180
|
group: ['transform'],
|
|
176
181
|
version: 1,
|
|
177
|
-
description: 'Escaneo SEO
|
|
182
|
+
description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
|
|
178
183
|
usableAsTool: {
|
|
179
184
|
replacements: {
|
|
180
|
-
description: 'Herramienta para escaneo SEO
|
|
185
|
+
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
186
|
},
|
|
182
187
|
},
|
|
183
188
|
defaults: { name: 'SEO UOPIX' },
|
|
@@ -191,59 +196,59 @@ class SeoScanner {
|
|
|
191
196
|
],
|
|
192
197
|
properties: [
|
|
193
198
|
{
|
|
194
|
-
displayName: 'URL de la
|
|
199
|
+
displayName: 'URL de la página',
|
|
195
200
|
name: 'url',
|
|
196
201
|
type: 'string',
|
|
197
202
|
default: '',
|
|
198
203
|
placeholder: 'https://example.com/pagina',
|
|
199
|
-
description: 'URL absoluta de la
|
|
204
|
+
description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
|
|
200
205
|
},
|
|
201
206
|
{
|
|
202
207
|
displayName: 'Escanear todo el sitio',
|
|
203
208
|
name: 'scanInternalLinks',
|
|
204
209
|
type: 'boolean',
|
|
205
210
|
default: false,
|
|
206
|
-
description: 'Si
|
|
211
|
+
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
212
|
},
|
|
208
213
|
{
|
|
209
|
-
displayName: '
|
|
214
|
+
displayName: 'Límite de páginas a escanear',
|
|
210
215
|
name: 'maxInternalUrls',
|
|
211
216
|
type: 'number',
|
|
212
217
|
default: 20,
|
|
213
218
|
typeOptions: { minValue: 1, maxValue: 100 },
|
|
214
|
-
description: '
|
|
219
|
+
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
220
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
216
221
|
},
|
|
217
222
|
{
|
|
218
|
-
displayName: 'Ignorar Fallos (Uno por
|
|
223
|
+
displayName: 'Ignorar Fallos (Uno por línea)',
|
|
219
224
|
name: 'ignoredIssues',
|
|
220
225
|
type: 'string',
|
|
221
226
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
222
227
|
default: '',
|
|
223
|
-
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrar
|
|
228
|
+
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
|
|
224
229
|
},
|
|
225
230
|
{
|
|
226
|
-
displayName: 'Ignorar
|
|
231
|
+
displayName: 'Ignorar Páginas (Una por línea)',
|
|
227
232
|
name: 'ignoredPages',
|
|
228
233
|
type: 'string',
|
|
229
234
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
230
235
|
default: '',
|
|
231
|
-
description: 'Fragmentos de URL que no deseas escanear.
|
|
236
|
+
description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
|
|
232
237
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
233
238
|
},
|
|
234
239
|
{
|
|
235
|
-
displayName: 'Timeout por
|
|
240
|
+
displayName: 'Timeout por página (segundos)',
|
|
236
241
|
name: 'timeoutSeconds',
|
|
237
242
|
type: 'number',
|
|
238
243
|
default: 15,
|
|
239
|
-
description: 'Tiempo
|
|
244
|
+
description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
|
|
240
245
|
},
|
|
241
246
|
{
|
|
242
247
|
displayName: 'User-Agent personalizado',
|
|
243
248
|
name: 'customUserAgent',
|
|
244
249
|
type: 'boolean',
|
|
245
250
|
default: false,
|
|
246
|
-
description: 'Si
|
|
251
|
+
description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
|
|
247
252
|
},
|
|
248
253
|
{
|
|
249
254
|
displayName: 'User-Agent',
|
|
@@ -251,7 +256,7 @@ class SeoScanner {
|
|
|
251
256
|
type: 'string',
|
|
252
257
|
default: '',
|
|
253
258
|
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"
|
|
259
|
+
description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
|
|
255
260
|
displayOptions: { show: { customUserAgent: [true] } },
|
|
256
261
|
},
|
|
257
262
|
{
|
|
@@ -259,7 +264,7 @@ class SeoScanner {
|
|
|
259
264
|
name: 'simulateGooglebot',
|
|
260
265
|
type: 'boolean',
|
|
261
266
|
default: false,
|
|
262
|
-
description: 'Usa el User-Agent de Googlebot para ver la
|
|
267
|
+
description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
|
|
263
268
|
},
|
|
264
269
|
{
|
|
265
270
|
displayName: 'Seguir redirecciones',
|
|
@@ -274,7 +279,7 @@ class SeoScanner {
|
|
|
274
279
|
type: 'string',
|
|
275
280
|
default: '',
|
|
276
281
|
placeholder: 'es-ES,es;q=0.9,en;q=0.8',
|
|
277
|
-
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto.
|
|
282
|
+
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
|
|
278
283
|
},
|
|
279
284
|
{
|
|
280
285
|
displayName: 'Generar informe HTML',
|
|
@@ -288,14 +293,14 @@ class SeoScanner {
|
|
|
288
293
|
name: 'useJsRendering',
|
|
289
294
|
type: 'boolean',
|
|
290
295
|
default: false,
|
|
291
|
-
description: 'Si
|
|
296
|
+
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
297
|
},
|
|
293
298
|
{
|
|
294
299
|
displayName: 'Enviar resultados a API externa',
|
|
295
300
|
name: 'sendToExternalApi',
|
|
296
301
|
type: 'boolean',
|
|
297
302
|
default: false,
|
|
298
|
-
description: 'Si
|
|
303
|
+
description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
|
|
299
304
|
},
|
|
300
305
|
{
|
|
301
306
|
displayName: 'Callback URL',
|
|
@@ -303,7 +308,7 @@ class SeoScanner {
|
|
|
303
308
|
type: 'string',
|
|
304
309
|
default: '',
|
|
305
310
|
placeholder: 'http://localhost:3000/api/reports',
|
|
306
|
-
description: 'URL a la que se
|
|
311
|
+
description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
|
|
307
312
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
308
313
|
},
|
|
309
314
|
{
|
|
@@ -312,7 +317,7 @@ class SeoScanner {
|
|
|
312
317
|
type: 'string',
|
|
313
318
|
default: '',
|
|
314
319
|
placeholder: '',
|
|
315
|
-
description: 'Identificador del reporte en la
|
|
320
|
+
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
321
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
317
322
|
},
|
|
318
323
|
{
|
|
@@ -328,11 +333,11 @@ class SeoScanner {
|
|
|
328
333
|
displayName: 'Opciones de detalle',
|
|
329
334
|
name: 'detailOptions',
|
|
330
335
|
type: 'collection',
|
|
331
|
-
placeholder: '
|
|
336
|
+
placeholder: 'Añadir opción',
|
|
332
337
|
default: {},
|
|
333
338
|
options: [
|
|
334
339
|
{
|
|
335
|
-
displayName: 'Incluir detalle de
|
|
340
|
+
displayName: 'Incluir detalle de imágenes',
|
|
336
341
|
name: 'includeImageDetails',
|
|
337
342
|
type: 'boolean',
|
|
338
343
|
default: true,
|
|
@@ -367,11 +372,11 @@ class SeoScanner {
|
|
|
367
372
|
description: 'Hacer HEAD request a enlaces para detectar 404 u otros errores (puede ralentizar)',
|
|
368
373
|
},
|
|
369
374
|
{
|
|
370
|
-
displayName: '
|
|
375
|
+
displayName: 'Máximo enlaces a comprobar',
|
|
371
376
|
name: 'maxBrokenLinksToCheck',
|
|
372
377
|
type: 'number',
|
|
373
378
|
default: 15,
|
|
374
|
-
description: '
|
|
379
|
+
description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
|
|
375
380
|
},
|
|
376
381
|
{
|
|
377
382
|
displayName: 'Comprobar contraste de colores',
|
|
@@ -388,7 +393,7 @@ class SeoScanner {
|
|
|
388
393
|
description: 'En cada fallo (p. ej. contraste) incluye el selector o etiqueta HTML del elemento afectado',
|
|
389
394
|
},
|
|
390
395
|
],
|
|
391
|
-
description: '
|
|
396
|
+
description: 'Qué detalles incluir en la salida',
|
|
392
397
|
},
|
|
393
398
|
],
|
|
394
399
|
};
|
|
@@ -404,15 +409,18 @@ class SeoScanner {
|
|
|
404
409
|
credentials = {};
|
|
405
410
|
}
|
|
406
411
|
const apiKey = incoming.apiKey || readString(credentials?.apiKey) || '';
|
|
412
|
+
const apiToken = incoming.apiToken || '';
|
|
407
413
|
const appBaseUrl = readString(credentials?.appBaseUrl) ||
|
|
408
414
|
getOriginFromUrl(incoming.callbackUrl || '') ||
|
|
409
415
|
DEFAULT_APP_BASE_URL;
|
|
410
416
|
let licenseWarning = '';
|
|
411
417
|
try {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
418
|
+
if (!apiToken) {
|
|
419
|
+
await validateApiKeyWithApp({
|
|
420
|
+
appBaseUrl,
|
|
421
|
+
apiKey,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
416
424
|
}
|
|
417
425
|
catch (e) {
|
|
418
426
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -420,7 +428,7 @@ class SeoScanner {
|
|
|
420
428
|
await notifyCallbackError({
|
|
421
429
|
callbackUrl: incoming.callbackUrl || '',
|
|
422
430
|
reportId: incoming.reportId || '',
|
|
423
|
-
|
|
431
|
+
apiToken,
|
|
424
432
|
message: errorMessage,
|
|
425
433
|
}).catch(() => undefined);
|
|
426
434
|
return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
|
|
@@ -433,12 +441,12 @@ class SeoScanner {
|
|
|
433
441
|
headers: { 'Accept': 'application/json' }
|
|
434
442
|
});
|
|
435
443
|
if (!res.ok) {
|
|
436
|
-
throw new Error(`El servidor de licencias
|
|
444
|
+
throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
|
|
437
445
|
}
|
|
438
446
|
const jsonText = await res.text();
|
|
439
447
|
const data = JSON.parse(jsonText);
|
|
440
448
|
if (!data.hasOwnProperty(apiKey)) {
|
|
441
|
-
throw new Error('La licencia introducida no es
|
|
449
|
+
throw new Error('La licencia introducida no es válida.');
|
|
442
450
|
}
|
|
443
451
|
}
|
|
444
452
|
catch (e) {
|
|
@@ -519,14 +527,14 @@ class SeoScanner {
|
|
|
519
527
|
baseUrl = new URL(url).href;
|
|
520
528
|
}
|
|
521
529
|
catch {
|
|
522
|
-
return [[{ json: { error: 'URL no
|
|
530
|
+
return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
|
|
523
531
|
}
|
|
524
532
|
try {
|
|
525
533
|
const { html, finalUrl, statusCode, responseTimeMs, timeToFirstByteMs, responseHeaders } = await (0, networkUtils_1.fetchPage)(baseUrl, timeoutMs, fetchOpts);
|
|
526
534
|
if (statusCode >= 400) {
|
|
527
535
|
return [[{
|
|
528
536
|
json: {
|
|
529
|
-
error: `La
|
|
537
|
+
error: `La página devolvió código ${statusCode}`,
|
|
530
538
|
statusCode,
|
|
531
539
|
url: baseUrl,
|
|
532
540
|
},
|
|
@@ -618,7 +626,7 @@ class SeoScanner {
|
|
|
618
626
|
if (mainResult.brokenLinks.length > 0) {
|
|
619
627
|
const msg = `${mainResult.brokenLinks.length} enlace(s) roto(s) detectado(s)`;
|
|
620
628
|
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}
|
|
629
|
+
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
630
|
mainResult.problemsBySeverity.important.push({
|
|
623
631
|
message: msg,
|
|
624
632
|
recommendation: 'Corregir o eliminar los enlaces que devuelven 404 u otros errores.',
|
|
@@ -663,7 +671,7 @@ class SeoScanner {
|
|
|
663
671
|
mainResult.sitemapUrlsChecked = robotsSitemap.sitemapUrlsChecked;
|
|
664
672
|
mainResult.sitemapError = robotsSitemap.sitemapError;
|
|
665
673
|
if (robotsSitemap.robotsTxtBlocked) {
|
|
666
|
-
const msg = 'La URL
|
|
674
|
+
const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
|
|
667
675
|
if (!isIgnored(msg)) {
|
|
668
676
|
mainResult.problemsBySeverity.critical.push({
|
|
669
677
|
message: msg,
|
|
@@ -681,7 +689,7 @@ class SeoScanner {
|
|
|
681
689
|
if (!isIgnored(msg)) {
|
|
682
690
|
mainResult.problemsBySeverity.info.push({
|
|
683
691
|
message: msg,
|
|
684
|
-
recommendation: '
|
|
692
|
+
recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
|
|
685
693
|
});
|
|
686
694
|
}
|
|
687
695
|
}
|
|
@@ -732,7 +740,7 @@ class SeoScanner {
|
|
|
732
740
|
sitemapInSitemap: mainResult.sitemapInSitemap,
|
|
733
741
|
},
|
|
734
742
|
scannedUrls: 1,
|
|
735
|
-
message: `Escaneada 1
|
|
743
|
+
message: `Escaneada 1 página: ${finalUrl}`,
|
|
736
744
|
pageTextContent: mainResult.pageTextContent ?? '',
|
|
737
745
|
};
|
|
738
746
|
let internalResults = [];
|
|
@@ -755,12 +763,12 @@ class SeoScanner {
|
|
|
755
763
|
internalResults.push(result);
|
|
756
764
|
}
|
|
757
765
|
catch {
|
|
758
|
-
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la
|
|
766
|
+
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
|
|
759
767
|
}
|
|
760
768
|
}
|
|
761
769
|
output.internalPages = internalResults;
|
|
762
770
|
output.scannedUrls = 1 + internalResults.length;
|
|
763
|
-
output.message = `Escaneadas ${output.scannedUrls}
|
|
771
|
+
output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
|
|
764
772
|
if (analyzeOpts.checkBrokenLinks) {
|
|
765
773
|
const maxSiteCheck = Math.min(100, Math.max(analyzeOpts.maxBrokenLinksToCheck ?? 15, 30));
|
|
766
774
|
const seenInternal = new Set();
|
|
@@ -832,24 +840,24 @@ class SeoScanner {
|
|
|
832
840
|
dupDesc.push(p.url);
|
|
833
841
|
}
|
|
834
842
|
if (dupTitle.length > 0 || dupDesc.length > 0) {
|
|
835
|
-
const msg = `Posible contenido duplicado:
|
|
843
|
+
const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
|
|
836
844
|
if (!isIgnored(msg)) {
|
|
837
845
|
mainResult.duplicateContent = [];
|
|
838
846
|
let elementText = '';
|
|
839
847
|
if (dupTitle.length > 0) {
|
|
840
848
|
mainResult.duplicateContent.push({ type: 'title', duplicateWith: dupTitle });
|
|
841
|
-
elementText += `[
|
|
849
|
+
elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
|
|
842
850
|
}
|
|
843
851
|
if (dupDesc.length > 0) {
|
|
844
852
|
mainResult.duplicateContent.push({ type: 'description', duplicateWith: dupDesc });
|
|
845
|
-
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada
|
|
853
|
+
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
|
|
846
854
|
}
|
|
847
855
|
mainResult.problemsBySeverity.important.push({
|
|
848
856
|
message: msg,
|
|
849
|
-
recommendation: 'Usar
|
|
857
|
+
recommendation: 'Usar títulos y meta descriptions únicos por página.',
|
|
850
858
|
element: elementText.trim()
|
|
851
859
|
});
|
|
852
|
-
mainResult.issues.push('Contenido duplicado detectado (
|
|
860
|
+
mainResult.issues.push('Contenido duplicado detectado (título o description)');
|
|
853
861
|
mainResult.severitySummary.important = mainResult.problemsBySeverity.important.length;
|
|
854
862
|
}
|
|
855
863
|
}
|
|
@@ -874,12 +882,12 @@ class SeoScanner {
|
|
|
874
882
|
}
|
|
875
883
|
if (orphanPages.length > 0) {
|
|
876
884
|
mainResult.isOrphan = false;
|
|
877
|
-
const msg = `${orphanPages.length}
|
|
885
|
+
const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
|
|
878
886
|
if (!isIgnored(msg)) {
|
|
879
|
-
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15}
|
|
887
|
+
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
|
|
880
888
|
mainResult.problemsBySeverity.warning.push({
|
|
881
889
|
message: msg,
|
|
882
|
-
recommendation: '
|
|
890
|
+
recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
|
|
883
891
|
element: orphansList
|
|
884
892
|
});
|
|
885
893
|
mainResult.warnings.push(msg);
|
|
@@ -888,7 +896,7 @@ class SeoScanner {
|
|
|
888
896
|
output.summary.orphanPagesCount = orphanPages.length;
|
|
889
897
|
}
|
|
890
898
|
else {
|
|
891
|
-
mainResult.passed.push('No se detectaron
|
|
899
|
+
mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
|
|
892
900
|
output.summary.orphanPagesCount = 0;
|
|
893
901
|
}
|
|
894
902
|
}
|
|
@@ -940,12 +948,12 @@ class SeoScanner {
|
|
|
940
948
|
}
|
|
941
949
|
const invalidCross = resultObj.crossHreflang.filter(c => !c.valid);
|
|
942
950
|
if (invalidCross.length > 0) {
|
|
943
|
-
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length}
|
|
951
|
+
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
|
|
944
952
|
if (!isIgnored(msg)) {
|
|
945
953
|
const crossList = invalidCross.map(c => `- ${c.targetUrl} (${c.error})`).join('\n');
|
|
946
954
|
resultObj.problemsBySeverity.important.push({
|
|
947
955
|
message: msg,
|
|
948
|
-
recommendation: '
|
|
956
|
+
recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
|
|
949
957
|
element: crossList
|
|
950
958
|
});
|
|
951
959
|
resultObj.issues.push(msg);
|
|
@@ -953,7 +961,7 @@ class SeoScanner {
|
|
|
953
961
|
}
|
|
954
962
|
}
|
|
955
963
|
else if (resultObj.crossHreflang.length > 0) {
|
|
956
|
-
resultObj.passed.push('
|
|
964
|
+
resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
|
|
957
965
|
}
|
|
958
966
|
};
|
|
959
967
|
await verifyCrossHreflang(mainResult);
|
|
@@ -988,7 +996,7 @@ class SeoScanner {
|
|
|
988
996
|
if (sendToExternalApi) {
|
|
989
997
|
let callbackUrl = '';
|
|
990
998
|
let reportId = '';
|
|
991
|
-
let
|
|
999
|
+
let apiTokenExt = '';
|
|
992
1000
|
try {
|
|
993
1001
|
callbackUrl = (this.getNodeParameter('callbackUrl', 0) || '').trim();
|
|
994
1002
|
}
|
|
@@ -998,15 +1006,15 @@ class SeoScanner {
|
|
|
998
1006
|
}
|
|
999
1007
|
catch { }
|
|
1000
1008
|
try {
|
|
1001
|
-
|
|
1009
|
+
apiTokenExt = (this.getNodeParameter('apiToken', 0) || '').trim();
|
|
1002
1010
|
}
|
|
1003
1011
|
catch { }
|
|
1004
1012
|
if (!callbackUrl && incoming.callbackUrl)
|
|
1005
1013
|
callbackUrl = incoming.callbackUrl;
|
|
1006
1014
|
if (!reportId && incoming.reportId)
|
|
1007
1015
|
reportId = incoming.reportId;
|
|
1008
|
-
if (!
|
|
1009
|
-
|
|
1016
|
+
if (!apiTokenExt && incoming.apiToken)
|
|
1017
|
+
apiTokenExt = incoming.apiToken;
|
|
1010
1018
|
if (callbackUrl && reportId) {
|
|
1011
1019
|
try {
|
|
1012
1020
|
const callbackBody = {
|
|
@@ -1017,8 +1025,10 @@ class SeoScanner {
|
|
|
1017
1025
|
const headers = {
|
|
1018
1026
|
'Content-Type': 'application/json',
|
|
1019
1027
|
};
|
|
1020
|
-
if (
|
|
1021
|
-
headers['X-API-
|
|
1028
|
+
if (apiTokenExt) {
|
|
1029
|
+
headers['X-API-Token'] = apiTokenExt;
|
|
1030
|
+
callbackBody.apiToken = apiTokenExt;
|
|
1031
|
+
}
|
|
1022
1032
|
const callbackResponse = await fetch(callbackUrl, {
|
|
1023
1033
|
method: 'POST',
|
|
1024
1034
|
headers,
|
|
@@ -1026,11 +1036,11 @@ class SeoScanner {
|
|
|
1026
1036
|
});
|
|
1027
1037
|
if (!callbackResponse.ok) {
|
|
1028
1038
|
const responseText = await callbackResponse.text().catch(() => '');
|
|
1029
|
-
throw new Error(`La API externa
|
|
1039
|
+
throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
|
|
1030
1040
|
}
|
|
1031
1041
|
output.externalApiSent = true;
|
|
1032
1042
|
output.externalApiUrl = callbackUrl;
|
|
1033
|
-
output.externalApiKeyUsed = Boolean(
|
|
1043
|
+
output.externalApiKeyUsed = Boolean(apiTokenExt);
|
|
1034
1044
|
}
|
|
1035
1045
|
catch (callbackErr) {
|
|
1036
1046
|
output.externalApiSent = false;
|
|
@@ -1044,7 +1054,7 @@ class SeoScanner {
|
|
|
1044
1054
|
const msg = e instanceof Error ? e.message : String(e);
|
|
1045
1055
|
return [[{
|
|
1046
1056
|
json: {
|
|
1047
|
-
error: 'No se pudo escanear la
|
|
1057
|
+
error: 'No se pudo escanear la página',
|
|
1048
1058
|
detail: msg,
|
|
1049
1059
|
url: baseUrl,
|
|
1050
1060
|
},
|
|
@@ -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;
|
|
@@ -137,15 +137,18 @@ async function notifyCallbackError(params) {
|
|
|
137
137
|
if (!params.callbackUrl || !params.reportId)
|
|
138
138
|
return;
|
|
139
139
|
const headers = { 'Content-Type': 'application/json' };
|
|
140
|
-
if (params.
|
|
141
|
-
headers['X-API-
|
|
140
|
+
if (params.apiToken)
|
|
141
|
+
headers['X-API-Token'] = params.apiToken;
|
|
142
|
+
const body = {
|
|
143
|
+
reportId: params.reportId,
|
|
144
|
+
error: params.message,
|
|
145
|
+
};
|
|
146
|
+
if (params.apiToken)
|
|
147
|
+
body.apiToken = params.apiToken;
|
|
142
148
|
await fetch(params.callbackUrl, {
|
|
143
149
|
method: 'POST',
|
|
144
150
|
headers,
|
|
145
|
-
body: JSON.stringify(
|
|
146
|
-
reportId: params.reportId,
|
|
147
|
-
error: params.message,
|
|
148
|
-
}),
|
|
151
|
+
body: JSON.stringify(body),
|
|
149
152
|
});
|
|
150
153
|
}
|
|
151
154
|
function getIncomingWebhookPayload(input) {
|
|
@@ -162,6 +165,8 @@ function getIncomingWebhookPayload(input) {
|
|
|
162
165
|
apiKey: readString(source.apiKey) ||
|
|
163
166
|
readHeader(headers, 'x-api-key') ||
|
|
164
167
|
readBearerToken(authorization),
|
|
168
|
+
apiToken: readString(source.apiToken) ||
|
|
169
|
+
readHeader(headers, 'x-api-token'),
|
|
165
170
|
scanInternalLinks: readBoolean(source.allsite) ?? readBoolean(source.scanInternalLinks),
|
|
166
171
|
maxInternalUrls: readNumber(source.maxInternalUrls),
|
|
167
172
|
};
|
|
@@ -174,10 +179,10 @@ class SeoScanner {
|
|
|
174
179
|
icon: 'file:seoScanner.svg',
|
|
175
180
|
group: ['transform'],
|
|
176
181
|
version: 1,
|
|
177
|
-
description: 'Escaneo SEO
|
|
182
|
+
description: 'Escaneo SEO técnico completo de una página web. Opción de escanear también enlaces internos.',
|
|
178
183
|
usableAsTool: {
|
|
179
184
|
replacements: {
|
|
180
|
-
description: 'Herramienta para escaneo SEO
|
|
185
|
+
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
186
|
},
|
|
182
187
|
},
|
|
183
188
|
defaults: { name: 'SEO UOPIX' },
|
|
@@ -191,59 +196,59 @@ class SeoScanner {
|
|
|
191
196
|
],
|
|
192
197
|
properties: [
|
|
193
198
|
{
|
|
194
|
-
displayName: 'URL de la
|
|
199
|
+
displayName: 'URL de la página',
|
|
195
200
|
name: 'url',
|
|
196
201
|
type: 'string',
|
|
197
202
|
default: '',
|
|
198
203
|
placeholder: 'https://example.com/pagina',
|
|
199
|
-
description: 'URL absoluta de la
|
|
204
|
+
description: 'URL absoluta de la página a escanear (ej: https://example.com/pagina)',
|
|
200
205
|
},
|
|
201
206
|
{
|
|
202
207
|
displayName: 'Escanear todo el sitio',
|
|
203
208
|
name: 'scanInternalLinks',
|
|
204
209
|
type: 'boolean',
|
|
205
210
|
default: false,
|
|
206
|
-
description: 'Si
|
|
211
|
+
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
212
|
},
|
|
208
213
|
{
|
|
209
|
-
displayName: '
|
|
214
|
+
displayName: 'Límite de páginas a escanear',
|
|
210
215
|
name: 'maxInternalUrls',
|
|
211
216
|
type: 'number',
|
|
212
217
|
default: 20,
|
|
213
218
|
typeOptions: { minValue: 1, maxValue: 100 },
|
|
214
|
-
description: '
|
|
219
|
+
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
220
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
216
221
|
},
|
|
217
222
|
{
|
|
218
|
-
displayName: 'Ignorar Fallos (Uno por
|
|
223
|
+
displayName: 'Ignorar Fallos (Uno por línea)',
|
|
219
224
|
name: 'ignoredIssues',
|
|
220
225
|
type: 'string',
|
|
221
226
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
222
227
|
default: '',
|
|
223
|
-
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrar
|
|
228
|
+
description: 'Textos de los errores que deseas ignorar. Si el mensaje del error contiene alguno de estos textos, no se mostrará.',
|
|
224
229
|
},
|
|
225
230
|
{
|
|
226
|
-
displayName: 'Ignorar
|
|
231
|
+
displayName: 'Ignorar Páginas (Una por línea)',
|
|
227
232
|
name: 'ignoredPages',
|
|
228
233
|
type: 'string',
|
|
229
234
|
typeOptions: { alwaysOpenEditWindow: true },
|
|
230
235
|
default: '',
|
|
231
|
-
description: 'Fragmentos de URL que no deseas escanear.
|
|
236
|
+
description: 'Fragmentos de URL que no deseas escanear. Útil para excluir /tags/, /author/, etc.',
|
|
232
237
|
displayOptions: { show: { scanInternalLinks: [true] } },
|
|
233
238
|
},
|
|
234
239
|
{
|
|
235
|
-
displayName: 'Timeout por
|
|
240
|
+
displayName: 'Timeout por página (segundos)',
|
|
236
241
|
name: 'timeoutSeconds',
|
|
237
242
|
type: 'number',
|
|
238
243
|
default: 15,
|
|
239
|
-
description: 'Tiempo
|
|
244
|
+
description: 'Tiempo máximo de espera por cada página antes de cancelar (5-60)',
|
|
240
245
|
},
|
|
241
246
|
{
|
|
242
247
|
displayName: 'User-Agent personalizado',
|
|
243
248
|
name: 'customUserAgent',
|
|
244
249
|
type: 'boolean',
|
|
245
250
|
default: false,
|
|
246
|
-
description: 'Si
|
|
251
|
+
description: 'Si está activado, usa el User-Agent indicado en el campo siguiente en lugar del navegador por defecto',
|
|
247
252
|
},
|
|
248
253
|
{
|
|
249
254
|
displayName: 'User-Agent',
|
|
@@ -251,7 +256,7 @@ class SeoScanner {
|
|
|
251
256
|
type: 'string',
|
|
252
257
|
default: '',
|
|
253
258
|
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"
|
|
259
|
+
description: 'Cadena User-Agent a enviar en las peticiones HTTP. Solo aplica si "User-Agent personalizado" está activado.',
|
|
255
260
|
displayOptions: { show: { customUserAgent: [true] } },
|
|
256
261
|
},
|
|
257
262
|
{
|
|
@@ -259,7 +264,7 @@ class SeoScanner {
|
|
|
259
264
|
name: 'simulateGooglebot',
|
|
260
265
|
type: 'boolean',
|
|
261
266
|
default: false,
|
|
262
|
-
description: 'Usa el User-Agent de Googlebot para ver la
|
|
267
|
+
description: 'Usa el User-Agent de Googlebot para ver la página como la vería el crawler de Google',
|
|
263
268
|
},
|
|
264
269
|
{
|
|
265
270
|
displayName: 'Seguir redirecciones',
|
|
@@ -274,7 +279,7 @@ class SeoScanner {
|
|
|
274
279
|
type: 'string',
|
|
275
280
|
default: '',
|
|
276
281
|
placeholder: 'es-ES,es;q=0.9,en;q=0.8',
|
|
277
|
-
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto.
|
|
282
|
+
description: 'Cabecera Accept-Language para solicitar contenido en un idioma concreto. Vacío = no enviar.',
|
|
278
283
|
},
|
|
279
284
|
{
|
|
280
285
|
displayName: 'Generar informe HTML',
|
|
@@ -288,14 +293,14 @@ class SeoScanner {
|
|
|
288
293
|
name: 'useJsRendering',
|
|
289
294
|
type: 'boolean',
|
|
290
295
|
default: false,
|
|
291
|
-
description: 'Si
|
|
296
|
+
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
297
|
},
|
|
293
298
|
{
|
|
294
299
|
displayName: 'Enviar resultados a API externa',
|
|
295
300
|
name: 'sendToExternalApi',
|
|
296
301
|
type: 'boolean',
|
|
297
302
|
default: false,
|
|
298
|
-
description: 'Si
|
|
303
|
+
description: 'Si está activado, al terminar el escaneo se enviarán los resultados a una URL externa (API REST).',
|
|
299
304
|
},
|
|
300
305
|
{
|
|
301
306
|
displayName: 'Callback URL',
|
|
@@ -303,7 +308,7 @@ class SeoScanner {
|
|
|
303
308
|
type: 'string',
|
|
304
309
|
default: '',
|
|
305
310
|
placeholder: 'http://localhost:3000/api/reports',
|
|
306
|
-
description: 'URL a la que se
|
|
311
|
+
description: 'URL a la que se enviará un POST con los resultados del escaneo (JSON). Se enviará el reportId, data y htmlReport.',
|
|
307
312
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
308
313
|
},
|
|
309
314
|
{
|
|
@@ -312,7 +317,7 @@ class SeoScanner {
|
|
|
312
317
|
type: 'string',
|
|
313
318
|
default: '',
|
|
314
319
|
placeholder: '',
|
|
315
|
-
description: 'Identificador del reporte en la
|
|
320
|
+
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
321
|
displayOptions: { show: { sendToExternalApi: [true] } },
|
|
317
322
|
},
|
|
318
323
|
{
|
|
@@ -328,11 +333,11 @@ class SeoScanner {
|
|
|
328
333
|
displayName: 'Opciones de detalle',
|
|
329
334
|
name: 'detailOptions',
|
|
330
335
|
type: 'collection',
|
|
331
|
-
placeholder: '
|
|
336
|
+
placeholder: 'Añadir opción',
|
|
332
337
|
default: {},
|
|
333
338
|
options: [
|
|
334
339
|
{
|
|
335
|
-
displayName: 'Incluir detalle de
|
|
340
|
+
displayName: 'Incluir detalle de imágenes',
|
|
336
341
|
name: 'includeImageDetails',
|
|
337
342
|
type: 'boolean',
|
|
338
343
|
default: true,
|
|
@@ -367,11 +372,11 @@ class SeoScanner {
|
|
|
367
372
|
description: 'Hacer HEAD request a enlaces para detectar 404 u otros errores (puede ralentizar)',
|
|
368
373
|
},
|
|
369
374
|
{
|
|
370
|
-
displayName: '
|
|
375
|
+
displayName: 'Máximo enlaces a comprobar',
|
|
371
376
|
name: 'maxBrokenLinksToCheck',
|
|
372
377
|
type: 'number',
|
|
373
378
|
default: 15,
|
|
374
|
-
description: '
|
|
379
|
+
description: 'Límite de enlaces a verificar (internos + externos). Solo aplica si "Comprobar enlaces rotos" está activo.',
|
|
375
380
|
},
|
|
376
381
|
{
|
|
377
382
|
displayName: 'Comprobar contraste de colores',
|
|
@@ -388,7 +393,7 @@ class SeoScanner {
|
|
|
388
393
|
description: 'En cada fallo (p. ej. contraste) incluye el selector o etiqueta HTML del elemento afectado',
|
|
389
394
|
},
|
|
390
395
|
],
|
|
391
|
-
description: '
|
|
396
|
+
description: 'Qué detalles incluir en la salida',
|
|
392
397
|
},
|
|
393
398
|
],
|
|
394
399
|
};
|
|
@@ -404,15 +409,18 @@ class SeoScanner {
|
|
|
404
409
|
credentials = {};
|
|
405
410
|
}
|
|
406
411
|
const apiKey = incoming.apiKey || readString(credentials?.apiKey) || '';
|
|
412
|
+
const apiToken = incoming.apiToken || '';
|
|
407
413
|
const appBaseUrl = readString(credentials?.appBaseUrl) ||
|
|
408
414
|
getOriginFromUrl(incoming.callbackUrl || '') ||
|
|
409
415
|
DEFAULT_APP_BASE_URL;
|
|
410
416
|
let licenseWarning = '';
|
|
411
417
|
try {
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
418
|
+
if (!apiToken) {
|
|
419
|
+
await validateApiKeyWithApp({
|
|
420
|
+
appBaseUrl,
|
|
421
|
+
apiKey,
|
|
422
|
+
});
|
|
423
|
+
}
|
|
416
424
|
}
|
|
417
425
|
catch (e) {
|
|
418
426
|
const msg = e instanceof Error ? e.message : String(e);
|
|
@@ -420,7 +428,7 @@ class SeoScanner {
|
|
|
420
428
|
await notifyCallbackError({
|
|
421
429
|
callbackUrl: incoming.callbackUrl || '',
|
|
422
430
|
reportId: incoming.reportId || '',
|
|
423
|
-
|
|
431
|
+
apiToken,
|
|
424
432
|
message: errorMessage,
|
|
425
433
|
}).catch(() => undefined);
|
|
426
434
|
return [[{ json: { error: errorMessage, licenseValid: false }, pairedItem: { item: 0 } }]];
|
|
@@ -433,12 +441,12 @@ class SeoScanner {
|
|
|
433
441
|
headers: { 'Accept': 'application/json' }
|
|
434
442
|
});
|
|
435
443
|
if (!res.ok) {
|
|
436
|
-
throw new Error(`El servidor de licencias
|
|
444
|
+
throw new Error(`El servidor de licencias devolvió error HTTP ${res.status}`);
|
|
437
445
|
}
|
|
438
446
|
const jsonText = await res.text();
|
|
439
447
|
const data = JSON.parse(jsonText);
|
|
440
448
|
if (!data.hasOwnProperty(apiKey)) {
|
|
441
|
-
throw new Error('La licencia introducida no es
|
|
449
|
+
throw new Error('La licencia introducida no es válida.');
|
|
442
450
|
}
|
|
443
451
|
}
|
|
444
452
|
catch (e) {
|
|
@@ -519,14 +527,14 @@ class SeoScanner {
|
|
|
519
527
|
baseUrl = new URL(url).href;
|
|
520
528
|
}
|
|
521
529
|
catch {
|
|
522
|
-
return [[{ json: { error: 'URL no
|
|
530
|
+
return [[{ json: { error: 'URL no válida' }, pairedItem: { item: 0 } }]];
|
|
523
531
|
}
|
|
524
532
|
try {
|
|
525
533
|
const { html, finalUrl, statusCode, responseTimeMs, timeToFirstByteMs, responseHeaders } = await (0, networkUtils_1.fetchPage)(baseUrl, timeoutMs, fetchOpts);
|
|
526
534
|
if (statusCode >= 400) {
|
|
527
535
|
return [[{
|
|
528
536
|
json: {
|
|
529
|
-
error: `La
|
|
537
|
+
error: `La página devolvió código ${statusCode}`,
|
|
530
538
|
statusCode,
|
|
531
539
|
url: baseUrl,
|
|
532
540
|
},
|
|
@@ -618,7 +626,7 @@ class SeoScanner {
|
|
|
618
626
|
if (mainResult.brokenLinks.length > 0) {
|
|
619
627
|
const msg = `${mainResult.brokenLinks.length} enlace(s) roto(s) detectado(s)`;
|
|
620
628
|
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}
|
|
629
|
+
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
630
|
mainResult.problemsBySeverity.important.push({
|
|
623
631
|
message: msg,
|
|
624
632
|
recommendation: 'Corregir o eliminar los enlaces que devuelven 404 u otros errores.',
|
|
@@ -663,7 +671,7 @@ class SeoScanner {
|
|
|
663
671
|
mainResult.sitemapUrlsChecked = robotsSitemap.sitemapUrlsChecked;
|
|
664
672
|
mainResult.sitemapError = robotsSitemap.sitemapError;
|
|
665
673
|
if (robotsSitemap.robotsTxtBlocked) {
|
|
666
|
-
const msg = 'La URL
|
|
674
|
+
const msg = 'La URL está bloqueada en robots.txt (los buscadores no la indexarán)';
|
|
667
675
|
if (!isIgnored(msg)) {
|
|
668
676
|
mainResult.problemsBySeverity.critical.push({
|
|
669
677
|
message: msg,
|
|
@@ -681,7 +689,7 @@ class SeoScanner {
|
|
|
681
689
|
if (!isIgnored(msg)) {
|
|
682
690
|
mainResult.problemsBySeverity.info.push({
|
|
683
691
|
message: msg,
|
|
684
|
-
recommendation: '
|
|
692
|
+
recommendation: 'Añadir la URL al sitemap.xml para facilitar el descubrimiento por buscadores.',
|
|
685
693
|
});
|
|
686
694
|
}
|
|
687
695
|
}
|
|
@@ -732,7 +740,7 @@ class SeoScanner {
|
|
|
732
740
|
sitemapInSitemap: mainResult.sitemapInSitemap,
|
|
733
741
|
},
|
|
734
742
|
scannedUrls: 1,
|
|
735
|
-
message: `Escaneada 1
|
|
743
|
+
message: `Escaneada 1 página: ${finalUrl}`,
|
|
736
744
|
pageTextContent: mainResult.pageTextContent ?? '',
|
|
737
745
|
};
|
|
738
746
|
let internalResults = [];
|
|
@@ -755,12 +763,12 @@ class SeoScanner {
|
|
|
755
763
|
internalResults.push(result);
|
|
756
764
|
}
|
|
757
765
|
catch {
|
|
758
|
-
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la
|
|
766
|
+
internalResults.push((0, analyzeUtils_1.createEmptySeoResult)(link, 'Error al cargar la página (timeout o red)'));
|
|
759
767
|
}
|
|
760
768
|
}
|
|
761
769
|
output.internalPages = internalResults;
|
|
762
770
|
output.scannedUrls = 1 + internalResults.length;
|
|
763
|
-
output.message = `Escaneadas ${output.scannedUrls}
|
|
771
|
+
output.message = `Escaneadas ${output.scannedUrls} páginas (1 principal + ${internalResults.length} enlaces internos).`;
|
|
764
772
|
if (analyzeOpts.checkBrokenLinks) {
|
|
765
773
|
const maxSiteCheck = Math.min(100, Math.max(analyzeOpts.maxBrokenLinksToCheck ?? 15, 30));
|
|
766
774
|
const seenInternal = new Set();
|
|
@@ -832,24 +840,24 @@ class SeoScanner {
|
|
|
832
840
|
dupDesc.push(p.url);
|
|
833
841
|
}
|
|
834
842
|
if (dupTitle.length > 0 || dupDesc.length > 0) {
|
|
835
|
-
const msg = `Posible contenido duplicado:
|
|
843
|
+
const msg = `Posible contenido duplicado: título o meta description iguales en ${dupTitle.length + dupDesc.length} página(s)`;
|
|
836
844
|
if (!isIgnored(msg)) {
|
|
837
845
|
mainResult.duplicateContent = [];
|
|
838
846
|
let elementText = '';
|
|
839
847
|
if (dupTitle.length > 0) {
|
|
840
848
|
mainResult.duplicateContent.push({ type: 'title', duplicateWith: dupTitle });
|
|
841
|
-
elementText += `[
|
|
849
|
+
elementText += `[Título duplicado]\n${mainResult.title}\n\nEncontrado también en:\n${dupTitle.map(u => '- ' + u).join('\n')}\n\n`;
|
|
842
850
|
}
|
|
843
851
|
if (dupDesc.length > 0) {
|
|
844
852
|
mainResult.duplicateContent.push({ type: 'description', duplicateWith: dupDesc });
|
|
845
|
-
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada
|
|
853
|
+
elementText += `[Meta description duplicada]\n${mainResult.metaDescription}\n\nEncontrada también en:\n${dupDesc.map(u => '- ' + u).join('\n')}\n`;
|
|
846
854
|
}
|
|
847
855
|
mainResult.problemsBySeverity.important.push({
|
|
848
856
|
message: msg,
|
|
849
|
-
recommendation: 'Usar
|
|
857
|
+
recommendation: 'Usar títulos y meta descriptions únicos por página.',
|
|
850
858
|
element: elementText.trim()
|
|
851
859
|
});
|
|
852
|
-
mainResult.issues.push('Contenido duplicado detectado (
|
|
860
|
+
mainResult.issues.push('Contenido duplicado detectado (título o description)');
|
|
853
861
|
mainResult.severitySummary.important = mainResult.problemsBySeverity.important.length;
|
|
854
862
|
}
|
|
855
863
|
}
|
|
@@ -874,12 +882,12 @@ class SeoScanner {
|
|
|
874
882
|
}
|
|
875
883
|
if (orphanPages.length > 0) {
|
|
876
884
|
mainResult.isOrphan = false;
|
|
877
|
-
const msg = `${orphanPages.length}
|
|
885
|
+
const msg = `${orphanPages.length} página(s) huérfana(s) detectada(s) en el sitemap`;
|
|
878
886
|
if (!isIgnored(msg)) {
|
|
879
|
-
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15}
|
|
887
|
+
const orphansList = orphanPages.slice(0, 15).join('\n') + (orphanPages.length > 15 ? `\n...y ${orphanPages.length - 15} más` : '');
|
|
880
888
|
mainResult.problemsBySeverity.warning.push({
|
|
881
889
|
message: msg,
|
|
882
|
-
recommendation: '
|
|
890
|
+
recommendation: 'Asegúrate de que todas las páginas importantes del sitemap estén enlazadas desde otras páginas de tu sitio.',
|
|
883
891
|
element: orphansList
|
|
884
892
|
});
|
|
885
893
|
mainResult.warnings.push(msg);
|
|
@@ -888,7 +896,7 @@ class SeoScanner {
|
|
|
888
896
|
output.summary.orphanPagesCount = orphanPages.length;
|
|
889
897
|
}
|
|
890
898
|
else {
|
|
891
|
-
mainResult.passed.push('No se detectaron
|
|
899
|
+
mainResult.passed.push('No se detectaron páginas huérfanas en el sitemap');
|
|
892
900
|
output.summary.orphanPagesCount = 0;
|
|
893
901
|
}
|
|
894
902
|
}
|
|
@@ -940,12 +948,12 @@ class SeoScanner {
|
|
|
940
948
|
}
|
|
941
949
|
const invalidCross = resultObj.crossHreflang.filter(c => !c.valid);
|
|
942
950
|
if (invalidCross.length > 0) {
|
|
943
|
-
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length}
|
|
951
|
+
const msg = `Faltan etiquetas hreflang de retorno en ${invalidCross.length} página(s) alternativa(s)`;
|
|
944
952
|
if (!isIgnored(msg)) {
|
|
945
953
|
const crossList = invalidCross.map(c => `- ${c.targetUrl} (${c.error})`).join('\n');
|
|
946
954
|
resultObj.problemsBySeverity.important.push({
|
|
947
955
|
message: msg,
|
|
948
|
-
recommendation: '
|
|
956
|
+
recommendation: 'Asegúrate de que todas las páginas alternativas tengan una etiqueta hreflang que apunte de vuelta a esta página.',
|
|
949
957
|
element: crossList
|
|
950
958
|
});
|
|
951
959
|
resultObj.issues.push(msg);
|
|
@@ -953,7 +961,7 @@ class SeoScanner {
|
|
|
953
961
|
}
|
|
954
962
|
}
|
|
955
963
|
else if (resultObj.crossHreflang.length > 0) {
|
|
956
|
-
resultObj.passed.push('
|
|
964
|
+
resultObj.passed.push('Verificación hreflang cruzada correcta (todas devuelven enlace)');
|
|
957
965
|
}
|
|
958
966
|
};
|
|
959
967
|
await verifyCrossHreflang(mainResult);
|
|
@@ -988,7 +996,7 @@ class SeoScanner {
|
|
|
988
996
|
if (sendToExternalApi) {
|
|
989
997
|
let callbackUrl = '';
|
|
990
998
|
let reportId = '';
|
|
991
|
-
let
|
|
999
|
+
let apiTokenExt = '';
|
|
992
1000
|
try {
|
|
993
1001
|
callbackUrl = (this.getNodeParameter('callbackUrl', 0) || '').trim();
|
|
994
1002
|
}
|
|
@@ -998,15 +1006,15 @@ class SeoScanner {
|
|
|
998
1006
|
}
|
|
999
1007
|
catch { }
|
|
1000
1008
|
try {
|
|
1001
|
-
|
|
1009
|
+
apiTokenExt = (this.getNodeParameter('apiToken', 0) || '').trim();
|
|
1002
1010
|
}
|
|
1003
1011
|
catch { }
|
|
1004
1012
|
if (!callbackUrl && incoming.callbackUrl)
|
|
1005
1013
|
callbackUrl = incoming.callbackUrl;
|
|
1006
1014
|
if (!reportId && incoming.reportId)
|
|
1007
1015
|
reportId = incoming.reportId;
|
|
1008
|
-
if (!
|
|
1009
|
-
|
|
1016
|
+
if (!apiTokenExt && incoming.apiToken)
|
|
1017
|
+
apiTokenExt = incoming.apiToken;
|
|
1010
1018
|
if (callbackUrl && reportId) {
|
|
1011
1019
|
try {
|
|
1012
1020
|
const callbackBody = {
|
|
@@ -1017,8 +1025,10 @@ class SeoScanner {
|
|
|
1017
1025
|
const headers = {
|
|
1018
1026
|
'Content-Type': 'application/json',
|
|
1019
1027
|
};
|
|
1020
|
-
if (
|
|
1021
|
-
headers['X-API-
|
|
1028
|
+
if (apiTokenExt) {
|
|
1029
|
+
headers['X-API-Token'] = apiTokenExt;
|
|
1030
|
+
callbackBody.apiToken = apiTokenExt;
|
|
1031
|
+
}
|
|
1022
1032
|
const callbackResponse = await fetch(callbackUrl, {
|
|
1023
1033
|
method: 'POST',
|
|
1024
1034
|
headers,
|
|
@@ -1026,11 +1036,11 @@ class SeoScanner {
|
|
|
1026
1036
|
});
|
|
1027
1037
|
if (!callbackResponse.ok) {
|
|
1028
1038
|
const responseText = await callbackResponse.text().catch(() => '');
|
|
1029
|
-
throw new Error(`La API externa
|
|
1039
|
+
throw new Error(`La API externa devolvió HTTP ${callbackResponse.status}${responseText ? `: ${responseText.slice(0, 500)}` : ''}`);
|
|
1030
1040
|
}
|
|
1031
1041
|
output.externalApiSent = true;
|
|
1032
1042
|
output.externalApiUrl = callbackUrl;
|
|
1033
|
-
output.externalApiKeyUsed = Boolean(
|
|
1043
|
+
output.externalApiKeyUsed = Boolean(apiTokenExt);
|
|
1034
1044
|
}
|
|
1035
1045
|
catch (callbackErr) {
|
|
1036
1046
|
output.externalApiSent = false;
|
|
@@ -1044,7 +1054,7 @@ class SeoScanner {
|
|
|
1044
1054
|
const msg = e instanceof Error ? e.message : String(e);
|
|
1045
1055
|
return [[{
|
|
1046
1056
|
json: {
|
|
1047
|
-
error: 'No se pudo escanear la
|
|
1057
|
+
error: 'No se pudo escanear la página',
|
|
1048
1058
|
detail: msg,
|
|
1049
1059
|
url: baseUrl,
|
|
1050
1060
|
},
|
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.24",
|
|
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": [
|