El motor, no solo la app.
Todo lo que hace el producto alojado es accesible desde tu propio código. ¿Cómo llamo a Ascent? Un cliente tipado o el servicio HTTP. ¿Puede manejarlo mi agente? Un servidor MCP. ¿Puedo alojarlo yo mismo? Una compilación con licencia, en tu infraestructura y con tus claves.
Seis formas de entregarlo.
createSeoAgent()
Una fachada sobre los núcleos. Separación de confianza/no confianza — el navegador nunca guarda claves.
Servicio HTTP
Un enrutador Request→Response, con licencia Bearer, secretos del lado del servidor.
Servidor MCP
Servidor stdio sin dependencias, seis herramientas SEO, para Claude y otros clientes MCP.
Habilidad de Claude
Habilidad ascent-seo lista para usar — MCP preferido, script como reserva.
Widgets de navegador
Widgets puros build/mount — insignia de posición, medidor de potencial, tarjeta de resultado.
Cabina de administración
Paneles de operador — propuestas, palabras clave, rankings — escribe vía su onAction.
Brief de arquitectura e integración
El documento completo para desarrolladores — perfil de ejecución, las seis superficies, el ciclo de vida de las acciones, una ruta de adopción segura y la checklist de producción.
Analice un sitio en aproximadamente un minuto.
Instale el SDK, apúntelo a un sitio con el adaptador de contenido de sitemap y ejecute una auditoría. No se necesitan claves para analyze().
# install (licensed — see the access note below)
npm i @ascent/seo-agent
import { createSeoAgent, sitemapAdapter } from '@ascent/seo-agent'
// the sitemap adapter is the no-code source of pages to audit
const { listIndexableEntities } = sitemapAdapter({ origin: 'https://acme.com' })
const seo = createSeoAgent(
{ site: { domain: 'acme.com' } },
{ listIndexableEntities },
)
const { issues } = await seo.analyze()
console.log(issues)
generate() (propuestas de contenido con IA) y run() (el bucle de tareas) usan las costuras de proveedor y almacenamiento — consulte la sección SDK.
El SDK — una fachada, cuatro perfiles.
createSeoAgent(config, deps) envuelve los núcleos puros y devuelve { analyze, generate, run }. Una capa de tiempo de ejecución detecta Node / Deno / edge / navegador y separa lo de confianza (servidor, guarda las claves) de lo no confiable (navegador, relega las llamadas secretas al servicio). Una verificación de licencia ES256 sin conexión reutiliza sus derechos.
import { createSeoAgent, sitemapAdapter, memoryStore } from '@ascent/seo-agent'
const seo = createSeoAgent(
{ site: { domain: 'acme.com' }, serviceUrl: 'https://your-service' },
{
listIndexableEntities: sitemapAdapter({ origin: 'https://acme.com' }).listIndexableEntities,
store: memoryStore(),
// callClaude, db, auth … wire the seams you need for generate()/run()
},
)
const { issues } = await seo.analyze()
const draft = await seo.generate() // human-approved content proposals
@ascent/seo-agent/license—verifyLicense(token, {now, publicKey}), offline.@ascent/seo-agent/config·/runtime— resolve config + the runtime/trust split.- Cuatro perfiles
init: headless · api · frontend · admin.
npm i @ascent/seo-agent↓ Types .zip↓ Examples .zipUn manejador. N rutas. Secretos del lado del servidor.
Un único enrutador estándar de la Web handleRequest(Request) → Response sobre cada envoltura de backend, con autenticación de licencia unificada Authorization: Bearer, CORS y respuestas tolerantes a fallos. Este es el punto de conexión al que el SDK del navegador relega — de modo que las claves permanecen en el servidor.
import { createSeoService, defaultHandlers, toNodeHandler } from '@ascent/seo-agent/service'
const service = createSeoService({ handlers: defaultHandlers, secrets: process.env })
// Web-standard (edge / Deno / Bun):
export default (request) => service.handleRequest(request)
// or adapt to a Node http handler:
export const nodeHandler = toNodeHandler(service)
# call it with a license
curl -X POST https://your-service/analyze \
-H "authorization: Bearer $ASCENT_LICENSE" \
-H "content-type: application/json" \
-d '{"site":{"domain":"acme.com"}}'
Seis herramientas SEO, sobre MCP.
Un servidor Model Context Protocol hecho a mano, sin dependencias, sobre stdio, que expone analyze · generate · rankings · competitors · content · status. Funciona con un servicio remoto (SP1) o un SDK local en proceso.
// add to your MCP client config (e.g. Claude Desktop)
{
"mcpServers": {
"ascent-seo": {
"command": "npx",
"args": ["-y", "@ascent/seo-agent-mcp"],
"env": {
"ASCENT_SERVICE_URL": "https://your-service",
"ASCENT_LICENSE": "your-license-token"
}
}
}
}
¿Prefiere importarlo? @ascent/seo-agent/mcp expone runServer, defineTools y resolveBackend.
Una habilidad de Claude lista para usar.
La habilidad ascent-seo permite a Claude ejecutar tareas SEO por usted. Prefiere el servidor MCP cuando está conectado y recurre a un script CLI sin dependencias en caso contrario — así funciona tanto si MCP está conectado como si no. Una referencia de honestidad mantiene los resultados medidos y proyectados claramente separados en lo que Claude informa.
- Se entrega como
skill/ascent-seo/—SKILL.md+ referencia de honestidad + CLI de reserva. - MCP preferido; la vía del script solo necesita
ASCENT_SERVICE_URL+ASCENT_LICENSE. - Combina naturalmente con el servidor MCP de arriba.
Widgets de navegador — construcción pura, montaje ligero.
Widgets de navegador sin dependencias, protegidos contra XSS: un inyector de metadatos, una insignia de posición (medido), un medidor de potencial (proyectado) y una tarjeta de resultado honesta. Cada uno es un puro buildX(data) → html más un ligero mountX(el, data), con un theme.css de base.
import { mountRankBadge } from '@ascent/seo-agent/widgets'
import '@ascent/seo-agent/widgets/theme.css'
mountRankBadge(document.querySelector('#rank'), {
keyword: 'best crm',
position: 5, // measured on Google — not a projection
})
Un ascentClient de navegador dialoga con su servicio SP1; solo se envía el token, nunca los secretos.
Una cabina de operador que usted controla.
Seis paneles accionables — propuestas, palabras clave, rankings, competidores, autonomía, estado — construidos sobre un pequeño marco de paneles. Los paneles leen a través del ascentClient y escriben a través de una devolución de llamada onAction que usted conecta, de modo que no hay ningún punto de escritura oculto que finja existir.
import { mountProposals } from '@ascent/seo-agent/admin'
mountProposals(document.querySelector('#proposals'), {
client, // reads via SP1
onAction: (action) => approve(action) // you own the write path,
})
Dos formas de pagar las operaciones de pago.
Las operaciones de pago (SERP + IA) cuestan dinero. Cómo se facturan depende de dónde se ejecuta el motor — en tu infraestructura o en la API alojada de Ascent.
Autoalojado / con licencia → tus claves, sin créditos Ascent
Ejecuta el motor en tu propia infraestructura con tus claves de Serper/Anthropic. Pagas a esos proveedores directamente — los créditos de Ascent no aplican y no hay nada que recargar. Tu coste = tu factura del proveedor + la licencia anual. Genera una clave desde cualquier botón 🔒 Generate license.
API / Servicio alojado → créditos Ascent
Llama al Servicio alojado de Ascent (Authorization: Bearer). Ascent ejecuta las operaciones con sus claves y las mide en créditos Ascent — la misma cartera que la app. Cada ejecución debita créditos (reembolsados si el proveedor falla); una cartera vacía devuelve 402 insufficient_credits.
// check your balance (Bearer = your session token)
POST /rest/v1/rpc/credit_balance
{ "p_account": "<account_id>" } // → { total, planRemaining, topupBalance, resetsAt }
// top up: buy a credit pack (redirects to the hosted card page)
POST /api/payments/mips/create-payment
{ "kind": "credit_pack", "packId": "pack_5k", "accountId": "<account_id>" }
Tus propias claves (BYOK): conecta tus claves de Serper/Claude en la configuración de la cuenta y las operaciones alojadas se ejecutan con tus claves a casi cero créditos — ideal para agencias y alto volumen.
Durante una beta abierta, el operador puede pausar la medición — las llamadas alojadas se ejecutan gratis (el uso se sigue registrando).
Consiga los componentes gratuitos.
Las piezas abiertas son suyas para descargar y usar ahora. El motor con licencia — núcleo del SDK, servicio/API, servidor MCP, cabina de administración — está disponible bajo solicitud.
🔒 Con licencia · núcleo del SDK · servicio/API · MCP · admin
El motor en sí es un producto comercial con licencia — autohospedado o de marca blanca. No es una descarga pública — solicite acceso de desarrollador y le configuraremos.