> ## Documentation Index
> Fetch the complete documentation index at: https://docs.so-me.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenClaw

> Gestiona tu espacio de trabajo de Social media studio desde el agente de IA personal OpenClaw

Social media studio se distribuye como una **skill de OpenClaw incluida en el paquete npm [`@social-media-scheduler/cli`](https://www.npmjs.com/package/@social-media-scheduler/cli)** — instala la CLI una vez y OpenClaw descubre la skill automáticamente.

## Instalación

**1. Instala OpenClaw en tu equipo**

Sigue la [guía de instalación de OpenClaw](https://github.com/openclaw/openclaw). Requiere Node.js 22+.

```bash theme={null}
npm install -g openclaw@latest
openclaw onboard --install-daemon
```

**2. Instala la CLI de Social media studio (que incluye la skill)**

```bash theme={null}
npm install -g @social-media-scheduler/cli
```

El paquete `@social-media-scheduler/cli` incluye:

* El binario de la CLI `so-me`
* `SKILL.md` — el cuerpo de la skill de OpenClaw
* `tools.md` — catálogo autogenerado de las 205 herramientas
* `examples/` — tres transcripciones de ejemplo (`schedule-post.md`, `reply-dm.md`, `weekly-report.md`)

**3. Autentícate**

Crea una clave de API en [so-me.studio/settings?tab=api](https://so-me.studio/settings?tab=api) y expórtala:

```bash theme={null}
export SOME_API_KEY=sk_live_...
```

OpenClaw comprueba la elegibilidad automáticamente. Verifícalo con:

```bash theme={null}
openclaw skills list --eligible | grep so-me-studio
```

Una vez emparejado, puedes chatear con el agente desde Discord, Slack, WhatsApp, Telegram o cualquiera de los [22 mensajeros compatibles](#chatea-desde-cualquier-mensajero).

## O mediante ClawHub

La skill está publicada en ClawHub. Instálala con cualquiera de los comandos canónicos:

```bash theme={null}
# OpenClaw-native (recommended)
openclaw skills install yasin047/so-me-studio

# ClawHub package-manager path
npx clawhub@latest install so-me-studio
```

Ambos descargan el mismo paquete de la skill. El mecanismo subyacente es `@social-media-scheduler/cli` en npm — ClawHub indexa el paquete npm publicado.

Página de la skill: [clawhub.ai/yasin047/so-me-studio](https://clawhub.ai/yasin047/so-me-studio)

## Qué puedes preguntar

Tras la instalación, escribe al agente en lenguaje natural:

| Prompt | Qué ocurre |
| - | - |
| *"¿Qué cuentas sociales tengo conectadas?"* | Llama a `accounts:list` y resume por plataforma. |
| *"Schedule a tweet saying hello at 5pm tomorrow."* | Calcula la marca de tiempo ISO y llama a `posts:create`. |
| *"Responde a ese mensaje directo con mi plantilla guardada 'pricing'."* | Busca la respuesta guardada y llama a `inbox:reply`. |
| *"¿Qué resultados tuvieron mis publicaciones de Twitter la semana pasada?"* | Llama a `analytics:platform` con `--days 7`. |
| *"Genera un texto de lanzamiento de producto para LinkedIn para el viernes y prográmalo."* | Llama a `ai:generate-and-schedule` de principio a fin. |

El agente tiene acceso a **las 205 herramientas MCP de Social media studio** — todas las acciones disponibles en el panel están disponibles aquí.

## Chatea desde cualquier mensajero

OpenClaw admite **22 canales de mensajería** — escribe al agente por mensaje directo desde el que ya uses. Una vez emparejado, todos los canales usan el mismo agente y la misma skill `so-me-studio`, así que obtienes las mismas respuestas desde Discord, WhatsApp o Slack.

### Requisito previo la primera vez

Antes de poder añadir cualquier canal, OpenClaw necesita una configuración inicial en `~/.openclaw/openclaw.json`:

```bash theme={null}
openclaw onboard          # interactive — recommended
# or:  openclaw setup --non-interactive --accept-risk
```

Si omites este paso, `openclaw gateway` falla con `Missing config. Run openclaw setup or set gateway.mode=local`.

### El patrón (funciona con cualquier canal)

```bash theme={null}
# 1. Get a credential from the platform you want to use
# 2. Wire it into OpenClaw
openclaw config set channels.<slug>.<field> <value>
openclaw config set channels.<slug>.enabled true --strict-json

# 3. Register the channel + run the gateway
openclaw channels add --channel <slug>
openclaw gateway
```

El comando `gateway` inicia un daemon local que escucha en todos los canales habilitados y enruta los mensajes a las skills que tengas instaladas.

### Los 7 principales — configuración completa

**Discord**

**1. Crea una aplicación de Discord**

1. Ve a [discord.com/developers/applications](https://discord.com/developers/applications) → **New Application**
2. Pestaña **Bot** → **Add Bot** → haz clic en "Copy" bajo TOKEN (mantenlo en secreto)
3. Pestaña **Bot** → **INTENT SETTINGS** → activa **Message Content Intent** ⚠️ obligatorio
4. *(Opcional, para usarlo en un servidor)* **OAuth2 → URL Generator** → scope `bot`, permisos `Send Messages`, `Read Message History`, `Embed Links`, `Attach Files` → abre la URL para invitar al bot a un servidor. Si solo usarás mensajes directos, omite este paso.

**2. Conecta el token a OpenClaw**

```bash theme={null}
export DISCORD_BOT_TOKEN="your_bot_token_here"

openclaw config set channels.discord.token \
  --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
openclaw config set channels.discord.enabled true --strict-json
```

**3. Registra el canal**

```bash theme={null}
openclaw channels add --channel discord
```

El asistente pide un identificador de cuenta — usa tu ID de usuario o tu nombre de usuario de Discord.

**4. Ejecuta el gateway y haz una prueba rápida**

```bash theme={null}
openclaw gateway
```

Luego, en Discord, envía un mensaje directo a tu bot:

> "List my connected social accounts"

El primer mensaje genera un código de emparejamiento que se imprime en la terminal de OpenClaw. Apruébalo con `openclaw admin pair-code <code>`.

**Slack**

**1. Crea una app de Slack**

1. Ve a [api.slack.com/apps](https://api.slack.com/apps) → **Create New App** → **From scratch** → elige tu espacio de trabajo
2. **OAuth & Permissions** → añade estos **Bot Token Scopes**:
   * `app_mentions:read`, `chat:write`, `channels:read`, `groups:read`, `im:read`
   * `channels:history`, `groups:history`, `im:history`, `mpim:history`
   * `files:read`, `files:write`
3. Pestaña **Socket Mode** → actívalo (recomendado — no necesita una URL de webhook pública)
4. **Basic Information** → genera un **App-Level Token** con el scope `connections:write` (`xapp-…`)
5. **Install to Workspace** → copia el **Bot User OAuth Token** (`xoxb-…`)

**2. Conecta los tokens a OpenClaw**

```bash theme={null}
export SLACK_BOT_TOKEN="xoxb-..."
export SLACK_APP_TOKEN="xapp-..."

openclaw config set channels.slack.botToken "$SLACK_BOT_TOKEN"
openclaw config set channels.slack.appToken "$SLACK_APP_TOKEN"
openclaw config set channels.slack.mode "socket"
openclaw config set channels.slack.enabled true --strict-json
```

**3. Registra el canal**

```bash theme={null}
openclaw channels add --channel slack
```

**4. Ejecuta el gateway y haz una prueba rápida**

```bash theme={null}
openclaw gateway
```

Envía un mensaje directo a tu bot de Slack:

> "List my connected social accounts"

Aprueba el código de emparejamiento (mismo proceso que en Discord).

**WhatsApp**

WhatsApp usa [Baileys](https://github.com/WhiskeySockets/Baileys) para el emparejamiento con código QR — no necesitas una cuenta de la API de Meta Business, solo un teléfono con WhatsApp instalado.

**1. Habilita el canal**

```bash theme={null}
openclaw config set channels.whatsapp.enabled true --strict-json
```

**2. Registra y escanea el código QR**

```bash theme={null}
openclaw channels add --channel whatsapp
```

OpenClaw imprime un código QR en la terminal. En tu teléfono:

1. Abre WhatsApp → **Ajustes** → **Dispositivos vinculados** → **Vincular un dispositivo**
2. Escanea el código QR que aparece en tu terminal

Una vez emparejado, tu cuenta es el puente de OpenClaw — los mensajes directos que te envíes a ti mismo o a los contactos a los que escribas se enrutarán al agente.

**3. Ejecuta el gateway y haz una prueba rápida**

```bash theme={null}
openclaw gateway
```

Escríbete a ti mismo o pide a un amigo que te escriba:

> "List my connected social accounts"

El primer mensaje muestra una solicitud de código de emparejamiento en la terminal. Apruébalo con `openclaw admin pair-code <code>`.

> [!TIP]
>
> La integración Baileys de WhatsApp funciona sobre una cuenta real — trátala como una sesión de teléfono personal. No compartas tu sesión de terminal y no ejecutes varias instancias de OpenClaw contra la misma cuenta de WhatsApp.

**Telegram**

Telegram es el canal **más rápido** de configurar — solo un token de bot, sin scopes ni intents.

**1. Crea un bot con @BotFather**

1. Abre Telegram y escribe a [@BotFather](https://t.me/BotFather)
2. Envía `/newbot` y sigue las indicaciones (nombre + nombre de usuario)
3. Copia el token del bot que te envía BotFather (tiene el aspecto `1234567890:ABC...`)

**2. Conecta el token**

```bash theme={null}
export TELEGRAM_BOT_TOKEN="1234567890:ABC..."

openclaw config set channels.telegram.token \
  --ref-provider default --ref-source env --ref-id TELEGRAM_BOT_TOKEN
openclaw config set channels.telegram.enabled true --strict-json
```

**3. Registra el canal**

```bash theme={null}
openclaw channels add --channel telegram
```

**4. Ejecuta el gateway y haz una prueba rápida**

```bash theme={null}
openclaw gateway
```

Busca tu bot en Telegram (por el nombre de usuario que elegiste), pulsa **Start** y envía:

> "List my connected social accounts"

Aprueba el código de emparejamiento en la terminal.

**iMessage**

La compatibilidad con iMessage requiere un Mac con [BlueBubbles Server](https://bluebubbles.app) — Apple no expone iMessage en otras plataformas, así que la única forma es conectarlo a través de un Mac que controles.

**1. Instala BlueBubbles Server en tu Mac**

1. Descárgalo desde [bluebubbles.app](https://bluebubbles.app) y sigue el instalador
2. Inicia sesión con el Apple ID asociado a iMessage en ese Mac
3. En los ajustes de BlueBubbles Server, copia la **URL del servidor** (p. ej., `http://192.168.1.20:1234`) y la **contraseña**

**2. Conecta BlueBubbles a OpenClaw**

```bash theme={null}
export BLUEBUBBLES_SERVER_URL="http://192.168.1.20:1234"
export BLUEBUBBLES_PASSWORD="your-bluebubbles-password"

openclaw config set channels.bluebubbles.serverUrl "$BLUEBUBBLES_SERVER_URL"
openclaw config set channels.bluebubbles.password "$BLUEBUBBLES_PASSWORD"
openclaw config set channels.bluebubbles.enabled true --strict-json
```

**3. Registra el canal**

```bash theme={null}
openclaw channels add --channel bluebubbles
```

**4. Ejecuta el gateway y haz una prueba rápida**

```bash theme={null}
openclaw gateway
```

Envía un iMessage a ti mismo o a otro contacto:

> "List my connected social accounts"

Aprueba el código de emparejamiento en la terminal.

> [!NOTE]
>
> El Mac que ejecuta BlueBubbles debe permanecer activo y con la sesión iniciada para que funcione el enrutamiento de iMessage. El slug de canal heredado `imessage` está **obsoleto** — usa `bluebubbles`.

**MS Teams**

Microsoft Teams usa el [Bot Framework](https://dev.botframework.com/) — registra tu bot una vez y luego conecta Teams como canal.

**1. Registra un recurso Azure Bot**

1. En el [Azure Portal](https://portal.azure.com/), crea un recurso **Azure Bot** nuevo
2. Anota el **Microsoft App ID** y crea un nuevo **client secret** en **Certificates & secrets**
3. En **Channels**, añade **Microsoft Teams** como canal habilitado
4. En **Configuration**, define el endpoint de mensajería — para el gateway de OpenClaw, usa la URL pública de tu instancia local expuesta mediante túnel (p. ej., con [ngrok](https://ngrok.com): `https://abc.ngrok.io/teams/messages`)

**2. Conecta las credenciales a OpenClaw**

```bash theme={null}
export MSTEAMS_APP_ID="<your-app-id>"
export MSTEAMS_APP_PASSWORD="<your-client-secret>"

openclaw config set channels.msteams.appId "$MSTEAMS_APP_ID"
openclaw config set channels.msteams.appPassword "$MSTEAMS_APP_PASSWORD"
openclaw config set channels.msteams.enabled true --strict-json
```

**3. Registra y ejecuta**

```bash theme={null}
openclaw channels add --channel msteams
openclaw gateway
```

**4. Añade el bot a un chat de Teams**

Desde tu cliente de Teams, busca tu bot por nombre e inicia un chat 1:1. Envía:

> "List my connected social accounts"

Aprueba el código de emparejamiento en la terminal.

> [!TIP]
>
> Microsoft Teams requiere un endpoint HTTPS accesible públicamente. En desarrollo, usa ngrok o Cloudflare Tunnel; en producción, aloja el gateway detrás de una URL estable.

**Google Chat**

Google Chat usa un webhook HTTP — sin OAuth, solo una URL de webhook.

**1. Crea una app de Google Chat**

1. En la [Google Cloud Console](https://console.cloud.google.com), habilita la **Google Chat API**
2. Ve a **Google Chat API → Configuration** y define:
   * Nombre y avatar de la app
   * **Connection settings** → HTTP endpoint → pega la URL pública de tu gateway de OpenClaw (p. ej., `https://abc.ngrok.io/googlechat/messages`)
   * **Visibility** → hazla disponible para tu organización o para usuarios concretos

**2. Conecta el secreto del webhook a OpenClaw**

```bash theme={null}
export GOOGLECHAT_WEBHOOK_SECRET="<your-shared-secret>"

openclaw config set channels.googlechat.webhookSecret "$GOOGLECHAT_WEBHOOK_SECRET"
openclaw config set channels.googlechat.enabled true --strict-json
```

**3. Registra y ejecuta**

```bash theme={null}
openclaw channels add --channel googlechat
openclaw gateway
```

**4. Escribe al bot desde Google Chat**

En Google Chat, busca tu app en **Apps** e inicia un mensaje directo:

> "List my connected social accounts"

Aprueba el código de emparejamiento en la terminal.

> [!NOTE]
>
> **¿Por qué no hay WebChat?** Tutoriales antiguos de OpenClaw mencionaban un canal `webchat`, pero no es un canal real de cara al usuario en la CLI actual (es una constante de enrutamiento interna). `openclaw channels add --channel webchat` devuelve `unknown channel id: webchat`. Para una prueba rápida sin necesidad de cuenta, usa **Telegram** más arriba (\~1 minuto con [@BotFather](https://t.me/BotFather)).

### 15 canales más (+ 1 próximamente)

> **Canales de cola larga (indicaciones de configuración en una línea)**
>
> | Canal | Slug | Configuración |
> | - | - | - |
> | Feishu / Lark | `feishu` | Bot por WebSocket — [docs](https://docs.openclaw.ai/channels/feishu) |
> | LINE | `line` | Credenciales de bot de la Messaging API — [docs](https://docs.openclaw.ai/channels/line) |
> | Matrix | `matrix` | URL del homeserver + token de acceso — [docs](https://docs.openclaw.ai/channels/matrix) |
> | Mattermost | `mattermost` | Bot API + WebSocket — [docs](https://docs.openclaw.ai/channels/mattermost) |
> | Nextcloud Talk | `nextcloud-talk` | Nextcloud autoalojado — [docs](https://docs.openclaw.ai/channels/nextcloud-talk) |
> | Signal | `signal` | Emparejamiento con `signal-cli` — [docs](https://docs.openclaw.ai/channels/signal) |
> | Twitch | `twitch` | Puente IRC — [docs](https://docs.openclaw.ai/channels/twitch) |
> | Zalo | `zalo` | Bot API — [docs](https://docs.openclaw.ai/channels/zalo) |
> | Zalo Personal | `zalouser` | Inicio de sesión por QR — [docs](https://docs.openclaw.ai/channels/zalouser) |
> | Tlon | `tlon` | Cuenta basada en Urbit — [docs](https://docs.openclaw.ai/channels/tlon) |
> | QQ | `qqbot` | Tencent QQ Bot API — [docs](https://docs.openclaw.ai/channels/qqbot) |
> | Nostr | `nostr` | Mensajes directos NIP-04 — [docs](https://docs.openclaw.ai/channels/nostr) |
> | IRC | `irc` | Dirección del servidor + emparejamiento — [docs](https://docs.openclaw.ai/channels/irc) |
> | Synology Chat | `synology-chat` | Webhook del NAS — [docs](https://docs.openclaw.ai/channels/synology-chat) |
> | iMessage (heredado) | `imessage` | **Obsoleto** — usa `bluebubbles` en su lugar |
> | WeChat | `wechat` | 🚧 **No está en la CLI actual** — figura en el README de OpenClaw, pero `openclaw channels add --channel wechat` devuelve `Unknown channel`. Sigue el estado de la compatibilidad en el [repositorio de OpenClaw](https://github.com/openclaw/openclaw). |

### Qué puedes preguntar tras el emparejamiento

Los mismos prompts funcionan en todos los canales:

* *"¿Qué cuentas sociales tengo conectadas?"*
* *"Programa un tuit 'launching today' para mañana a las 9:00 UTC."*
* *"Genera un texto de lanzamiento de producto para LinkedIn para el viernes y prográmalo para las 5 p. m."*
* *"¿Qué resultados tuvieron mis publicaciones de Twitter la semana pasada?"*
* *"Responde a ese mensaje directo con mi plantilla guardada 'pricing'."*

Consulta la lista completa de prompts en [Qué puedes preguntar](#qué-puedes-preguntar).

### Solución de problemas general

* **`Missing config` en `openclaw gateway`:** te saltaste el requisito previo — ejecuta `openclaw onboard` (o `openclaw setup --non-interactive --accept-risk`) antes de añadir cualquier canal.
* **El bot no responde en absoluto:** asegúrate de que `openclaw gateway` se está ejecutando. Es el daemon que escucha en todos los canales — si no está en marcha, no llega ningún mensaje.
* **El primer mensaje se queda atascado:** OpenClaw requiere emparejamiento en el primer uso. El primer mensaje directo genera un código impreso en la terminal; apruébalo con `openclaw admin pair-code <code>`.
* **Específico de Discord:** el *Message Content Intent* debe estar activado en el portal de desarrolladores; de lo contrario el bot no puede leer mensajes directos.
* **Específico de Slack:** faltan scopes de OAuth (`im:history`, `im:read`, `chat:write`); reinstala la app en tu espacio de trabajo después de añadir los scopes.
* **Skill no elegible:** `openclaw skills list --eligible` debería incluir `so-me-studio`. Si no, `SOME_API_KEY` no es visible para el shell del gateway — expórtala en la misma terminal desde la que ejecutas `openclaw gateway`.
* **No funcionan todos los canales a la vez:** cada canal tiene su propio indicador `enabled`; comprueba el estado con `openclaw channels status`.
* **MS Teams o Google Chat inaccesibles:** requieren un endpoint HTTPS público para el gateway de OpenClaw. Usa [ngrok](https://ngrok.com) o Cloudflare Tunnel durante el desarrollo.

## Cómo funciona

```
┌──────────────────┐
│  OpenClaw agent  │
└────────┬─────────┘
         │ reads SKILL.md from @social-media-scheduler/cli's npm install
         ▼
┌──────────────────┐
│  SKILL.md +      │
│  tools.md +      │
│  examples/       │
└────────┬─────────┘
         │ invokes
         ▼
┌──────────────────┐         ┌────────────────────────┐
│  CLI (so-me)     │ ──────► │  api.so-me.studio/v1   │
└──────────────────┘         └────────────────────────┘
```

El cuerpo de la skill (`SKILL.md`) es una extensión del prompt de sistema que enseña al agente a usar la CLI `so-me`. La CLI devuelve JSON estructurado en cada operación, de modo que el agente puede analizarlo, razonar y encadenar llamadas.

## Reglas estrictas integradas en la skill

* Nunca inventar IDs de cuenta / publicación / conversación — buscarlos siempre primero.
* `scheduledAt` es ISO 8601 en UTC y estrictamente en el futuro.
* Los trabajos de varios pasos (p. ej., imagen con IA → publicación) se encadenan secuencialmente.
* Nunca revelar claves de API ni secretos de webhook, aunque se pida.

## Actualizaciones

Cuando se publican herramientas nuevas en Social media studio, `SKILL.md` y `tools.md` se regeneran y `@social-media-scheduler/cli` se vuelve a publicar. Los usuarios vuelven a ejecutar `npm install -g @social-media-scheduler/cli` para obtener la última versión.

## Código fuente

El código fuente de la skill está en el monorepo de Social media studio, en [`apps/cli/SKILL.md`](https://github.com/7t1-studio/schedular-app/blob/main/apps/cli/SKILL.md). Las PR son bienvenidas.

## ¿Otros agentes?

Si usas otro entorno de ejecución de agentes:

* **Hermes 4** — consulta la [integración con Hermes](/es/integrations/hermes.md), que usa el mismo backend MCP mediante `npm install -g @so-me/hermes-agent`.
* **Claude Desktop / Cursor / OpenCode** — apúntalos directamente a nuestro [servidor MCP](/es/mcp/overview.md). No hace falta ninguna skill ni entorno de ejecución.
* **Cualquier otro (LangGraph, CrewAI, OpenAI Assistants, Anthropic API)** — genera un archivo de definición de herramientas en su formato preferido:
  ```bash theme={null}
  so-me agent export-tools --format openai --out tools.openai.json
  so-me agent export-tools --format anthropic --out tools.anthropic.json
  so-me agent export-tools --format mcp --out tools.mcp.json
  ```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.