Por qué conectar Airtable a redes sociales
Airtable es posiblemente la mejor herramienta de calendario de contenido disponible. Tiene vistas, filtros, registros vinculados, codificacion por colores y la cantidad justa de estructura. La mayoria de los equipos de marketing ya planifican su contenido ahi. El problema es la ultima milla: una vez que una publicacion esta aprobada en Airtable, alguien todavia tiene que abrir un programador, pegar la descripcion, subir el video, elegir las plataformas y publicar. Para cada publicacion individual.
La API de redes sociales de Upload-Post conecta ese vacio. Acepta una URL de video, una descripcion y una lista de plataformas, y luego publica en todas ellas en una sola solicitud. Combinado con la extension Scripting incorporada de Airtable o Automations, puedes pasar de "Aprobado" en tu base a "Live on 10 platforms" sin salir de tu navegador.
Configura tu Airtable base
Comienza con una tabla llamada "Calendario de contenido" (o lo que se ajuste a tu flujo de trabajo). Aqui tienes la estructura de columnas recomendada:
| Columna | Campo Type | Purpose |
|---|---|---|
| URL del video | URL | Public link to the video file (Google Drive, Dropbox, S3, etc.) |
| Descripción | Long text | Descripción / título de la publicación para todas las plataformas |
| Platforms | Selección múltiple | tiktok, instagram, youtube, linkedin, facebook, x, threads, pinterest |
| Fecha programada | Fecha (con hora) | Cuando la publicación debe salir en vivo (dejar en blanco para inmediata) |
| Status | Selección única | Borrador / Listo / Aprobado / Publicado / Fallido |
| ID del trabajo | Text de una sola línea | Devuelto por la API después de la subida (para seguimiento) |
El campo Estado es el motor principal. Tu equipo lo cambia a "Aprobado" cuando una publicacion esta lista, y la automatizacion se encarga a partir de ahi. Usa el calendario de fechas clave para redes sociales para planificar contenido alrededor de fechas importantes.
Publicar desde Airtable usando la extensión Scripting
Airtable incluye una extension Scripting que ejecuta JavaScript directamente dentro de tu base. No se necesitan herramientas externas. Abre tu base, haz clic en Extensions, agrega "Scripting" y pega el siguiente codigo:
// Airtable Scripting Extension
let table = base.getTable('Calendario de Contenido');
let query = await table.selectRecordsAsync();
let record = query.records.find(r => r.getCellValue('Status')?.name === 'Ready');
if (!record) {
output.text('No records with Status = Ready');
} else {
let formData = new FormData();
formData.append('video_url', record.getCellValue('Video URL'));
formData.append('title', record.getCellValue('Descripción'));
formData.append('user', 'mybrand');
formData.append('platform[]', 'tiktok');
formData.append('platform[]', 'instagram');
let response = await fetch('https://api.upload-post.com/api/upload', {
method: 'POST',
headers: { 'Autorización': 'Apikey your-api-key-here' },
body: formData
});
let result = await response.json();
await table.updateRecordAsync(record, {
'Status': { name: 'Publicado' },
'Job ID': result.job_id
});
output.text('Published! Job ID: ' + result.job_id);
} Este script busca el primer registro con estado "Ready", envia la URL del video y la descripcion a la API de publicación en redes sociales, y luego actualiza el registro con el ID de trabajo devuelto. Puedes ejecutarlo manualmente cuando quieras, o conectarlo a una automatizacion (siguiente seccion).
Para publicacion multiplataforma, lee el campo Plataformas dinamicamente en lugar de escribirlo en el codigo. Consulta nuestra guia sobre como publicar en multiples plataformas a la vez para todos los valores de plataforma disponibles.
Activar con Airtable Automations
Los scripts manuales son utiles, pero la verdadera automatizacion de Airtable a redes sociales significa publicacion sin intervención. Airtable Automations te permite activar un script cuando un registro cumple ciertas condiciones. Asi es como se configura:
- Ve a Automatizaciones en tu base de Airtable
- Crea una nueva automatización
- Activador: "Cuando el registro cumple condiciones" con Estado = "Aprobado"
- Acción: "Ejecutar script"
- En el script, usa
input.config()para recibir el ID del registro desde el activador
// Airtable Automation Script
let inputConfig = input.config();
let table = base.getTable('Calendario de Contenido');
let record = await table.selectRecordAsync(inputConfig.recordId);
let platforms = record.getCellValue('Platforms');
let formData = new FormData();
formData.append('video_url', record.getCellValue('Video URL'));
formData.append('title', record.getCellValue('Descripción'));
formData.append('user', 'mybrand');
for (let p of platforms) {
formData.append('platform[]', p.name.toLowerCase());
}
let response = await fetch('https://api.upload-post.com/api/upload', {
method: 'POST',
headers: { 'Autorización': 'Apikey your-api-key-here' },
body: formData
});
let result = await response.json();
await table.updateRecordAsync(record.id, {
'Status': { name: 'Publicado' },
'Job ID': result.job_id
}); Ahora, cada vez que alguien cambia el estado de un registro a "Aprobado", la automatizacion se ejecuta, llama a la API de Upload-Post y actualiza el registro. Esto crea un flujo de trabajo de aprobacion de contenido: tu equipo redacta en Airtable, un responsable aprueba, y la publicacion sale en vivo automaticamente. Sin pasos manuales, sin programadores, sin copiar y pegar.
Programar publicaciones desde Airtable
Si quieres publicar en una fecha y hora especificas en lugar de inmediatamente, lee el campo Fecha programada y pasalo como scheduled_date a la API. Asi es como conviertes Airtable en una herramienta completa de programacion de redes sociales.
// Add scheduling support
let scheduledDate = record.getCellValue('Scheduled Date');
if (scheduledDate) {
formData.append('scheduled_date', new Date(scheduledDate).toISOString());
formData.append('timezone', 'America/New_York');
}
// Or use the queue for automatic optimal timing
formData.append('add_to_queue', 'true');
El parametro add_to_queue=true le indica a Upload-Post que seleccione el siguiente horario disponible, para que tus publicaciones se espacien en lugar de salir todas a la vez. Lee mas sobre opciones de programacion en nuestra guia de programacion. Tambien puedes consultar nuestras guias dedicadas para programar publicaciones en TikTok y automatizar publicaciones en Instagram.
Usar n8n como puente para flujos de trabajo complejos
Para equipos que necesitan mas logica entre Airtable y la publicacion (aprobaciones por Slack, descripciones generadas por IA, eliminacion de marcas de agua), n8n es la herramienta adecuada. n8n puede vigilar tu base de Airtable para registros nuevos o actualizados, procesarlos a traves de cualquier numero de pasos, y luego llamar a la API de Upload-Post.
Tenemos una plantilla lista que hace exactamente esto:
- Google Drive a Instagram, TikTok y YouTube con descripciones IA y seguimiento en Airtable
- Programa y publica automáticamente videos desde Google Sheets a Instagram, LinkedIn y TikTok
Explora la biblioteca completa de plantillas de n8n para mas flujos de trabajo. Si prefieres constructores visuales, nuestras integraciones con Make.com y Zapier tambien funcionan con Airtable como activador.
Publicar en lote un calendario de contenido completo
En lugar de publicar un registro a la vez, puedes recorrer todos los registros con estado "Listo" y publicarlos todos en una sola ejecucion del script. Esto es util para subidas semanales en lote o cuando tienes acumulacion de contenido pendiente.
// Batch publish all Ready records
let table = base.getTable('Calendario de Contenido');
let query = await table.selectRecordsAsync();
let readyRecords = query.records.filter(
r => r.getCellValue('Status')?.name === 'Ready'
);
output.text('Found ' + readyRecords.length + ' records to publish');
for (let record of readyRecords) {
let platforms = record.getCellValue('Platforms');
let formData = new FormData();
formData.append('video_url', record.getCellValue('Video URL'));
formData.append('title', record.getCellValue('Descripción'));
formData.append('user', 'mybrand');
for (let p of platforms) {
formData.append('platform[]', p.name.toLowerCase());
}
let scheduledDate = record.getCellValue('Scheduled Date');
if (scheduledDate) {
formData.append('scheduled_date', new Date(scheduledDate).toISOString());
}
try {
let response = await fetch('https://api.upload-post.com/api/upload', {
method: 'POST',
headers: { 'Autorización': 'Apikey your-api-key-here' },
body: formData
});
let result = await response.json();
await table.updateRecordAsync(record, {
'Status': { name: 'Publicado' },
'Job ID': result.job_id
});
output.text('Published: ' + record.getCellValue('Descripción'));
} catch (err) {
await table.updateRecordAsync(record, {
'Status': { name: 'Fallido' }
});
output.text('Failed: ' + record.getCellValue('Descripción'));
}
} Para grandes volumenes, consulta nuestra guia de subida masiva de videos a redes sociales. Si prefieres Python para operaciones en lote, la guia de automatizacion con Python cubre como construir un script que lee desde la API REST de Airtable.
Rastrear el estado de subida en Airtable
Despues de enviar una subida, el video puede tardar unos segundos en procesarse y distribuirse a cada plataforma. Puedes consultar el endpoint de estado y escribir el resultado de vuelta en tu registro de Airtable:
// Check upload status and update Airtable
let table = base.getTable('Calendario de Contenido');
let query = await table.selectRecordsAsync();
let pendingRecords = query.records.filter(
r => r.getCellValue('Status')?.name === 'Publicado'
&& r.getCellValue('Job ID')
);
for (let record of pendingRecords) {
let jobId = record.getCellValue('Job ID');
let response = await fetch(
'https://api.upload-post.com/api/uploadposts/status?job_id=' + jobId,
{ headers: { 'Autorización': 'Apikey your-api-key-here' } }
);
let status = await response.json();
if (status.status === 'completed') {
await table.updateRecordAsync(record, {
'Status': { name: 'Live' }
});
} else if (status.status === 'failed') {
await table.updateRecordAsync(record, {
'Status': { name: 'Fallido' }
});
}
} Ejecuta esto como un boton separado de la extension Scripting o configuralo como una automatizacion programada (por ejemplo, cada 10 minutos) para mantener tu base de Airtable sincronizada con los estados reales de las publicaciones. Esto te da un historial de auditoria completo sin verificar el panel de cada plataforma individualmente.
Consejos específicos por plataforma
Al conectar tu calendario de contenido de Airtable a redes sociales, cada plataforma tiene sus particularidades:
- TikTok: Incluye hashtags en la descripcion. La API gestiona el flujo de subida de TikTok automaticamente, incluyendo configuraciones de divulgacion.
- Instagram: Funciona para Reels (video) y carruseles de fotos. Usa
/api/upload_photospara publicaciones de imagenes. - YouTube: Agrega
youtube_descriptionpara una descripcion mas larga separada de la descripcion principal. - LinkedIn: El tono profesional importa. Considera una columna separada de "Descripción para LinkedIn" en Airtable.
Compara este enfoque con herramientas tradicionales como Hootsuite: obtienes control total, cero limites por plataforma, y todo permanece en Airtable donde tu equipo ya trabaja.
Preguntas frecuentes
¿Funciona con el plan gratuito de Airtable?
Si. La extension Scripting y Automations estan disponibles en el plan gratuito de Airtable. El plan gratuito te limita a 100 ejecuciones de automatizacion al mes, lo cual es suficiente para equipos pequenos. Los planes de pago de Airtable aumentan ese limite significativamente.
¿Puedo adjuntar videos directamente en Airtable en lugar de usar URLs?
La extension Scripting puede leer campos de adjuntos, pero es mas sencillo usar una columna de URL que apunte a un archivo alojado en la nube (Google Drive, Dropbox, S3). La API de Upload-Post acepta tanto subidas directas de archivos como URLs, pero las URLs son mas faciles de manejar en scripts de Airtable.
¿Cuantos registros puedo procesar en un lote?
No hay un limite estricto del lado de Upload-Post. Sin embargo, las extensiones Scripting de Airtable tienen un tiempo de espera de 30 segundos en los planes gratuitos. Para lotes grandes (mas de 50 registros), considera usar n8n o el enfoque con Python para procesar registros fuera de las restricciones de tiempo de Airtable.
¿Puedo usar Google Sheets en lugar de Airtable?
Por supuesto. Si prefieres hojas de calculo, sigue nuestra guia de publicacion desde Google Sheets. Usa la misma API de Upload-Post con n8n o Make.com como puente. Los conceptos son identicos; solo cambia la fuente de datos.
¿Y las fotos y carruseles?
Para publicaciones de imagenes (fotos individuales o carruseles), usa el endpoint /api/upload_photos en lugar de /api/upload. Agrega una columna separada en Airtable para URLs de imagenes. La logica del script es la misma; solo cambia el endpoint y usa photos[] en lugar de video_url.