Contador de backlinks para un panel de SaaS, paso a paso
Un contador funcional necesita una ruta de servidor y un pequeño componente. Esta guía construye ambos, incluyendo los estados de fallo que suelen olvidarse en las primeras versiones.
Equipo editorial de AlfaLinks ·
Alcance de esta guía
Asumimos un backend en Node o Python y cualquier framework de front-end. Cada una de las solicitudes siguientes utiliza la API documentada, y la URL base es la de tu marca: alfalinks.net/api.php.
Cinco pasos, en el orden en que los implementaríamos
01
1. Crea la clave y guárdala como secreto
Inicia sesión con Google en /auth/google.php, copia la clave sk_ desde la página de la cuenta y añádela al entorno de tu servidor. El front-end nunca la verá.
02
2. Añade una ruta de proxy
Expon algo como /internal/links?domain=... que valide el dominio, llame a nuestra API y devuelva solo los campos que usa tu interfaz. La validación es importante porque los usuarios pueden escribir cualquier cosa.
03
3. Comienza con la acción gratuita
La acción overview no tiene coste, por lo que la primera versión del contador no tiene ningún riesgo de facturación. Pasa a las acciones de pago cuando una pantalla las necesite.
04
4. Renderiza tres estados
Cargando, datos y no disponible. No disponible cubre HTTP 401, HTTP 402 y un error de red, y no debe mostrar nunca un cero.
05
5. Añade la etiqueta de actualización
Nuestro índice se actualiza aproximadamente cada mes. Una línea gris que diga 'datos de enlaces actualizados mensualmente' evita la incidencia de soporte que comienza con 'Añadí un enlace ayer'.
La ruta de proxy, en Node
Suficientemente corta para leerse en una pantalla. La caché es un Map simple aquí; cambia a Redis cuando ejecutes más de un proceso.
js
const cache = new Map();
const MONTH = 30 * 24 * 3600 * 1000;
app.get('/internal/links', async (req, res) => {
const domain = String(req.query.domain || '').toLowerCase().trim();
if (!/^[a-z0-9.-]+\.[a-z]{2,}$/.test(domain)) return res.status(400).json({ok:false});
const hit = cache.get(domain);
if (hit && Date.now() - hit.t < MONTH) return res.json(hit.v);
const r = await fetch(`https://alfalinks.net/api.php?action=overview&q=${domain}`);
if (!r.ok) return res.status(502).json({ok:false});
const v = await r.json();
cache.set(domain, {t: Date.now(), v});
res.json(v);
});
Añadir una insignia DR una vez que el contador funcione
El contador es la mitad fácil. La insignia necesita una llamada extra.
Para una tabla de dominios de clientes, envía una única solicitud bulk_dr con hasta 2.000 dominios en lugar de una llamada por fila. Cuesta 1 crédito independientemente del número de filas, y la respuesta asigna a cada dominio su puntuación de 0-100, que almacenas junto a la vista previa en caché.
Empareja los dominios por el nombre de host normalizado. Elimina el esquema, la ruta y un www inicial, o la mitad de tus filas no encontrarán la consulta y mostrarán espacios en blanco.
Muestra un valor primero, luego pide la configuración
Los nuevos usuarios rara vez leen una página de configuración. Quieren ver si la función merece la pena, y un contador de backlinks que muestra una cifra real responde a eso más rápido que cualquier formulario. Pon el valor primero. La configuración va después.
Como la acción de vista previa gratuita no necesita clave, tu primera pantalla puede mostrar una cifra antes de que el usuario haya configurado nada.
¿Qué necesita el primer renderizado?
Solo un dominio y una llamada gratuita. Imagina a un nuevo usuario que introduce su propio sitio en el onboarding y ve aparecer el contador en la misma vista de página. Esa única cifra hace más para iniciar la configuración que una lista de pasos, así que mantén el resto de la configuración detrás de ella.
El usuario ve lo que obtendrá antes de que nadie le pida una tarjeta, una clave o un segundo formulario. Nada en el primer renderizado debe parecer un obstáculo.
¿Dónde debería situarse el aviso de configuración?
Justo después de la cifra, no antes. Una línea corta como 'Conecta un dominio para rastrearlo cada mes' cabe debajo del contador. Si el mismo aviso está encima de la cifra, los usuarios lo leen como un obstáculo y se van.
Rastrea qué usuarios completan cada paso de configuración. Un pequeño embudo muestra dónde se detiene la gente, y un cambio en el texto suele mover esa cifra más que una nueva función.
Pruebas antes del lanzamiento
Prueba primero los caminos no felices. Los caminos felices se prueban solos.
Revoca la clave en staging y confirma que la tarjeta muestra 'no disponible' en lugar de cero. Luego vacía un saldo de prueba para activar un 402, y pega una entrada malformada como un dominio con esquema y una ruta final, para demostrar que el validador lo rechaza antes de que se gaste ningún crédito.
Una prueba rápida de humo pertenece a CI. Una llamada gratuita overview a nytimes.com, ejecutada diariamente, te dice si la ruta y la clave siguen funcionando.
Quién puede consultar qué dominio y a qué coste
Un contador que acepta cualquier cadena es una puerta abierta a tu saldo. Decide quién puede pedir qué antes de que la ruta vaya en producción, y escribe la respuesta en el código en lugar de en una página de wiki que nadie abre.
Tres preguntas surgen siempre: qué dominios, qué límite y dónde vive la clave.
¿Qué dominios debería poder escribir un usuario?
Solo los que el espacio de trabajo tenga derecho a reclamar, más cualquier búsqueda pública que hayas elegido ofrecer. Digamos que un espacio de trabajo posee dos sitios. La ruta puede aceptar esos dos y rechazar cualquier otra cosa con un mensaje claro, lo que evita que un inquilino gaste créditos en dominios que no son suyos.
La comprobación del nombre de host en la ruta es el mínimo. Demuestra que la entrada parece un dominio, no que el usuario lo posee, así que mantén la lista de reclamaciones en tu propia base de datos como una tabla separada.
¿Cómo evitas que un usuario vacíe el saldo?
Pon una cuota por espacio de trabajo en tu propia tienda y cuenta las llamadas allí. El saldo en nuestro lado es un único grupo de prepago, por lo que no puede decirte qué cliente gastó qué. Las notas de la página de búsqueda cubren el lado público del mismo problema. Cuando un espacio de trabajo alcance su límite, devuelve un mensaje claro y deja que la caché siga respondiendo con lo que ya tiene.
Elige el límite de la aritmética en las notas por asiento, no de una suposición, y revísalo cuando cambie un plan. Prueba la ruta con un segundo espacio de trabajo antes de confiar en la cuota.
¿Debería el navegador mantener la clave alguna vez?
No. La clave vive en tu servidor, y el navegador llama a tu ruta. Esa separación es también lo que hace posible una cuota, ya que cada llamada facturada pasa por código que controlas. Si una clave aparece alguna vez en un paquete enviado, rotarla el mismo día y comprobar el registro de saldo por llamadas que no hiciste. Algunos equipos almacenan la clave en un archivo de configuración que lee el front-end en tiempo de compilación, y ese archivo termina en el paquete. Mantén la clave fuera de cualquier cosa que el paso de compilación pueda ver, y comprueba los archivos enviados una vez antes de cada lanzamiento.
Las acciones gratuitas pueden llamarse desde una página pública sin clave, y ese es el único caso en el que el navegador puede hablar directamente con la API.
Lo que el contador debe decir, y lo que no
Di menos de lo que sabes. Un contador etiquetado como 'backlinks' invita a la pregunta '¿por qué Ahrefs muestra un número diferente?', y la respuesta honesta es que dos rastreadores ven dos partes de la web.
Etiqueta la cifra con su fuente y mes en su lugar. Algo como 'Dominios de referencia, índice AlfaLinks, octubre de 2026' es más largo, pero termina el argumento antes de que empiece y se lee bien en una tarjeta pequeña.
Redondea para la visualización. Un usuario que ve 12.481 el lunes y 12.481 el viernes confía más en la herramienta que uno que ve fluctuaciones, y nuestra actualización mensual te da esa estabilidad gratis.
Si quieres la puntuación de 0-100 junto a ella, lee primero las notas sobre la puntuación de backlinks. Es nuestra métrica propia, así que importa el nombre.
Estados de fallo y lo que hace la interfaz
Los códigos HTTP son los que devuelve la API; la columna de la interfaz es nuestra sugerencia.
Señal
Significado
Lo que ve el usuario
Lo que haces
HTTP 401
Falta o clave incorrecta
'Datos de enlaces no disponibles'
Despliega un error en tu propia página
HTTP 402
Se acabaron los créditos
'Datos de enlaces no disponibles'
Recarga con USDT (TRC-20)
ok: false
Solicitud rechazada
Enlace de reintento en línea
Registra el dominio y la acción
Tiempo de espera agotado
Problema de red
Valor en caché si tienes uno
Reintenta una vez, luego reduce la frecuencia
Mantener el contador honesto en soporte y registros
Un contador falla en silencio mucho más a menudo de lo que falla en voz alta. Registra lo suficiente para responder a la pregunta que hará el cliente a continuación, y mantén los datos personales fuera del registro por completo. Las líneas cortas ganan. Una línea que responde a una pregunta de soporte ahorra más tiempo que cualquier alerta que puedas escribir.
La mayoría de los hilos de soporte sobre un contador son una de tres preguntas, así que planifica el registro en torno a ellas. Mantén esas tres preguntas en tu libro de ejecución, junto a los pasos para rotar una clave.
¿Qué debería registrar cada línea del log?
La acción, el dominio, el código de estado, la antigüedad de la caché y el saldo de créditos que regresó. Esos cinco campos responden a la mayoría de las preguntas de soporte. Digamos que un usuario pregunta por qué su contador muestra una cifra antigua. La antigüedad de la caché y el mes del índice te dicen si el problema es la caché o la etiqueta.
Deja la clave de la API fuera de cada línea, incluidas las trazas de error. Márcala en el registrador, porque una línea filtrada puede vaciar toda la cuenta.
¿Cómo sabes que el contador está sano cada semana?
Vigila tres números: la proporción de estados no disponibles, la tendencia del saldo de créditos y la tasa de aciertos de caché. Un salto repentino en los estados no disponibles suele apuntar a un problema de clave o saldo. Una caída lenta en el saldo suele apuntar a una clave de caché demasiado específica.
Cada lectura tiene una solución diferente, por eso un único mosaico de panel para las tres rara vez ayuda a alguien. Pon las tres lecturas en una línea en tu nota semanal, con el último valor y el cambio desde la semana anterior. Los números leídos en aislamiento invitan a conjeturas, mientras que una tendencia corta mantiene la conversación en los mismos hechos.