Tabla de severidad

Comprobador de backlinks malos: diferencia de instantáneas en SQLite

Ningún script puede declarar un enlace tóxico para ti. Puede indicarte qué dominios de referencia son nuevos, cuáles han desaparecido y cuáles parecen extraños como para leerlos a mano.

Bóveda de piedra con tabletas de arcilla y un calibrador de latón midiendo puntos de datos

Tabla de severidad para dominios de referencia nuevos

Nuestras propias reglas prácticas para la triaje, no una definición de Google
NivelSeñalAcción
IgnorarDominio nuevo, DR superior a 30, el anchor es tu marca o una URL desnudaRegístralo y sigue adelante
Observar50 o más dominios nuevos en una semana desde un TLD que nunca has dirigidoAbre diez de ellos
Observar detenidamenteMismo anchor exacto en 20 o más dominios nuevosRevisa la nube de anchors, encuentra la fuente
ActuarRed parecida a pagada o páginas hackeadas que apuntan hacia tiDocumentalo; considera un archivo de desavow solo si también tienes una acción manual
EsperarUn dominio desapareció este mesVuelve a comprobarlo después de la próxima actualización mensual

Por qué hacer diff en lugar de escanear una vez

Una instantánea única te dice qué hay. Un diff te dice qué cambió, y ahí es donde aparecen los problemas.

Google ha dicho durante años, desde el lanzamiento de Penguin 4.0 en septiembre de 2016 y de nuevo en la actualización de spam de enlaces de diciembre de 2022, que ignora principalmente los enlaces spam en lugar de castigarlos. SpamBrain hace ese trabajo. Por lo tanto, una inundación de basura es más ruido que una amenaza, y el diff principalmente te ahorra reaccionar al ruido.

Mantén tu propio historial. Los suites sobrescriben los suyos.

Construye la tabla de historial en cuatro pasos

El diff solo funciona si cada ejecución termina en la misma tabla, con la misma estructura. Estos pasos mantienen esa condición.

01

Crea la tabla una vez

Ejecuta una sentencia create-if-not-exists con las columnas que necesitas: el día, el dominio y la puntuación. Mantenlo en el script, para que una nueva máquina reconstruya la misma tabla sin pasos manuales.

02

Inserta una fila por dominio por día

Usa una inserción parametrizada y haz commit una vez por ejecución. Un único commit evita que un fallo deje la mitad del día en el archivo.

03

Protégete contra una segunda ejecución

Elimina las filas del día antes de insertar, o añade una clave única en día y dominio. Una rerun el mismo día reemplaza las filas en lugar de duplicarlas.

04

Compara con el día anterior en el archivo

Selecciona la fecha anterior más reciente con un filtro max(day), no la fecha de ayer. La comparación se mantiene correcta cuando se salta una semana.

diff.py

Dos tablas serían más ordenadas. Una es suficiente para una configuración de hobby: una fila por dominio por fecha de instantánea.

python
import json, sqlite3, sys, datetime
db = sqlite3.connect('links.db')
db.execute('create table if not exists snap(day text, dom text, dr int)')
rows = json.load(open(sys.argv[1]))
day = datetime.date.today().isoformat()
db.executemany('insert into snap values (?,?,?)',
               [(day, r.get('domain'), r.get('dr')) for r in rows])
db.commit()
prev = db.execute('select max(day) from snap where day < ?', (day,)).fetchone()[0]
if prev:
    new = db.execute('select dom from snap where day=? except select dom from snap where day=?', (day, prev)).fetchall()
    gone = db.execute('select dom from snap where day=? except select dom from snap where day=?', (prev, day)).fetchall()
    print(len(new), 'new,', len(gone), 'gone')

Solución de problemas del diff

SíntomaCausa probableSolución
Cientos de 'desaparecidos' de la noche a la mañanaLa actualización del índice cambió la muestraCompara mensualmente, no diariamente
Todos los dominios parecen nuevosLa tabla estaba vacía o el formato de day cambióComprueba select distinct day
Columna DR toda NULLEl nombre del campo de la fila difiere de drImprime una fila cruda y ajusta
Duplicados después de una rerunEl mismo día insertado dos vecesElimina ese día primero, o añade una clave única
Cuenta inferior a totalLa paginación se detuvo antes de tiempoCorrige el bucle en el manual de acciones
Jardinero observando helechos con una lupa para comparar patrones de crecimiento

Elección de umbrales desde tu propio historial

Un umbral copiado de un artículo de blog es una suposición sobre el sitio de otra persona. Un comprobador de backlinks malos solo es tan útil como sus límites, y tu propio historial te dice cómo se ve lo normal para tu dominio.

Empieza registrando unos pocos meses sin actuar sobre nada. Déjalo asentarse. Luego anota el oscilación semanal típica. Solo después de eso estableces los límites en la tabla de severidad.

Empieza con una línea base

Registra los conteos de nuevos y desaparecidos para cada ejecución sin reaccionar a ellos. Un par de meses de registro tranquilo te dan un rango que pertenece a tu dominio y no al de nadie más.

Una vez que existe la línea base, una semana mala se destaca frente a ella, y puedes explicar la diferencia sin adivinar. Ese es todo el punto de la línea base.

Elige una alarma por señal

Cada señal en la tabla tiene un umbral, un responsable y una acción. Una señal con tres alarmas es una señal que nadie lee, y las alarmas terminan siendo ignoradas juntas.

Escribe la alarma junto a su señal en el código, para que la tabla en esta página y el script nunca discrepen.

Revisa los límites cada trimestre

Tu sitio crece, y también lo hace lo normal. Vuelve a comprobar los límites cada tres meses, y escribe la razón junto a cualquier cambio, para que el historial se explique a sí mismo más tarde.

Farero escaneando el horizonte con telescopio y ancla en el banco de trabajo

Lectura de la tabla de severidad en la práctica

La tabla es una ayuda para el triaje, no un juicio. Cada fila te dice dónde mirar, y la columna de acción te mantiene de buscar un archivo de desavow en pánico.

Trabaja desde arriba. La mayoría de las semanas terminan en Ignorar o Observar. Una fila de Observar comienza unos minutos de lectura, y una fila de Observar detenidamente comienza una revisión más larga de los anchors. No te saltes filas porque la semana estuvo ocupada. Una fila saltada es la semana que la inundación pasa desapercibida.

Muestra antes de decidir

Abre diez de los dominios marcados y lee las páginas. Una inundación que resulta ser un raspador de directorios es un problema diferente a una inundación de blogs no relacionados, y solo las páginas las distinguen.

Registra lo que decidiste

Mantén una línea por decisión: el dominio, el nivel, qué verificaste y qué hiciste. La próxima persona que lea el registro, incluido el futuro tú, obtiene el razonamiento sin una reunión.

Un resumen mensual de esas líneas toma poco tiempo, y es un buen primer borrador de una revisión.

Lo que esto no puede decirte

No puede demostrar que un enlace te perjudica. Nadie fuera de Google puede, y el informe de acciones manuales de Search Console es el único lugar donde se declara una penalización.

Tampoco puede ver enlaces más recientes que la última actualización. Para evidencia más fresca, pregunta a las personas que gestionan el sitio que enlaza, o lee tus registros del servidor para los referrers. Nuestra nota sobre el tiempo entra más en detalle.

Si quieres el lado de los anchors, anchor_cloud cuesta 2 créditos y agrupa texto por frecuencia, que es la forma más rápida de detectar una acumulación de coincidencias exactas.

Enlaces que llegan entre actualizaciones

Cualquier cosa más reciente que la última actualización falta en ambos lados del diff. Un enlace que aparece y desaparece dentro de una ventana de actualización nunca se muestra, por eso la comparación debería ejecutarse mensualmente.

Anchors que parecen incorrectos para ti

Un diff ve el dominio, no la oración alrededor del enlace. Dos anchors idénticos en dos páginas diferentes pueden significar cosas muy diferentes, así que mantén la comprobación de anchors como un paso manual separado.

Opciones de almacenamiento para una configuración de hobby

SQLite es la base de datos más simple que aún responde a una pregunta de diff con una consulta. Vive en un solo archivo, por lo que cabe en el repositorio o una carpeta de copia de seguridad sin un servidor.

Los archivos JSON con fecha también funcionan. Es más lento para consultar, pero más fácil de abrir en un editor de texto cuando algo parece incorrecto. De cualquier manera, copia la tienda a un segundo lugar antes de cualquier limpieza, y mantén la copia durante un trimestre completo antes de eliminar cualquier cosa.

Cuando un archivo es suficiente

Una tabla con una columna de día cubre un solo sitio durante años. El archivo se mantiene pequeño, y las consultas en esta página no necesitan ajuste.

Cuándo pasar a un servidor

Una vez que varias personas escriben en el mismo historial, un archivo en una máquina se convierte en el cuello de botella. En ese punto, una base de datos gestionada es la opción honesta, y el esquema se mantiene igual.

Hasta entonces, un archivo en el repositorio es lo más simple que sobrevive a un cambio de portátil.

Conectar el diff a un trabajo semanal

Ejecuta diff.py justo después del paso de instantánea. Imprime los conteos, y sal con un código distinto de cero cuando new cruce un límite que hayas elegido, digamos 200 en una semana para un sitio pequeño. El trabajo se pone rojo, y GitHub te envía un correo. Simple.

Elige el límite desde tu propio historial. Después de dos meses sabes si 15 dominios nuevos a la semana es normal o un pico, y cualquier número fijo copiado de un artículo de blog es una suposición.

Las semanas tranquilas son la norma.

Preguntas sobre enlaces malos, respondidas claramente

¿Existe un comprobador de backlinks malos fiable?
Ninguna herramienta puede etiquetar un enlace como dañino con certeza, porque solo Google sabe cómo trata cada uno. Un script puede revelar patrones dignos de leer: inundaciones repentinas, anchors exactos repetidos, TLD extraños. Tú tomas la decisión después de abrir las páginas.
¿Debería desavow lo que marca el diff?
Rara vez. Google ha dicho que ignora en gran medida los enlaces spam, y un archivo de desavow está destinado a casos como una acción manual o un lío de enlaces pagados que hiciste tú mismo. Documenta primero, y comprueba Search Console antes de enviar cualquier cosa.
¿Con qué frecuencia debería ejecutarlo?
Instantánea semanalmente, revisión mensual. El índice se actualiza aproximadamente una vez al mes, por lo que un diff diario principalmente compara una tabla consigo misma. Una revisión mensual coincide con los datos y mantiene el ruido bajo.
¿Qué columnas debería mantener la tabla?
Mantén el día, el dominio, el DR y una columna de fuente. Añade el anchor solo si también extraes anchors. Más columnas parecen exhaustivas, pero cada campo adicional es otro que puede derivarse entre ejecuciones.
¿Puedo hacer diff de dos suites entre sí?
Puedes comparar sus conteos para el mismo sitio, pero los dos resultados no coincidirán. Ejecuta el diff dentro de una fuente, y compara la dirección del cambio entre fuentes, la misma regla que se aplica en todas partes en este sitio.
¿Qué pasa si un dominio sale y luego regresa el mes siguiente?
Se muestra como desaparecido y luego como nuevo, lo cual es ruido. Cuenta los retornos por separado, o compara tres meses a la vez, para que un dominio que se pierda durante una actualización no active una revisión.