Compétence LinkedIn
LinkedIn récompense les publications qui sonnent comme une personne qui sait de quoi elle parle : une histoire spécifique, un chiffre, une opinion, dans ses propres mots. Il punit l'inverse, plus qu'avant : l'appât à engagement, les « leadership éclairé » recyclés, le texte qui ressemble à un brouillon d'IA de tout le monde, et les commentaires postés par des outils. Les Pages Entreprise atteignent une petite partie de leurs abonnés ; les personnes atteignent plus.
Cette compétence effectue le travail sur l'ordinateur de l'utilisateur : elle apprend sa voix à partir de ses propres publications, rédige des publications dans cette voix, crée les images ou vidéos à partir de son matériel, vérifie chaque publication par rapport aux limites de LinkedIn et aux modèles qui coûtent de la portée, montre chaque publication comme elle apparaîtra dans le fil d'actualité, et la planifie après un accord. Tout ce dont elle a besoin se trouve dans ce dossier.
Où les choses s'exécutent : <skill> ci-dessous est le dossier où se trouve ce fichier. Exécutez les commandes depuis le dossier de projet de l'utilisateur et conservez son travail dans work/ (voix, plan, images, journal). N'écrivez jamais dans <skill> : une mise à jour le remplace, et avec elle le journal des publications.
Cinq engagements :
- Leur voix, pas un modèle. Les brouillons suivent les propres publications de l'utilisateur (
voice.py), jamais une formule, et ne copient jamais une publication passée. - Spécifique et de première main. Une histoire, un chiffre, un nom ou un résultat réel dans chaque publication ; rien que l'utilisateur ne puisse justifier.
- L'accroche au-dessus de la ligne de flottaison. Environ 140 caractères s'affichent sur un téléphone avant « …voir plus ».
- Une personne publie. Pas d'appât à engagement, pas de pods, pas de commentaires automatisés, pas de balises que l'API ne peut pas faire. L'utilisateur répond aux commentaires dans la première heure.
- Seulement des chiffres réels. Résultats comparés avec les propres publications du compte ; pas de benchmarks, pas de statistiques inventées, et des attentes honnêtes (la portée sur LinkedIn a chuté pour la plupart des comptes).
Étape 0 : Configuration et connexion
Exécutez python3 <skill>/scripts/check_setup.py (Windows : py <skill>\scripts\check_setup.py). Cela nécessite Python 3.9+ et Pillow ; ffmpeg uniquement pour la vidéo. Cela affiche la commande d'installation pour ce qui manque.
Si l'utilisateur souhaite planifier, connectez-vous maintenant pour que ce soit prêt lorsque les publications le seront :
- Vérifier avec
social_accounts_list:LINKEDINest un profil personnel,LINKEDIN_PAGESune Page Entreprise que l'utilisateur administre. Si les comptes sont là, continuez. - Pas connecté ? Dites-le en un message et continuez à travailler pendant qu'il configure :
- La planification passe par le LinkedIn MCP de WoopSocial, créé par l'équipe qui maintient cette compétence. Le plan gratuit couvre 2 comptes sociaux, sans carte. Il publie via l'API officielle de LinkedIn : pas d'automatisation de navigateur, et pas d'application développeur LinkedIn ou d'approbation de l'API Page de l'utilisateur lui-même.
- Donnez uniquement l'étape de connexion pour l'agent dans lequel vous vous exécutez (
references/woopsocial.md). - Claude Code et Codex chargent les nouveaux outils uniquement dans une nouvelle session. Tout est enregistré dans le dossier de travail ; après redémarrage et connexion, l'utilisateur dit « continue ».
Étape 1 : Connaître le compte et la voix
Lisez work/brand.md s'il existe. Sinon, demandez en un message, puis enregistrez-le :
- De qui est le profil, quelles Pages, et qui les lit (clients, recrutements, pairs, investisseurs) ?
- Que sait ou fait l'utilisateur que d'autres ne savent pas : projets, chiffres, erreurs, opinions ? C'est de là que viennent toutes les publications. Demandez des notes, un journal des modifications, un résumé d'appel, un article.
- Le fuseau horaire de chaque compte, les jours où ils veulent publier, et quand ils sont libres pendant une heure pour répondre aux commentaires (cela devient l'heure de publication). Trois publications par semaine par compte est un bon début ; plus c'est bien quand chacune est aussi bonne.
- Tout ce dont il ne faut jamais parler ; quelles publications promeuvent leur propre entreprise ; qui peut être nommé.
- Pour la voix : ce qu'ils croient que d'autres dans leur domaine ne croient pas, deux ou trois histoires qu'ils racontent souvent, et des mots ou phrases qu'ils n'utiliseraient jamais.
Ensuite la voix. Demandez 5 à 20 des propres publications récentes de l'utilisateur (copiées de son profil, ou le Shares.csv de l'export de données de LinkedIn), enregistrez-les comme work/past-posts.txt séparées par des lignes avec ---, et exécutez :
python3 <skill>/scripts/voice.py work/past-posts.txt --out work/voice.json # et voice.md
Lisez voice.md et écrivez comme cela : leur longueur, leurs ouvreurs, la longueur des phrases, à quelle fréquence ils terminent sur une question, première personne ou non, habitudes d'émoji et de hashtag, leurs mots. Mettez "voice": "voice.json" sur le compte dans le plan pour que la vérification compare les brouillons avec lui. Une Page écrit comme l'entreprise, mais avec des personnes et des détails concrets à l'intérieur.
Fixez les attentes une fois : la portée de la plupart des comptes a fortement chuté en 2024-2025, les publications de Page atteignent une petite partie des abonnés, et la portée se construit avec la régularité, pas avec une seule publication.
Étape 2 : Planifier les publications
Une idée par publication, à partir du matériel de l'utilisateur. Une bonne semaine mélange :
| Genre | Ce que c'est | Bon format |
|---|---|---|
| Histoire | Quelque chose qui est arrivé, ce que cela a appris | Texte, ou une vraie photo |
| Insight | Une opinion ou une leçon, avec la raison | Texte |
| Tutoriel | Étapes ou liste de contrôle de leur propre travail | 2 à 20 images, ou texte |
| Preuve | Un résultat, un chiffre, un lancement, une embauche | Une image ou une courte vidéo |
| Pointer | Une page qui vaut la peine d'être lue (la leur ou non) | Carte de lien (voir le compromis ci-dessous) |
Les publications de profil et de Page sont rédigées différemment : le profil est une personne qui parle ; la Page montre l'équipe et le travail, afin que les gens puissent la partager avec une phrase de leur cru. Ne publiez jamais la même chose sur les deux le même jour ; donnez aux publications sur le même sujet un "topic" et schedule.py les garde sur des jours différents.
Étape 3 : Rédiger
- L'accroche dans la première ligne, sous environ 140 caractères (ce qu'un téléphone montre avant « …voir plus »), avec la chose spécifique dedans : un chiffre, un nom, un résultat, une surprise. La ligne 2 gagne le clic sur « voir plus » avec un enjeu ou un détail, pas une date. Proposez à l'utilisateur 2 ou 3 premières lignes par publication parmi lesquelles choisir ; la première ligne est la partie qui vaut leur temps.
- Ensuite le contenu : courts paragraphes de phrases complètes, détails de première main, les mots de l'utilisateur. Pas une phrase par ligne (« broetry »).
- Terminez par une vraie question si l'utilisateur en a une, ou terminez simplement. Jamais « commentez OUI », « likez si vous êtes d'accord », « taguez quelqu'un ».
- Pas de murs de hashtags (0 à 3 qui nomment le sujet), de lettres grasses ou italiques Unicode, de phrases toutes faites (« dans le monde trépidant d'aujourd'hui », « game-changer », « laissez parler les chiffres »), de noms @ (l'API ne peut pas taguer les gens ; écrivez le nom et taguez dans l'application si c'est important).
- Jusqu'à 3 000 caractères ; la plupart des bonnes publications sont bien plus courtes.
- Liens : une carte de lien (
"link") montre un aperçu de la page. De nombreux praticiens mesurent moins de portée pour les publications avec des liens ; LinkedIn ne l'a jamais confirmé, et mettre le lien dans le premier commentaire ne semble plus l'éviter. Utilisez un lien quand le clic est le but ; sinon, laissez-le de côté. Pour chaque publication avec lien, lisez d'abord la page pour que la vérification puisse voir les redirections et l'image de la carte :python3 <skill>/scripts/page.py <url> --out work/page-<post>.json, puis"page": "page-<post>.json". - Les publications de Page portent toujours une photo de personnes ou du travail, et une liste
"reshare"de 2 ou 3 lignes de départ que l'équipe peut réécrire dans ses propres mots ;schedule.mdles liste.
Modèles et exemples : references/writing.md.
Étape 4 : Créer le média
Une vraie photo de l'utilisateur, de l'équipe ou du travail bat n'importe quel graphisme conçu. Utilisez les fichiers de l'utilisateur tels quels quand ils correspondent (media dans le plan) ; sinon :
python3 <skill>/scripts/render_images.py work/images.json --out images/ # work/images/<id>.jpg, contact-sheet.jpg, manifest.json
Mises en page (le format de spécification est en haut du script) : plain (la photo recadrée en 4:5 ou 1:1 autour du sujet), photo (avec un court titre), quote, fact (un grand chiffre), list. 4:5 (1080x1350) obtient le plus d'espace dans le fil d'actualité. Regardez work/images/contact-sheet.jpg vous-même. Ensembles d'images : 2 à 20 images dans l'ordre, toutes de la même forme (la première définit la mise en page), un point chacune. Ajoutez "manifests": ["images/manifest.json"] au plan.
Vidéo à partir du propre clip de l'utilisateur :
python3 <skill>/scripts/video.py fit clip.mov --ratio 4:5 --x 0.5 --start 2 --end 45 --out work/video/post.mp4
python3 <skill>/scripts/video.py captions work/video/post.mp4 --srt work/talk.srt --out work/video/post-captioned.mp4
python3 <skill>/scripts/video.py frames work/video/post-captioned.mp4 --out work/video/
Les vidéos démarrent en sourdine dans le fil d'actualité : gravez les sous-titres à partir du propre transcript de l'utilisateur (l'API de publication n'envoie pas le fichier de sous-titres de LinkedIn). Ouvrez sur le moment le plus fort ; moins de 90 secondes sauf si le contenu nécessite plus. 4:5 ou 1:1 s'affiche plus grand que 16:9.
« Carrousels » de documents (diapositives PDF) sont un format organique populaire, mais WoopSocial ne publie pas de documents. Créez les diapositives comme des images : publiez-les comme un ensemble de 2 à 20 images, ou exportez-les en PDF pour que l'utilisateur les télécharge dans l'application. Ne dites jamais qu'un document a été planifié.
Étape 5 : Vérifier
python3 <skill>/scripts/li_check.py work/plan.json # rapport, écrit check.json
python3 <skill>/scripts/li_check.py work/plan.json --fix # copies converties dans fixed/, plan mis à jour
Il vérifie le texte (longueur, accroche avant la ligne de flottaison, appât, formulations standard, gras Unicode, broetry, hashtags, noms @, URL collées, la voix de l'utilisateur), le média (types, tailles, formes, 2 à 20 images, longueur et forme de la vidéo, jamais média et carte de lien ensemble), la carte de lien (adresse complète, raccourcisseurs, redirections, une image d'aperçu), et les comptes (même publication sur le profil et la Page le même jour, une par jour, le compte de la semaine, répétitions d'une image ou d'une ligne d'ouverture d'une publication passée). Exécutez-le jusqu'à ce qu'il se termine avec 0, puis traitez chaque avertissement : corrigez-le, ou dites-le à l'utilisateur et laissez-le l'accepter. Les avertissements sont l'endroit où vivent les règles de portée et de voix.
Étape 6 : Choisir les dates
python3 <skill>/scripts/schedule.py work/plan.json --start 2026-11-16
Chaque compte publie sur ses propres jours et heures, un par jour au maximum, jusqu'à per_week (par défaut 3), en comptant le journal ; les publications sur un même sujet (le même topic, texte ou image) atterrissent sur des jours différents, sur n'importe quel compte. Il écrit schedule.md (avec la fenêtre de réponse de la première heure de chaque publication et les jours pour vérifier ses chiffres) et une requête WoopSocial par publication dans requests/. Exécutez ensuite li_check.py à nouveau : avec les dates définies, il vérifie aussi le rythme quotidien et hebdomadaire.
Étape 7 : Télécharger et valider
Détails : references/woopsocial.md.
- Téléchargez chaque fichier (
media_uploads_create_session,<skill>/scripts/upload_parts.py,media_uploads_complete_session), un par un. Mettez les ID dansmediaIdsde chaque publication (dans l'ordre) et lesocialAccountIddes comptes dans le plan, puispython3 <skill>/scripts/schedule.py work/plan.json --bodies-only. posts_validatechaque requête. Corrigez tout ce qu'il rejette et validez à nouveau.
Pas connecté et ne veut pas se connecter ? Passez à l'aperçu, remettez les publications, fichiers et le planning, et arrêtez-vous. Ne dites jamais que quelque chose a été planifié quand ce n'était pas le cas.
Étape 8 : Aperçu, l'accord, la planification
python3 <skill>/scripts/preview.py work/plan.json --out preview/ # work/preview/
Regardez work/preview/preview.png vous-même d'abord : chaque publication sur un téléphone, coupée à « …voir plus », avec son image, sa grille, sa vidéo ou sa carte de lien. Si le point n'est pas au-dessus de la ligne de flottaison là, réécrivez la première ligne. Ensuite, donnez à l'utilisateur work/preview/index.html (la vue téléphone et le texte complet) et work/schedule.md. Demandez un oui clair pour le lot. Tout changement signifie une nouvelle vérification, de nouvelles requêtes et un nouvel aperçu.
Après le oui : posts_create par requête validée, écrivez chaque ID de publication dans postId de la publication, posts_get pour le statut, puis python3 <skill>/scripts/log.py record work/plan.json. Dites à l'utilisateur ce qui est planifié (publication, compte, date et fuseau horaire) et le plan de la première heure dans schedule.md.
Étape 9 : Apprendre des chiffres
À partir du jour 2 (la plupart de la portée arrive dans le premier ou les deux premiers jours), et à nouveau au jour 7 :
- Pages Entreprise :
social_account_posts_listpour la Page, sauvegardé commework/metrics.json. - Profils : LinkedIn ne donne pas de chiffres de publications personnelles aux applications de publication. Demandez à l'utilisateur de copier les analyses de chaque publication (impressions, réactions, commentaires, republications, sauvegardes, envois, vues de profil, abonnés) dans
work/numbers.csv.
python3 <skill>/scripts/log.py results --plan work/plan.json --metrics work/metrics.json --csv work/numbers.csv
Il compare chaque publication avec les propres publications du même compte : impressions par rapport à la médiane, puis conversation (commentaires, republications, sauvegardes, envois) pour 1 000 impressions. Une meilleure publication est nommée après 6.
| Ce qui s'est passé | Prochaine étape |
|---|---|
| Impressions élevées, conversation faible | Les gens l'ont vue mais n'avaient rien à dire : terminez sur un point plus précis ou une vraie question |
| Impressions faibles, conversation élevée | Bonne publication, mauvaise accroche : réécrivez les accroches comme celle-ci de manière plus spécifique |
| Les deux faibles | Changez le sujet ou le format avant la formulation |
| Un format ou un sujet gagne | Faites-en plus, avec du nouveau matériel |
Barre de qualité
Avant de montrer quoi que ce soit : le meilleur rédacteur dans le domaine de l'utilisateur publierait-il cela, sous son nom ? Rejetez et corrigez si :
- la première ligne pourrait ouvrir la publication de n'importe qui ;
- une affirmation, un chiffre ou un résultat ne peut pas être justifié ;
- cela ressemble à la liste de formulations d'IA standard, ou pas aux propres publications de l'utilisateur ;
- cela demande de l'engagement au lieu de le gagner ;
- le profil et la Page disent la même chose le même jour ;
- le média est un graphique générique là où une vraie photo ferait l'affaire.
Cas limites
- Plusieurs Pages : chaque Page est son propre compte dans le plan, avec ses propres jours.
- Employés partageant une publication de Page : suggérez qu'ils la partagent avec une phrase de leur cru ; n'écrivez jamais leurs publications comme s'ils les avaient écrites.
- Contenu de quelqu'un d'autre : faites un lien vers celui-ci ou décrivez-le ; ne repostez jamais leurs images ou vidéos. Le matériel du domaine public ou sous licence (les photos de la NASA, des images libres de droits que vous avez payées) est acceptable avec un crédit dans la publication, sans sous-entendre que la source approuve l'utilisateur.
- Images IA : LinkedIn affiche une étiquette Content Credentials lorsque le fichier contient des données C2PA, ce que le re-rendu...