Documentation API & MCP

Write-Like expose une API REST et un serveur MCP pour générer des posts LinkedIn dans le style d'un auteur, depuis tes propres outils (scripts, n8n, agents IA).

Authentification

Chaque requête doit inclure une clé API dans l'en-tête Authorization. Génère et gère tes clés depuis la page Clés API. Une clé n'est affichée qu'une seule fois à sa création — conserve-la en lieu sûr.

Authorization: Bearer wl_live_xxxxxxxxxxxxxxxxxxxxxxxx

Une requête sans clé valide renvoie 401 Unauthorized. Les données sont isolées par compte : tu n'accèdes qu'à tes propres auteurs et générations.

URL de base & format

Toutes les routes sont préfixées par /api/v1. Les corps de requête et de réponse sont en JSON (Content-Type: application/json).

https://writelike.bifurque.online/api/v1

Endpoints

Le pipeline se fait en deux temps : on génère des propositions (3 plans + 3 accroches), puis on rédige le brouillon à partir d'une sélection. L'endpoint /posts fait les deux en un appel.

GET/api/v1/authors
Liste tes auteurs (profils LinkedIn analysés).
curl -H "Authorization: Bearer $KEY" \
  https://writelike.bifurque.online/api/v1/authors

# Réponse
{
  "authors": [
    { "id": "uuid", "name": "...", "headline": "...",
      "profile_image_url": "...", "last_scraped_at": "..." }
  ]
}
POST/api/v1/generations
Génère 3 plans + 3 accroches pour un sujet.
curl -X POST -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"authorId":"uuid","topic":"L IA et le travail"}' \
  https://writelike.bifurque.online/api/v1/generations

# Réponse
{
  "id": "generationId",
  "proposals": {
    "plans": [{ "title": "...", "outline": ["...", "..."] }],
    "hooks": [{ "text": "...", "style": "stat|choc|histoire" }]
  }
}
POST/api/v1/generations/{id}/draft
Rédige le post complet à partir des index de plan et d'accroche choisis (0, 1 ou 2).
curl -X POST -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"selectedPlan":0,"selectedHook":1}' \
  https://writelike.bifurque.online/api/v1/generations/<id>/draft

# Réponse
{ "id": "generationId", "content": "Texte du post LinkedIn..." }
POST/api/v1/posts
One-shot : génère les propositions puis le brouillon en un seul appel. selectedPlan et selectedHook sont optionnels (défaut 0).
curl -X POST -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{"authorId":"uuid","topic":"Mon sujet"}' \
  https://writelike.bifurque.online/api/v1/posts

# Réponse
{ "generationId": "...", "proposals": { ... }, "content": "..." }
GET/api/v1/generations?limit=20
Liste tes générations passées (limit : 1 à 100, défaut 20).
curl -H "Authorization: Bearer $KEY" \
  "https://writelike.bifurque.online/api/v1/generations?limit=20"
GET/api/v1/generations/{id}
Détail d'une génération (propositions parsées + contenu rédigé).
curl -H "Authorization: Bearer $KEY" \
  https://writelike.bifurque.online/api/v1/generations/<id>

Note : l'ajout d'un auteur (scraping LinkedIn) se fait uniquement depuis l'interface web, pas via l'API.

Erreurs

Les erreurs renvoient un JSON { "error": "message" } avec le code HTTP correspondant.

CodeSignification
400Paramètres manquants ou invalides
401Clé API absente, invalide ou révoquée
404Ressource introuvable (auteur, génération)
500Erreur interne (ex. génération échouée)

Serveur MCP

Write-Like fournit un serveur MCP (stdio) qui expose les mêmes capacités sous forme d'outils, utilisables depuis Claude Desktop, Claude Code ou tout client MCP.

Installation

cd write-like/mcp
npm install
npm run build

Configuration

Récupère une clé sur la page Clés API, puis ajoute le serveur à la config de ton client (.mcp.json ou claude_desktop_config.json) :

{
  "mcpServers": {
    "write-like": {
      "command": "node",
      "args": ["/chemin/absolu/vers/write-like/mcp/dist/index.js"],
      "env": {
        "WRITELIKE_API_KEY": "wl_live_xxx",
        "WRITELIKE_API_URL": "https://writelike.bifurque.online"
      }
    }
  }
}

Outils disponibles

  • list_authors — liste tes auteurs
  • generate_proposals(authorId, topic) — 3 plans + 3 accroches
  • write_draft(generationId, selectedPlan, selectedHook) — brouillon depuis une sélection
  • write_post(authorId, topic) — one-shot
  • list_generations(limit?) — historique
  • get_generation(id) — détail d'une génération