Planificateur de réseaux sociaux Orshot : rendu, publication, planification, apprentissage
Orshot effectue le rendu d'une image, d'un carrousel ou d'une vidéo à partir d'un template et le publie sur plus de 13 plateformes en une seule requête. Il gère également les brouillons, les planifications, les modifications et les rapports d'analytiques, permettant à un agent de gérer un calendrier de contenu complet sans outil supplémentaire. Les publications peuvent également attacher n'importe quelle URL de média publique, ce qui fonctionne avec des images créées ailleurs.
Plateformes : X (Twitter), Instagram, Facebook, LinkedIn (profil et page), TikTok, YouTube, Pinterest, Reddit, Bluesky, Threads, Telegram, Snapchat, Google Business.
Étape 1 : connecter le serveur MCP Orshot
Rien ne fonctionne avant cela. La route MCP ne nécessite pas de clé à coller, affiche chaque publication sous forme de carte visuelle, et est celle à utiliser depuis un agent.
openclaw mcp add orshot --url https://mcp.orshot.com/mcp --transport streamable-http --auth oauth
openclaw mcp login orshot
Claude Code : claude mcp add --transport http orshot https://mcp.orshot.com/mcp. Les autres clients MCP utilisent la même URL.
Pour les jobs headless uniquement (cron, n8n, un script serveur) : export ORSHOT_API_KEY=... et appelez REST avec Authorization: Bearer $ORSHOT_API_KEY.
Étape 2 : vérifier les comptes connectés
orshot_list_social_accounts # MCP
GET /v1/social/accounts?include_health=true # REST
# [{ "id": 1, "platform": "linkedin", "account_name": "Acme", "account_username": "acme", "health": { "status": "ok" } }]
Une liste avec des comptes signifie que vous pouvez publier. Notez l'id numérique de chacun et tout indicateur health qui signale une reconnexion.
Une liste vide signifie qu'un humain doit encore connecter les comptes. L'API ne peut pas en connecter un. Envoyez l'utilisateur vers son tableau de bord Orshot : Espace de travail > Réseaux sociaux > Comptes (https://orshot.com/dashboard, puis la section Réseaux sociaux de l'espace de travail), où chaque plateforme se connecte avec sa propre connexion OAuth. La publication sociale est un module complémentaire sur les formules payantes, à 12 $ par compte connecté par mois, sans crédits supplémentaires par publication ; la formule gratuite ne peut pas connecter de comptes. Les formules et le module complémentaire sont sur https://orshot.com/pricing. Dites-le une fois, clairement, et attendez le retour de l'utilisateur ; l'appel suivant à orshot_list_social_accounts affichera le nouveau compte.
Flux de travail principal
- Connectez et listez les comptes (ci-dessus).
- Décidez du média. Effectuez le rendu à partir d'un template (
templateId+modifications) ou utilisez unemedia_urlexistante. - D'abord un brouillon. Créez la publication avec
status: "draft"sauf si l'utilisateur a clairement dit de publier maintenant. - Montrez à l'utilisateur l'aperçu, la légende, les comptes et l'heure. Via MCP,
orshot_get_social_postaffiche une carte visuelle. - Modifiez ce qu'il change (
orshot_update_social_post), puis publiez (orshot_publish_social_draft) ou planifiez (status: "scheduled"+scheduled_for). - Vérifiez le statut après qu'une plateforme asynchrone (Instagram, TikTok) ait terminé :
processingdevientpublishedoufailed. - Consultez les analytics un jour plus tard, et les insights de meilleur moment avant la prochaine planification.
Tableau des outils MCP
| Tâche | Outil |
|---|---|
| lister les comptes | orshot_list_social_accounts |
| rendu + publication en un appel | orshot_render_template avec publish |
| publier une URL média | orshot_publish_social_post |
| lister / lire les publications | orshot_list_social_posts, orshot_get_social_post (carte visuelle) |
| modifier / envoyer / supprimer | orshot_update_social_post, orshot_publish_social_draft, orshot_discard_social_post |
| analytics | orshot_get_social_analytics, orshot_get_social_analytics_daily, orshot_get_social_followers, orshot_get_social_post_analytics |
| meilleur moment pour poster | orshot_get_best_time_to_post |
Le serveur MCP utilise par défaut status: "draft" sans un feu vert explicite. Gardez cela ainsi.
Appels essentiels
Rendu et publication (ou brouillon, ou planification) en un seul appel
Via MCP, c'est orshot_render_template avec le même objet publish.
await fetch("https://api.orshot.com/v1/studio/render", {
method: "POST",
headers: { "Content-Type": "application/json", Authorization: `Bearer ${apiKey}` },
body: JSON.stringify({
templateId: 123,
modifications: { headline: "Jour de livraison", stat: "2 000 rendus" },
response: { type: "url", format: "png" },
publish: {
accounts: [1, 3],
content: "Légende jusqu'à 5000 caractères",
status: "scheduled", // published | draft | scheduled
scheduled_for: "2026-11-01T14:00:00Z",
timezone: "America/New_York",
platformOptions: {
"3": { firstComment: "https://orshot.com", disableLinkPreview: true }, // LinkedIn
},
},
}),
});
Les templates multi-pages publient sous forme de carrousel sur les plateformes qui le supportent. La réponse contient data.content (le rendu) et publish[] avec une entrée par compte.
Publier un média que vous possédez déjà
orshot_publish_social_post, ou :
curl -s -X POST https://api.orshot.com/v1/social/publish \
-H "Authorization: Bearer $ORSHOT_API_KEY" -H "Content-Type: application/json" \
-d '{
"accounts": [2],
"content": "Six choses que personne ne vous dit",
"media_urls": ["https://.../1.png", "https://.../2.png", "https://.../3.png"],
"status": "draft",
"tiktokSettings": { "autoAddMusic": true }
}'
| Champ | Remarques |
|---|---|
accounts | obligatoire, identifiants numériques |
content | légende, max 5000 caractères |
media_url / media_urls | une ou plusieurs URLs publiques ; plusieurs = carrousel |
status | published (par défaut via REST), draft, scheduled |
scheduled_for | ISO 8601, au moins 60 s à l'avance, seulement avec scheduled |
timezone | nom IANA |
platformOptions | par identifiant de compte : LinkedIn firstComment, disableLinkPreview ; Pinterest title, link |
tiktokSettings.autoAddMusic | niveau racine, carrousels de photos TikTok |
Réponse : { post_id, status, platforms: [{ account_id, platform, status, url, error, action }] }. status peut être published, scheduled, drafted, partial, processing ou failed. action: "reconnect" signifie que l'humain doit reconnecter ce compte dans le tableau de bord.
Gérer les publications en attente
GET /v1/social/posts?status=draft&limit=25 # aussi scheduled | published | processing | partial | failed, platform=, account_id=, cursor=
GET /v1/social/posts/:id
PATCH /v1/social/posts/:id # content, media_urls, accounts, status (draft|scheduled), scheduled_for, timezone, platformOptions
POST /v1/social/posts/:id/publish # envoyer une publication en attente maintenant
POST /v1/social/posts/:id/sync # rafraîchir le statut du fournisseur
DELETE /v1/social/posts/:id # supprimer ; refusé une fois qu'un compte est passé en direct
is_editable et is_discardable sur chaque publication vous indiquent ce qui est encore autorisé. La modification ne refait jamais le rendu et ne coûte rien.
Analytics
GET /v1/social/analytics?platform=linkedin&source=orshot # par publication : impressions, engagement, clics, taux ; abonnés par compte
GET /v1/social/analytics/daily?from=2026-10-01&to=2026-10-21 # jour par jour
GET /v1/social/analytics/accounts?from=2026-09-01 # historique des abonnés et croissance par compte
GET /v1/social/analytics/insights?platform=instagram # meilleurs créneaux jour-heure (UTC), fréquence vs engagement, déclin
source est all, orshot ou external (publications synchronisées depuis la plateforme, donc l'historique existe dès le premier jour). refresh=1 ignore le cache. Limite : 10 requêtes analytics par minute. Les insights nécessitent un historique de publications, donc un nouveau compte renvoie des créneaux vides.
Modèles courants
Modèle 1 : calendrier de contenu hebdomadaire sous forme de brouillons
Rendez sept publications à partir d'un seul template avec différentes modifications, créez chacune avec status: "draft", listez-les pour l'utilisateur avec orshot_list_social_posts, publiez ou planifiez celles approuvées. Une mise à jour par changement de légende ou d'heure.
Modèle 2 : planifier au meilleur moment pour poster
orshot_get_best_time_to_post pour la plateforme, prenez le meilleur créneau (UTC), convertissez-le dans le fuseau horaire de l'utilisateur, transmettez-le comme scheduled_for. Si les créneaux sont vides, demandez à l'utilisateur une heure plutôt que d'en inventer une.
Modèle 3 : cross-posting, toutes les plateformes, extras spécifiques à la plateforme
Un seul tableau accounts avec tous les identifiants. Mettez le lien dans platformOptions[<linkedin id>].firstComment, un title et un link pour Pinterest, et tiktokSettings.autoAddMusic pour les publications photo TikTok. Gardez content sous la limite la plus courte des plateformes que vous ciblez (X est la plus restrictive).
Modèle 4 : carrousel à partir d'un template multi-pages
Rendez un template de 5 à 10 pages avec des clés pageN@ et ajoutez publish. Orshot télécharge chaque page et publie un carrousel sur Instagram, LinkedIn, TikTok (mode photo), Threads et Bluesky. La compétence orshot-carousel a la formule des 6 diapositives.
Modèle 5 : apprendre des résultats
Quotidiennement : orshot_get_social_analytics avec source: "orshot", triez par engagement, conservez les styles d'accroche du quart supérieur, abandonnez le quart inférieur, rédigez les brouillons de la semaine suivante. Enregistrez ce qui a changé pour que l'utilisateur puisse lire le journal.
Modèle 6 : récupérer un échec
partial ou failed avec action: "reconnect" : dites à l'utilisateur quel compte reconnecter dans le tableau de bord (Espace de travail > Réseaux sociaux > Comptes), conservez la publication en tant que brouillon, réessayez avec orshot_publish_social_draft après confirmation. Toute autre error : affichez-la textuellement ; ne réessayez pas aveuglément.
Règles de sécurité
- Ne publiez jamais sans un feu vert explicite pour cette publication. "Prépare", "brouillon", "montre-moi" signifient
status: "draft". - Répétez exactement les comptes (plateforme et nom d'utilisateur), la légende et l'heure avant d'envoyer.
- Ne supprimez pas les publications que l'utilisateur ne vous a pas demandé de supprimer.
- Mentionnez le module complémentaire à 12 $ par compte une fois avant de suggérer à l'utilisateur de connecter plus de comptes.
- Via REST, conservez la clé API dans l'environnement. Ne l'affichez jamais.
Pièges courants
- Les identifiants de compte sont numériques et par compte. Deux comptes LinkedIn ont deux identifiants. Publiez par identifiant, jamais par nom de plateforme.
- Le PDF ne peut être publié nulle part. Rendez en
png,jpgouwebp(oump4pour les plateformes vidéo). - TikTok et YouTube acceptent la vidéo, pas les images uniques. TikTok accepte les carrousels de photos (plusieurs images). Google Business n'accepte que les images.
scheduled_forà moins de 60 secondes est rejeté, et il est invalide avecdraftoupublished.- Instagram et TikTok publient de manière asynchrone.
processingn'est pas un échec. Synchronisez ou relisez la publication avant de faire un rapport. - Un échec de publication n'échoue jamais le rendu. Lisez
publish[]même si le rendu a réussi. - Les URLs de médias doivent être publiques. Les URLs de rendu Orshot le sont. Les URLs signées ou localhost ne le sont pas.
- Les légendes de plus de 5000 caractères sont rejetées. Les limites des plateformes sont inférieures ; X est la plus courte.
- Les analytics sont limitées à 10 requêtes par minute sur tous les endpoints d'analytics.
- Les espaces de travail du plan gratuit ne peuvent pas connecter de comptes. Une erreur 403 sur
/social/*avec un message de plan est un état de facturation, pas un bug d'authentification. Dirigez vers https://orshot.com/pricing.
Référence rapide
openclaw mcp add orshot --url https://mcp.orshot.com/mcp --transport streamable-http --auth oauth && openclaw mcp login orshot
GET /v1/social/accounts?include_health=true # orshot_list_social_accounts
POST /v1/studio/render # + publish: { accounts, content, status, scheduled_for, timezone, platformOptions, tiktokSettings } orshot_render_template
POST /v1/social/publish # { accounts, content, media_url | media_urls, status, scheduled_for, timezone, platformOptions, tiktokSettings } orshot_publish_social_post
GET /v1/social/posts?status=draft # orshot_list_social_posts
GET /v1/social/posts/:id # orshot_get_social_post
PATCH /v1/social/posts/:id # orshot_update_social_post
POST /v1/social/posts/:id/publish # orshot_publish_social_draft
POST /v1/social/posts/:id/sync
DELETE /v1/social/posts/:id # orshot_discard_social_post
GET /v1/social/analytics # orshot_get_social_analytics
GET /v1/social/analytics/daily?from=&to= # orshot_get_social_analytics_daily
GET /v1/social/analytics/accounts?from= # orshot_get_social_followers
GET /v1/social/analytics/insights?platform= # orshot_get_best_time_to_post
Documentation : https://orshot.com/docs/publish/introduction.md, https://orshot.com/docs/api-reference/social-publish.md, https://orshot.com/docs/api-reference/social-posts-list.md. Les détails de rendu se trouvent dans la compétence orshot.