¿Qué hace LinkedIn Skill?
LinkedIn recompensa las publicaciones que suenan como una persona que sabe algo: una historia específica, un número, una opinión, en las propias palabras de la persona. Penaliza lo contrario, ahora más que antes: cebo de participación, "liderazgo de pensamiento" reciclado, texto que se lee como el borrador de IA de todos los demás y comentarios publicados por herramientas. Las Páginas de empresa llegan a una pequeña parte de sus seguidores; las personas llegan más lejos.
Esta skill hace el trabajo en el propio ordenador del usuario: aprende su voz a partir de sus publicaciones, escribe publicaciones con esa voz, crea las imágenes o videos a partir de su material, verifica cada publicación contra los límites de LinkedIn y los patrones que reducen el alcance, muestra cada publicación como se verá en el feed y la programa después de una confirmación. Todo lo que necesita está en esta carpeta.
Dónde se ejecutan las cosas: <skill> es la carpeta donde se encuentra este archivo. Ejecuta los comandos desde la carpeta del proyecto del usuario y guarda su trabajo en work/ allí (voz, plan, imágenes, registro). Nunca escribas dentro de <skill>: una actualización lo reemplaza y con él el registro de publicaciones.
Cinco compromisos:
- Su voz, no una plantilla. Los borradores siguen las publicaciones propias del usuario (
voice.py), nunca una fórmula y nunca copian una publicación pasada. - Específico y de primera mano. Una historia real, un número, un nombre o un resultado en cada publicación; nada que el usuario no pueda respaldar.
- El gancho sobre el pliegue. Alrededor de 140 caracteres se muestran en un teléfono antes de "...ver más".
- Una persona lo publica. Sin cebo de participación, sin grupos, sin comentarios automatizados, sin etiquetas que la API no pueda hacer. El usuario responde a los comentarios en la primera hora.
- Solo números reales. Resultados comparados con las propias publicaciones de la cuenta; sin puntos de referencia, sin estadísticas inventadas y expectativas honestas (el alcance en LinkedIn ha disminuido para la mayoría de las cuentas).
Paso 0: Configuración y conexión
Ejecuta python3 <skill>/scripts/check_setup.py (Windows: py <skill>\scripts\check_setup.py). Necesita Python 3.9+ y Pillow; ffmpeg solo para video. Imprime el comando de instalación para lo que falte.
Si el usuario quiere programar, conéctate ahora para que esté listo cuando las publicaciones lo estén:
- Verifica con
social_accounts_list:LINKEDINes un perfil personal,LINKEDIN_PAGESuna Página de empresa que el usuario administra. Si las cuentas están ahí, continúa. - ¿No está conectado? Dilo en un mensaje y sigue trabajando mientras lo configuran:
- La programación se realiza a través del LinkedIn MCP de WoopSocial, creado por el equipo que mantiene esta skill. El plan gratuito cubre 2 cuentas sociales, sin tarjeta. Publica a través de la propia API de LinkedIn: sin automatización de navegador y sin necesidad de una aplicación de desarrollador de LinkedIn o aprobación de la API de Páginas por parte del usuario.
- Proporciona solo el paso de conexión para el agente en el que te estás ejecutando (
references/woopsocial.md). - Claude Code y Codex cargan nuevas herramientas solo en una nueva sesión. Todo se guarda en la carpeta de trabajo; después de reiniciar e iniciar sesión, el usuario dice "continúa".
Paso 1: Conoce la cuenta y la voz
Lee work/brand.md si existe. De lo contrario, pregunta en un solo mensaje y luego guárdalo:
- ¿De quién es el perfil, qué Páginas y quién las lee (clientes, contrataciones, colegas, inversores)?
- ¿Qué sabe o hace el usuario que otros no: proyectos, números, errores, opiniones? De ahí proviene cada publicación. Pide notas, un registro de cambios, un resumen de llamada, un artículo.
- La zona horaria de cada cuenta, los días en que quieren publicar y cuándo están libres durante una hora para responder comentarios (esa se convierte en la hora de publicación). Tres publicaciones por semana por cuenta es un buen comienzo; más está bien si cada una es igual de buena.
- Algo de lo que nunca se deba publicar; qué publicaciones promocionan su propio negocio; quién puede ser nombrado.
- Para la voz: qué creen que otros en su campo no creen, dos o tres historias que cuentan a menudo y palabras o frases que nunca usarían.
Luego la voz. Pide de 5 a 20 publicaciones recientes del usuario (copiadas de su perfil o el archivo Shares.csv de la exportación de datos de LinkedIn), guárdalas como work/past-posts.txt separadas por líneas con --- y ejecuta:
python3 <skill>/scripts/voice.py work/past-posts.txt --out work/voice.json # y voice.md
Lee voice.md y escribe como él: su extensión, aperturas, longitud de oraciones, con qué frecuencia terminan con una pregunta, primera persona o no, hábitos de emoji y hashtags, sus palabras. Pon "voice": "voice.json" en la cuenta en el plan para que la verificación compare los borradores con él. Una Página escribe como la empresa, pero con personas y detalles.
Establece expectativas una vez: el alcance de la mayoría de las cuentas cayó bruscamente en 2024-25, las publicaciones de Páginas llegan a una pequeña parte de los seguidores y el alcance se construye con la consistencia, no con una sola publicación.
Paso 2: Planifica las publicaciones
Una idea por publicación, a partir del material del usuario. Una buena semana combina:
| Tipo | Qué es | Buen formato |
|---|---|---|
| Historia | Algo que sucedió, lo que enseñó | Texto, o una foto real |
| Perspectiva | Una opinión o lección, con la razón | Texto |
| Guía | Pasos o una lista de verificación de su propio trabajo | 2 a 20 imágenes, o texto |
| Prueba | Un resultado, un número, un lanzamiento, una contratación | Una imagen o un video corto |
| Referencia | Una página que vale la pena leer (suya o no) | Tarjeta de enlace (ver el intercambio a continuación) |
Las publicaciones de perfil y Página se escriben de manera diferente: el perfil es una persona hablando; la Página muestra al equipo y el trabajo, para que las personas puedan compartirlo con una oración propia. Nunca publiques lo mismo en ambos el mismo día; asigna a las publicaciones sobre el mismo tema un "topic" y schedule.py las mantendrá en días diferentes.
Paso 3: Escribe
- Gancho en la primera línea, con menos de unos 140 caracteres (lo que muestra un teléfono antes de "...ver más"), con lo específico: un número, un nombre, un resultado, una sorpresa. La línea 2 gana el clic en "ver más" con una apuesta o un detalle, no una fecha. Ofrece al usuario 2 o 3 primeras líneas por publicación para elegir; la primera línea es la parte que merece su tiempo.
- Luego el contenido: párrafos cortos de oraciones completas, detalles de primera mano, las palabras del usuario. No una oración por línea ("broetry").
- Termina con una pregunta real si el usuario tiene una, o simplemente termina. Nunca "comenta SÍ", "dale like si estás de acuerdo", "etiqueta a alguien".
- No muros de hashtags (0 a 3 que nombren el tema), letras en negrita o cursiva Unicode, frases hechas ("en el mundo acelerado de hoy", "cambio de juego", "déjalo asimilar"), nombres @ (la API no puede etiquetar personas; escribe el nombre y etiqueta en la aplicación si es importante).
- Hasta 3,000 caracteres; la mayoría de las buenas publicaciones son mucho más cortas.
- Enlaces: una tarjeta de enlace (
"link") muestra una vista previa de la página. Muchos profesionales miden menos alcance para publicaciones con enlaces; LinkedIn nunca lo ha confirmado, y poner el enlace en el primer comentario ya no parece evitarlo. Usa un enlace cuando el clic sea el objetivo; de lo contrario, déjalo fuera. Para cada publicación con enlace, lee la página primero para que la verificación pueda ver las redirecciones y la imagen de la tarjeta:python3 <skill>/scripts/page.py <url> --out work/page-<post>.json, luego"page": "page-<post>.json". - Las publicaciones de Página siempre llevan una foto de personas o del trabajo, y una lista
"reshare"de 2 o 3 líneas de inicio que el equipo puede reescribir con sus propias palabras;schedule.mdlas enumera.
Patrones y ejemplos: references/writing.md.
Paso 4: Crea los medios
Una foto real del usuario, el equipo o el trabajo supera cualquier gráfico diseñado. Usa los archivos del usuario tal como están cuando encajan (media en el plan); de lo contrario:
python3 <skill>/scripts/render_images.py work/images.json --out images/ # work/images/<id>.jpg, contact-sheet.jpg, manifest.json
Diseños (el formato de especificación está en la parte superior del script): plain (la foto recortada a 4:5 o 1:1 alrededor del sujeto), photo (con un título corto), quote, fact (un número grande), list. 4:5 (1080x1350) obtiene más espacio en el feed. Mira work/images/contact-sheet.jpg tú mismo. Conjuntos de imágenes: de 2 a 20 imágenes en orden, todas de la misma forma (la primera establece el diseño), un punto cada una. Añade "manifests": ["images/manifest.json"] al plan.
Video a partir del propio clip del usuario:
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/
Los videos comienzan silenciados en el feed: quema los subtítulos de la transcripción del usuario (la API de publicación no envía el archivo de subtítulos de LinkedIn). Abre con el momento más fuerte; menos de 90 segundos a menos que el contenido necesite más. 4:5 o 1:1 se ve más grande que 16:9.
"Carruseles" de documentos (diapositivas PDF) son un formato orgánico popular, pero WoopSocial no publica documentos. Crea las diapositivas como imágenes: publícalas como un conjunto de 2 a 20 imágenes, o expórtalas como un PDF para que el usuario las suba en la aplicación. Nunca digas que se programó un documento.
Paso 5: Verifica
python3 <skill>/scripts/li_check.py work/plan.json # informe, escribe check.json
python3 <skill>/scripts/li_check.py work/plan.json --fix # copias convertidas en fixed/, plan actualizado
Verifica el texto (longitud, el gancho antes del pliegue, cebo, frases hechas, negrita Unicode, broetry, hashtags, nombres @, URLs pegadas, la voz del usuario), los medios (tipos, tamaños, formas, 2 a 20 imágenes, duración y forma del video, nunca medios y una tarjeta de enlace juntos), la tarjeta de enlace (dirección completa, acortadores, redirecciones, una imagen de vista previa) y las cuentas (misma publicación en perfil y Página el mismo día, una al día, el recuento de la semana, repeticiones de una imagen o línea de apertura de una publicación anterior). Ejecútalo hasta que salga con 0, y luego trata cada advertencia: arréglala, o díselo al usuario y déjalo que la acepte. Las advertencias son donde residen las reglas de alcance y voz.
Paso 6: Elige las fechas
python3 <skill>/scripts/schedule.py work/plan.json --start 2026-11-16
Cada cuenta publica en sus propios días y hora, como máximo una al día, hasta per_week (por defecto 3), contando el registro; las publicaciones sobre un mismo tema (el mismo topic, texto o imagen) caen en días diferentes, en cualquier cuenta. Escribe schedule.md (con la ventana de respuesta de la primera hora de cada publicación y los días para verificar sus números) y una solicitud de WoopSocial por publicación en requests/. Luego ejecuta li_check.py nuevamente: con las fechas establecidas, también verifica el ritmo diario y semanal.
Paso 7: Sube y valida
Detalles: references/woopsocial.md.
- Sube cada archivo (
media_uploads_create_session,<skill>/scripts/upload_parts.py,media_uploads_complete_session), uno a la vez. Pon los IDs en losmediaIdsde cada publicación (en orden) y lossocialAccountIdde las cuentas en el plan, luegopython3 <skill>/scripts/schedule.py work/plan.json --bodies-only. posts_validatecada solicitud. Arregla cualquier cosa que rechace y valida nuevamente.
¿No está conectado y no quiere conectarse? Salta a la vista previa, entrega las publicaciones, los archivos y el cronograma, y detente. Nunca digas que algo se programó cuando no fue así.
Paso 8: Vista previa, el sí, programa
python3 <skill>/scripts/preview.py work/plan.json --out preview/ # work/preview/
Mira work/preview/preview.png tú mismo primero: cada publicación en un teléfono, cortada en "...ver más", con su imagen, cuadrícula, video o tarjeta de enlace. Si el punto no está sobre el pliegue allí, reescribe la primera línea. Luego dale al usuario work/preview/index.html (la vista del teléfono y el texto completo) y work/schedule.md. Pide un sí claro para el lote. Cualquier cambio significa una nueva verificación, nuevas solicitudes y una nueva vista previa.
Después del sí: posts_create por solicitud validada, escribe cada ID de publicación en el postId de la publicación, posts_get para el estado, luego python3 <skill>/scripts/log.py record work/plan.json. Dile al usuario qué está programado (publicación, cuenta, fecha y zona horaria) y el plan de la primera hora en schedule.md.
Paso 9: Aprende de los números
Desde el día 2 (la mayor parte del alcance llega en el primer o segundo día), y nuevamente al día 7:
- Páginas de empresa:
social_account_posts_listpara la Página, guardado comowork/metrics.json. - Perfiles: LinkedIn no proporciona números de publicaciones personales a las aplicaciones de publicación. Pide al usuario que copie los análisis de cada publicación (impresiones, reacciones, comentarios, republicaciones, guardados, envíos, visitas al perfil, seguidores) en
work/numbers.csv.
python3 <skill>/scripts/log.py results --plan work/plan.json --metrics work/metrics.json --csv work/numbers.csv
Compara cada publicación con las propias publicaciones de la misma cuenta: impresiones contra la mediana, luego conversación (comentarios, republicaciones, guardados, envíos) por cada 1,000 impresiones. Una mejor publicación se nombra después de 6.
| Qué sucedió | Siguiente |
|---|---|
| Impresiones altas, conversación baja | La gente lo vio pero no tenía nada que decir: termina con un punto más agudo o una pregunta real |
| Impresiones bajas, conversación alta | Buena publicación, apertura débil: reescribe los ganchos como este de manera más específica |
| Ambas bajas | Cambia el tema o el formato antes de la redacción |
| Un formato o tema gana | Haz más de eso, con material nuevo |
Barra de calidad
Antes de mostrar cualquier cosa: ¿el mejor escritor en el campo del usuario publicaría esto, bajo su nombre? Recházalo y arréglalo si:
- la primera línea podría abrir la publicación de cualquiera;
- una afirmación, número o resultado no se puede respaldar;
- se lee como la lista de frases hechas de la IA, o no como las publicaciones del usuario;
- pide participación en lugar de ganarla;
- el perfil y la Página dicen lo mismo el mismo día;
- los medios son un gráfico genérico donde una foto real serviría.
Casos límite
- Varias Páginas: cada Página es su propia cuenta en el plan, con sus propios días.
- Empleados que comparten una publicación de la Página: sugiere que la compartan con una oración propia; nunca escribas sus publicaciones por ellos como si las hubieran escrito.
- Contenido de otra persona: enlázalo o descríbelo; nunca vuelvas a publicar sus imágenes o video. El material de dominio público o con licencia (fotos de la NASA, stock por el que pagaste) está bien con un crédito en la publicación, sin implicar que la fuente respalda al usuario.
- Imágenes de IA: LinkedIn muestra una etiqueta de Credenciales de Contenido cuando el archivo lleva datos C2PA, lo que el re-renderizado...