Ascent
Pour les développeurs

Le moteur, pas seulement l'app.

Tout ce que fait le produit hébergé est accessible depuis votre code. Comment appeler Ascent ? Un client typé ou le service HTTP. Mon agent peut-il le piloter ? Un serveur MCP. Puis-je auto-héberger Ascent ? Une version sous licence, sur votre propre infrastructure avec vos clés fournisseurs.

ESM pur · aucune étape de build Zéro dépendance d’exécution Node · Deno · edge · browser node --test · plus de 5 000 tests

Six façons de le livrer.

Honnête par conceptionLes chiffres sont toujours étiquetés mesuré sur Google (un rang réel) ou estimation Ascent (une projection) — les deux ne sont jamais confondus, sur tous les canaux.
Approfondir

Brief architecture & intégration

Le document développeur complet — profil d’exécution, les six surfaces, le cycle de vie des actions, un parcours d’adoption sûr et la checklist de production.

Démarrage rapide

Analysez un site en une minute environ.

Installez le SDK, pointez-le vers un site avec l’adaptateur de contenu sitemap, puis lancez un audit. Aucune clé requise pour 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() (propositions de contenu IA) et run() (la boucle de tâches) utilisent les coutures fournisseur et stockage — voir la section SDK.

Sous licence · demander l’accèsAscent est un moteur commercial et n’est pas encore sur un registre public. La ligne d’installation illustre le flux prévu ; commencez dans l’application ou contactez-nous pour demander un accès développeur.
SP0 · Cœur du SDK

Le SDK — une façade, quatre profils.

createSeoAgent(config, deps) enveloppe les cœurs purs et renvoie { analyze, generate, run }. Une couche d’exécution détecte Node / Deno / edge / navigateur et sépare le fiable (serveur, détient les clés) du non fiable (navigateur, relaie les appels secrets au service). Une vérification de licence ES256 hors ligne réutilise vos droits.

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/licenseverifyLicense(token, {now, publicKey}), offline.
  • @ascent/seo-agent/config · /runtime — resolve config + the runtime/trust split.
  • Quatre profils init : headless · api · frontend · admin.
Référence & téléchargements
Obtenirnpm i @ascent/seo-agent↓ Types .zip↓ Examples .zip
SP1 · Service / API

Un gestionnaire. N routes. Secrets côté serveur.

Un unique routeur standard Web handleRequest(Request) → Response sur chaque enveloppe backend, avec authentification de licence unifiée Authorization: Bearer, CORS et réponses tolérantes aux pannes. C’est le point de terminaison vers lequel le SDK navigateur relaie — ainsi les clés restent sur le serveur.

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"}}'
Référence & téléchargements
Obtenir
SP2 · Serveur MCP

Six outils SEO, via MCP.

Un serveur Model Context Protocol fait main, sans dépendance, via stdio, exposant analyze · generate · rankings · competitors · content · status. Fonctionne avec un service distant (SP1) ou un SDK local en processus.

// 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"
      }
    }
  }
}

Vous préférez l’importer? @ascent/seo-agent/mcp expose runServer, defineTools et resolveBackend.

Référence & téléchargements
Obtenirnpx @ascent/seo-agent-mcp
SP3 · Compétence Claude

Une compétence Claude prête à l’emploi.

La compétence ascent-seo permet à Claude d’exécuter des tâches SEO pour vous. Elle privilégie le serveur MCP lorsqu’il est connecté et se rabat sur un script CLI sans dépendance sinon — elle fonctionne donc que MCP soit branché ou non. Une référence d’honnêteté garde les résultats mesurés et projetés clairement distincts dans ce que Claude rapporte.

  • Livrée comme skill/ascent-seo/SKILL.md + référence d’honnêteté + CLI de repli.
  • MCP prioritaire ; le chemin script ne requiert que ASCENT_SERVICE_URL + ASCENT_LICENSE.
  • Se marie naturellement avec le serveur MCP ci-dessus.
Référence & téléchargements
SP4 · Widgets frontend

Widgets navigateur — build pur, montage léger.

Widgets navigateur sans dépendance, protégés contre le XSS : un injecteur de méta, un badge de rang (mesuré), une jauge de potentiel (projeté) et une carte de résultat honnête. Chacun est un pur buildX(data) → html plus un léger mountX(el, data), avec 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 navigateur dialogue avec votre service SP1 ; seul le jeton est envoyé, jamais les secrets.

Référence & téléchargements
Obtenir↓ Widget kit .zipfree · includes theme.css
SP5 · Cockpit d’administration

Un cockpit opérateur que vous contrôlez.

Six panneaux exploitables — propositions, mots-clés, classements, concurrents, autonomie, statut — bâtis sur un petit cadre de panneaux. Les panneaux lisent via l’ascentClient et écrivent via un rappel onAction que vous branchez, donc aucun point d’écriture caché ne fait semblant d’exister.

import { mountProposals } from '@ascent/seo-agent/admin'

mountProposals(document.querySelector('#proposals'), {
  client,                              // reads via SP1
  onAction: (action) => approve(action) // you own the write path,
})
Référence & téléchargements
Obtenir
Crédits Ascent et facturation

Deux façons de payer les opérations payantes.

Les opérations payantes (SERP + IA) ont un coût. Leur facturation dépend de l’endroit où tourne le moteur — sur votre infrastructure, ou sur l’API hébergée d’Ascent.

Auto-hébergé / sous licence → vos clés, sans crédits Ascent

Exécutez le moteur sur votre propre infrastructure avec vos clés Serper/Anthropic. Vous payez ces fournisseurs directement — les crédits Ascent ne s’appliquent pas et il n’y a rien à recharger. Votre coût = votre facture fournisseur + la licence annuelle. Générez une clé via un bouton 🔒 Generate license.

API / Service hébergé → crédits Ascent

Appelez le Service hébergé d’Ascent (Authorization: Bearer). Ascent exécute les opérations avec ses clés et les facture en crédits Ascent — le même portefeuille que l’app. Chaque exécution débite des crédits (remboursés en cas d’échec fournisseur) ; un portefeuille vide renvoie 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>" }

Vos propres clés (BYOK) : connectez vos clés Serper/Claude dans les paramètres du compte et les opérations hébergées s’exécutent sur vos clés à quasi zéro crédit — idéal pour les agences et les gros volumes.

Pendant une bêta ouverte, l’opérateur peut suspendre la facturation — les appels hébergés sont alors gratuits (l’usage est quand même enregistré).

← Back Docs
Téléchargements

Récupérez les composants gratuits.

Les éléments ouverts sont à télécharger et à utiliser dès maintenant. Le moteur sous licence — cœur du SDK, service/API, serveur MCP, cockpit d’administration — est disponible sur demande.

Kit de widgets

Widgets navigateur + theme.css — badge de rang, jauge de potentiel, carte de résultat, injecteur de méta.

↓ .zip

Compétence Claude

La compétence ascent-seoSKILL.md, référence d’honnêteté, CLI de repli.

↓ .zip

Définitions de types

La surface d’API .d.ts — entités, adaptateurs, stockage, fournisseurs.

↓ .zip

Exemples

Exemples d’utilisation du SDK exécutables.

↓ .zip

🔒 Sous licence · cœur du SDK · service/API · MCP · admin

Le moteur lui-même est un produit commercial sous licence — auto-hébergé ou en marque blanche. Ce n’est pas un téléchargement public — demandez un accès développeur et nous vous configurerons.

Honnête par conceptionSeuls les éléments gratuits ci-dessus sont téléchargeables ici. Rien sur cette page ne livre le moteur sous licence — la demande d’accès est le seul moyen de l’obtenir.
À regarder

L’intégration, de bout en bout.

Un passage sur les surfaces qu’un développeur touche réellement : où se règlent l’origine et le fournisseur SERP, quels chercheurs s’exécutent, l’application GitHub qui permet à Ascent d’ouvrir une pull request, et la liste de travail où un changement vous est rendu sous forme de texte à coller plutôt qu’écrit sur votre site à votre insu.

The configuration screen showing the site origin, the SERP provider, the researchers that run, fleet learning, and the GitHub repository pull requests are opened against, followed by the apply worklist handing back a page to paste.
La configuration, l’application GitHub et la liste de travail — enregistré sur l’application en direct, en lecture seule.

D’autres démonstrations, une par surface, à mesure que la surface d’intégration s’étoffe.

Réponses directes

Les questions que l'on pose.

Comment appeler Ascent depuis mon code ?

Utilisez le client typé ou appelez directement le service HTTP. Les deux passent par les mêmes routes que l'app hébergée et sont décomptés sur votre compte : ce que vous construisez se comporte exactement comme le produit.

Mon propre agent peut-il piloter Ascent ?

Oui. Ascent fournit un serveur MCP qui expose les opérations d'audit, de proposition et de publication sous forme d'outils : un agent que vous contrôlez peut exécuter la boucle et décider quoi appliquer, dans les limites d'autonomie que vous configurez.

Puis-je auto-héberger Ascent ?

Oui. Une version sous licence tourne sur votre propre infrastructure avec vos clés fournisseurs et une clé de licence signée hors ligne, et peut être déclinée en marque blanche sous votre nom. Rien ne nous rappelle pour autoriser une exécution.

Ascent — un agent autonome pour la visibilité dans la recherche et les réponses IA. Il trouve le travail, le livre, et prouve qu'il a porté.
Positionnement proposé, présenté à côté de la page d'accueil en ligne. Même système de design, même moteur, argument différent.