ContentFlows/Documentación

Solución de problemas y guías de tokens

Instrucciones paso a paso para conectar LinkedIn, Facebook, Instagram y YouTube a ContentFlows. Cada plataforma requiere dos valores: un token de acceso (lo que concede permiso) y un ID (la cuenta / página / canal en la que publicar). Ambos se pegan en tu panel.

Cómo se almacenan las credenciales

Los valores de las cuatro plataformas se guardan como un único blob JSON cifrado en AWS Secrets Manager en contentflows/tenants/YOUR_TENANT_ID/social-tokens. Los secretos nunca se registran, nunca se muestran de nuevo después de guardarlos y quedan aislados de tu cuenta. ContentFlows nunca almacena la contraseña de tus redes sociales.


LinkedIn

ContentFlows usa la API UGC Posts de LinkedIn para publicar en tu nombre. Necesitas un token de acceso con el scope de permisos w_member_social, además del member URN de la cuenta bajo la que deben aparecer las publicaciones.

Campos que ContentFlows te pedirá

LINKEDIN_ACCESS_TOKEN
Token de acceso OAuth 2.0 (vigencia de 60 days). Empieza por AQV… o algo similar.
LINKEDIN_AUTHOR_ID
Member URN — tiene un formato como urn:li:person:XXXXXXXXXX o urn:li:organization:NNNNNN para una Company Page.

Requisitos previos

  • Una cuenta de LinkedIn (perfil personal) — las publicaciones se harán desde esta cuenta
  • Una cuenta gratuita de desarrollador de LinkedIn — se crea automáticamente cuando creas una app

Paso a paso

1

Ve al LinkedIn Developer Portal

Abre linkedin.com/developers/apps e inicia sesión. Haz clic en Create app.
2

Completa los detalles de la app

  • App name: cualquier cosa — p. ej. “ContentFlows Publisher”
  • LinkedIn page: debes vincular una LinkedIn Company Page. Si no tienes una, crea primero una página básica de empresa (gratis).
  • App logo: sube cualquier imagen cuadrada
Haz clic en Create app.
3

Solicita el producto 'Share on LinkedIn'

En la página de la app, haz clic en la pestaña Products. Busca Share on LinkedIn y haz clic en Request access. Normalmente se aprueba al instante.
4

Añade tu URI de redirección

Ve a la pestaña Auth. En OAuth 2.0 settings, añade esta URL de redirección:
https://www.linkedin.com/developers/tools/oauth/redirect
Haz clic en Update.
5

Genera el token de acceso

Ve a linkedin.com/developers/tools/oauth/token-generator. Selecciona tu app, marca w_member_social (y r_liteprofile si está disponible), haz clic en Request access token, luego en Allow. Copia el token — no volverá a mostrarse. Este es tu LINKEDIN_ACCESS_TOKEN.
6

Encuentra tu Member URN

En la misma herramienta token-generator, usa el tester de API integrado:
GET https://api.linkedin.com/v2/userinfo
La respuesta contiene sub — antepón urn:li:person: para formar tu URN. Por ejemplo, si sub = "ABC123xyz", tu URN es urn:li:person:ABC123xyz. Este es tu LINKEDIN_AUTHOR_ID.
Consejo: Para publicar desde una LinkedIn Company Page en lugar de desde tu perfil personal, usa urn:li:organization:COMPANY_PAGE_NUMERIC_ID — el ID numérico es visible en la URL de administración de la Page.
7

Pega ambos valores en ContentFlows

En tu panel, ve a Integrations → LinkedIn. Pega el token de acceso en el campo Access token y el URN en el campo Member URN, y luego haz clic en Save.
Nota: Los tokens de acceso de LinkedIn caducan después de 60 days. Repite los pasos 5 y 7 cada dos meses (el URN nunca cambia). Pon un recordatorio en el calendario.

Facebook

ContentFlows publica en una Facebook Page (no en un perfil personal). Necesitas un Page access token con permiso pages_manage_posts, además del Page ID numérico.

Campos que ContentFlows te pedirá

FB_PAGE_ACCESS_TOKEN
Token de acceso de la Page de larga duración (60 days) de Meta for Developers.
FB_PAGE_ID
El ID numérico de la Facebook Page que administras (p. ej. 123456789012345).

Requisitos previos

  • Una cuenta de Facebook que sea Admin de una Facebook Page
  • Si aún no tienes una Facebook Page, crea una en facebook.com/pages/create (gratis, tarda 2 minutes)

Paso a paso

1

Abre el portal de Meta for Developers

Ve a developers.facebook.com/apps e inicia sesión. Haz clic en Create App.
2

Selecciona el tipo de app y completa los detalles

Elige Business como tipo de app. Rellena el nombre de la app, el correo de contacto y haz clic en Create App.
3

Añade el producto Facebook Login

En el panel, busca Facebook Login en la lista de productos y haz clic en Set up. No hace falta ninguna configuración adicional.
4

Obtén un token de usuario desde Graph API Explorer

Abre el Graph API Explorer:
  • En el desplegable de la esquina superior derecha, selecciona tu app
  • Haz clic en Generate Access Token
  • En la ventana emergente de permisos, marca todos estos:
    • pages_manage_postsnecesario para publicar posts (el scope que más a menudo falta)
    • pages_read_engagement
    • pages_show_list
    • business_management
    • instagram_basic — solo si planeas reutilizar este token para Instagram
    • instagram_content_publish — solo si planeas reutilizar este token para Instagram
  • Haz clic en Generate Access Token y autoriza
Esto te da un User access token de corta duración (válido unas 2 hours). Los pasos 5–6 lo convierten en un token de acceso de Page que no caduca.
5

Amplía el token de usuario a uno de larga duración (60 days)

Pega el token de usuario en el Access Token Debugger, haz clic en Debug y luego en Extend Access Token en la parte inferior. Obtendrás un nuevo token de usuario válido durante unas 60 days. Usa este token ampliado en el siguiente paso.
6

Obtén el Page access token Y el Page ID

Vuelve a Graph API Explorer, pega el token de usuario de larga duración del paso 5 en el campo Access Token y ejecuta:
GET /me/accountsSubmit
En la respuesta JSON, encuentra tu Page. Tiene dos campos importantes:
  • access_token → este es tu FB_PAGE_ACCESS_TOKEN — como lo has derivado de un token de usuario de larga duración, este token de Page nunca caduca
  • id → este es tu FB_PAGE_ID
Copia ambos valores.
7

Pega ambos valores en ContentFlows

En tu panel, ve a Integrations → Facebook. Pega el token de la Page en Page access token y el ID numérico de la Page en Page ID, y luego haz clic en Save.
8

Comprueba que el token tiene los scopes correctos (opcional pero recomendado)

Pega tu nuevo token de Page en el Access Token Debugger y comprueba:
  • Type: PAGE (no USER — si dice USER, copiaste el token equivocado en el paso 6)
  • Expires: Never (si muestra una fecha, te saltaste el paso 5 — el token de usuario seguía siendo de corta duración cuando llamaste a /me/accounts)
  • Scopes: debe incluir pages_manage_posts. Si falta, no marcaste esa casilla en el paso 4 — vuelve a empezar desde el paso 4.
Consejo: Causa habitual del 403: Si tus publicaciones programadas fallan con {"error":{"message":"(#200) Permissions error"}}, casi siempre es porque al token le falta pages_manage_posts. Verifícalo con el depurador (paso 8) y regenera el token si hace falta.

Instagram

La publicación en Instagram usa la Facebook Graph API, así que tu cuenta de Instagram debe ser una Professional account (Business o Creator) vinculada a una Facebook Page. Las cuentas personales de Instagram no pueden publicar mediante API.

Campos que ContentFlows te pedirá

IG_ACCESS_TOKEN
Opcional — déjalo en blanco y ContentFlows usará FB_PAGE_ACCESS_TOKEN como fallback. Rellénalo solo si tienes un token específico para Instagram.
IG_BUSINESS_ACCOUNT_ID
El Instagram Business Account ID vinculado a tu Facebook Page (p. ej. 17841412345678901).

Requisitos previos

  • Una cuenta de Instagram Business o Creator (no una cuenta personal)
  • Esa cuenta de Instagram vinculada a una Facebook Page que administras
  • Una app de desarrollador de Meta con permiso instagram_content_publish

Convierte a una Professional account (si hace falta)

1

Cambia el tipo de cuenta en la app de Instagram

En tu teléfono, ve a tu perfil de Instagram → toca el menú ☰ → SettingsAccountSwitch to Professional Account. Elige Business o Creator.
2

Vincula Instagram a tu Facebook Page

Siguiendo en los ajustes de Instagram, ve a AccountLinked AccountsFacebook. Inicia sesión y selecciona tu Page.

Obtener el Instagram Business Account ID

3

Abre Graph API Explorer

Ve a developers.facebook.com/tools/explorer. Selecciona tu app y genera un token con estos permisos:
instagram_basic, instagram_content_publish, pages_read_engagement, pages_manage_posts
4

Encuentra tu Instagram Business Account ID

Ejecuta GET /me/accounts. Encuentra tu Page y copia su id. Después ejecuta:
GET /{page-id}?fields=instagram_business_account
(reemplaza {page-id} con el ID de tu Page). La respuesta contiene un objeto instagram_business_account — copia su id. Este es tu IG_BUSINESS_ACCOUNT_ID.
5

Pega los valores en ContentFlows

En tu panel, ve a Integrations → Instagram. Pega el IG Business Account ID en Business Account ID. Deja en blanco el campo Access token para reutilizar el token de la Facebook Page que ya configuraste — esa es la vía más simple y la que usa la mayoría de la gente. Haz clic en Save.
Nota: Si ya has guardado Facebook, el token de acceso de Instagram usa por defecto el token de la Page de Facebook. Solo necesitas proporcionar IG_BUSINESS_ACCOUNT_ID.

YouTube

ContentFlows usa YouTube Data API v3 para generar metadatos de vídeo (títulos, descripciones, etiquetas) para tu calendario de contenido. Necesitas una API key de Google Cloud Console y el ID de tu canal.

Campos que ContentFlows te pedirá

YOUTUBE_API_KEY
API key de Google Cloud con YouTube Data API v3 habilitada. Empieza por AIza…
YOUTUBE_CHANNEL_ID
El ID de tu canal de YouTube (p. ej. UCxxxxxxxxxxxxxxxxxxxxxx). Encuéntralo en YouTube Studio → Settings → Channel → Advanced settings.

Requisitos previos

  • Una cuenta de Google
  • Un canal de YouTube vinculado a esa cuenta
  • Un proyecto gratuito de Google Cloud (lo crearás durante el primer paso)

Paso a paso

1

Crea un proyecto de Google Cloud

Ve a console.cloud.google.com/projectcreate, dale a tu proyecto cualquier nombre (p. ej. “ContentFlows”) y haz clic en Create.
2

Habilita YouTube Data API v3

Con el nuevo proyecto seleccionado, ve a YouTube Data API v3 y haz clic en Enable.
3

Crea una API key

Ve a APIs & Services → Credentials. Haz clic en + Create credentials → API key. Copia la clave — esta es tu YOUTUBE_API_KEY.
Consejo: Haz clic en Restrict key y limítala a YouTube Data API v3 por seguridad.
4

Encuentra tu YouTube Channel ID

Ve a YouTube StudioSettings (icono de engranaje abajo a la izquierda) → ChannelAdvanced settings. Tu Channel ID aparece allí — cópialo. Empieza por UC. Este es tu YOUTUBE_CHANNEL_ID.
5

Pega ambos valores en ContentFlows

En tu panel, ve a Integrations → YouTube. Pega la API key en API key y el ID del canal en Channel ID, y luego haz clic en Save.
Nota: La API key es de solo lectura — genera metadatos pero NO sube vídeos. La subida sigue requiriendo OAuth, que hoy no forma parte del flujo de incorporación.


Dominio de envío (DKIM / SPF / DMARC)

Por defecto, los newsletters salen desde noreply@contentflows.cc. Autenticar tu propio dominio mejora la entregabilidad (menos llegadas a la carpeta de spam) porque la dirección From coincide con las firmas DKIM y con tu marca visible.

Requisitos previos

  • Eres propietario de un dominio (p. ej. your-business.com).
  • Puedes crear registros DNS en tu registrador (Cloudflare, Route53, GoDaddy, Namecheap, etc.).

Paso a paso

1

Inicia el flujo

En tu panel, abre Brand → busca la tarjeta Sending domain en la parte inferior → escribe tu dominio (p. ej. your-business.com) → haz clic en Save & show DNS records.
2

Copia los 5 registros DNS

La tarjeta muestra ahora 5 registros:
  • 3 × CNAME (tokens DKIM)
  • 1 × TXT en la raíz (SPF)
  • 1 × TXT en _dmarc.your-domain.com (DMARC)
Usa el botón Copy junto a cada fila para copiarlos uno a uno.
3

Pégalos en tu proveedor DNS

Inicia sesión en tu proveedor DNS, crea cada registro con el host/nombre y el valor exactos que se muestran. Para los CNAME, no añadas tu dominio como sufijo — el host mostrado es el nombre completo (p. ej. abc123._domainkey.your-domain.com).
Consejo: Usuarios de Cloudflare: desactiva la nube naranja (proxy) en los CNAME DKIM — SES necesita el registro sin proxy.
4

Verifica

De vuelta en el panel, haz clic en I added the records — Verify. La tarjeta consulta SES cada 15 seconds durante un máximo de 10 minutes. La propagación global de DNS suele tardar menos de 2 minutes, pero algunos proveedores necesitan más.
5

Listo

Una vez verificado, todos los newsletters de tu tenant usarán newsletter@your-domain.com como encabezado From, con firmas DKIM, paso SPF y alineación DMARC.
Nota: Puedes eliminar el dominio en cualquier momento desde la misma tarjeta — entonces los emails volverán al remitente compartido noreply@contentflows.cc.

Importar suscriptores

El botón + Import de la pestaña Newsletter abre una ventana modal con tres pestañas:

Carga de CSV

Sube un archivo .csv. La fila de encabezados se detecta automáticamente (cualquier columna cuyo nombre contenga email se trata como columna de correo; cualquier columna con name o first se trata como nombre). Las direcciones de correo no válidas se rechazan; los duplicados se omiten. Marca la casilla de consentimiento antes de que se habilite Import.

Mailchimp

Pega tu Mailchimp API key (formato: abc123...-us21 — la parte después del último guion es el centro de datos) y el Audience ID (panel de Mailchimp Audience → Settings → Audience name and defaults → Audience ID). ContentFlows importa todos los miembros suscritos.

ConvertKit

Pega tu ConvertKit API key (Settings → Advanced → API Key). Se importan todos los suscriptores confirmados.

Problemas habituales

  • Mailchimp 401 Unauthorized — la API key es incorrecta o la cuenta la desactivó. Regénérala en Mailchimp → Account → Extras → API keys.
  • “No valid email addresses” — el parser CSV no detectó ninguna columna de email. Confirma que hay una fila de encabezados y una columna llamada literalmente email.
  • Import finishes instantly with 0 added — todas las filas ya estaban en tu lista. Es normal en reejecuciones.

Problemas habituales

El token no es válido o ha caducado

Los tokens de acceso caducan. Los tokens de LinkedIn duran unas 60 days. Los tokens de Page de Facebook/Instagram nunca caducan cuando se derivan de un token de usuario de larga duración (sigue exactamente los pasos de la sección de Facebook). Genera un token nuevo y actualízalo en Integrations.

Facebook: (#200) Permissions error al publicar

Con diferencia, la causa más habitual es que al token de la Page le falte el scope pages_manage_posts. Este scope es fácil de olvidar en la ventana de permisos porque Graph API Explorer no lo activa por defecto. Verifica tu token en el Access Token Debugger — si pages_manage_posts no aparece en la lista de scopes, regenera el token empezando por el Paso 4 de la guía de Facebook y marca explícitamente ese permiso.

LinkedIn: URN no válido

El Member URN debe empezar por urn:li:person: (para perfiles personales) o urn:li:organization: (para Company Pages), seguido del ID único de la cuenta. Una cadena numérica o alfanumérica sin más no es un URN válido por sí sola.

Permisos insuficientes en LinkedIn

Tu app de LinkedIn no tiene aprobado el producto Share on LinkedIn, o el token se generó sin w_member_social. Vuelve al paso 3 de la guía de LinkedIn y luego regenera el token.

Facebook: Page ID incorrecto

El Page ID es el campo numérico id de /me/accounts, NO el nombre de usuario legible de la URL de la Page. Si pegas el nombre de usuario por error, las publicaciones fallarán.

Debes ser administrador de la Facebook Page

La cuenta de Facebook que generó el token no es Admin de la Page de destino. Pide al administrador de la Page que genere él mismo el token, o pídele que te añada como Admin en facebook.com → Page settings → Page roles.

Instagram: no es una cuenta Business o Creator

Las cuentas personales de Instagram no pueden usar la Content Publishing API. Sigue los pasos de conversión anteriores.

Instagram: la cuenta no está vinculada a una Facebook Page

Tu cuenta Professional de Instagram no está conectada a una Facebook Page. Ve a Instagram Settings → Account → Linked Accounts → Facebook y completa la vinculación.

YouTube: se ha superado la cuota de API

YouTube Data API tiene una cuota predeterminada de 10,000 unidades/día, más que suficiente para las consultas de metadatos de ContentFlows. Si alcanzas el límite, probablemente la misma API key se esté usando en otro sitio — crea una clave dedicada para ContentFlows.


¿Sigues atascado?

Contacta con soporte con el mensaje de error y la plataforma que estás conectando. Incluye el número de paso en el que te has quedado.

Relacionado