Ir al contenido
Hablemos

Guía gratis · paso a paso

Tu propio ManyChat, gratis

Alguien comenta una palabra en tu reel y, un segundo después, le llega un mensaje directo con tu link. Te muestro cómo armarlo con OpenReply, una herramienta de código abierto, sin pagar suscripción y aunque nunca hayas tocado nada técnico.

la primera vez
2–3 h
por mes (aprox.)
USD 5
experiencia previa
Cero

Antes de arrancar

Cómo funciona

No necesitás entender el código. Alcanza con saber qué hace cada pieza, porque la guía las va armando una por una.

  1. InstagramAlguien comenta tu palabra clave (por ejemplo, LINK) en un post, un reel o una historia.
  2. Meta avisaMeta le manda ese comentario a tu OpenReply en el mismo segundo (eso se llama "webhook").
  3. Tu panel (Vercel)Revisa si coincide con alguna de tus campañas y anota el envío en tu base de datos.
  4. El worker (Railway)Manda el mensaje directo con la API oficial de Instagram. Sin contraseñas ni bots raros.

Opcional, pero muy recomendado

Hacelo con Claude como copiloto

Si te trabás en algún paso, no estás solo. Abrí Claude en otra pestaña, pegale este prompt y te va a acompañar pantalla por pantalla mientras seguís la guía.

✦

Copiá y pegá este prompt

  1. Tocá Copiar y pegalo en un chat nuevo de Claude.
  2. Respondé sus preguntas y avanzá de a un paso. Si algo no coincide, mandale una captura.
Prompt para Claude
Quiero instalar OpenReply (github.com/diwenne/openreply) para que, cuando alguien comente una palabra en mi Instagram, le llegue un mensaje directo automático. Voy a seguir esta guía: https://nicociana.com/guias/manychat-gratis. No tengo experiencia técnica.

Sé mi copiloto durante toda la instalación:
- Si podés navegar, leé primero la guía completa. Si no, usá lo que te explico acá.
- Guiame un paso por vez, en castellano simple. Al terminar cada paso, decime qué debería estar viendo y esperá a que te confirme antes de seguir.
- Si una pantalla no coincide con lo que me decís, pedime una captura en vez de adivinar.
- Nunca me pidas que pegue en el chat mis claves, contraseñas ni direcciones de base de datos: decime en qué campo van. Si se me escapa alguna, recordame cambiarla al final.
- Ayudame a ir completando mi "hoja de datos" en una nota privada (sin pasarte los valores).

Tené en cuenta estos errores conocidos:
1. Railway: si no aparece mi repositorio, falta darle acceso con la GitHub App. Los cambios (como el TCP Proxy) quedan pendientes hasta que toco "Deploy".
2. Vercel necesita las direcciones PÚBLICAS de Railway (con proxy.rlwy.net). Nunca las que tienen ${{ }} ni railway.internal. El error P1013 significa que la DATABASE_URL está mal.
3. En el servicio openreply de Railway: variables con DATABASE_URL=${{Postgres.DATABASE_URL}} y REDIS_URL=${{Redis.REDIS_URL}}, y Custom Start Command "npm run worker". No hay Build Command porque usa Dockerfile. Si los logs dicen "next start", falta el comando.
4. ENCRYPTION_KEY (64 caracteres) tiene que ser idéntica en Vercel y en Railway.
5. Meta: el caso de uso es "Administrar mensajes y contenido en Instagram", sin portfolio comercial. El ID y la clave salen de "Configuración de la API con inicio de sesión con Instagram" (no la de Facebook). FACEBOOK_APP_SECRET está en Configuración de la app → Básica.
6. Tester: además de invitarme en Meta (Roles → Evaluadores de Instagram), tengo que aceptar desde la app de Instagram: Configuración y actividad → Apps y sitios web → Invitaciones de evaluador.
7. Webhook: https://MI-APP.vercel.app/api/webhook con mi WEBHOOK_VERIFY_TOKEN, suscripto a comments y messages. Redirect de OAuth: https://MI-APP.vercel.app/api/instagram/callback. No confundirlos. Después hay que publicar la app.
8. "Server error" al iniciar sesión en el panel casi siempre es la RESEND_API_KEY mal copiada: revisar Logs en Vercel.
9. Para comprobar que todo anda: https://MI-APP.vercel.app/api/health tiene que decir "status":"ok" y "healthy":true. La prueba final se hace comentando desde otra cuenta de Instagram.

Empezá preguntándome si ya tengo: Instagram profesional (Creador o Empresa), cuenta de Facebook, cuenta de GitHub, un dominio propio con acceso a su DNS y una segunda cuenta de Instagram para probar.
Igual que con cualquier persona

No le pegues tus claves ni contraseñas. Claude te dice dónde va cada una, pero los valores los cargás vos directamente en Vercel y Railway.

Parte 0

Requisitos y costos

Revisá esta lista antes de empezar. Si te falta algo, conseguilo primero: te va a ahorrar frenadas a mitad de camino.

  • Una cuenta de Instagram Profesional (Creador o Empresa)Si es personal, cambiala desde la app: Configuración y actividad → Tipo de cuenta y herramientas → Cambiar a cuenta profesional.
  • Una cuenta de FacebookMeta la exige para crear apps. No se publica nada en tu perfil.
  • Una cuenta de GitHub (gratis)Creala en github.com.
  • Un dominio propio (por ejemplo, tunombre.com) y acceso a su DNSHace falta para mandar los emails con los que entrás a tu panel.
  • Una segunda cuenta de Instagram para la prueba finalLa de un amigo o una cuenta secundaria tuya: OpenReply ignora a propósito los comentarios que hacés vos mismo.
  • Una computadora, una tarjeta para Railway y un par de horas sin apuro

¿No tenés dominio?

Yo uso Hostinger para mis dominios y mi web. Comprás el dominio y, en el mismo panel, cargás los registros que pide la guía en la parte 1.

Es un link de afiliado: si comprás a través de él, puedo recibir una comisión, sin costo extra para vos. Solo recomiendo lo que uso.
Conseguir dominio en Hostinger

Si ya tenés dominio en otro proveedor (GoDaddy, Namecheap, Cloudflare, Nic Argentina...), también sirve: los pasos de DNS son parecidos.

Cuánto cuesta

ServicioPara quéCosto
OpenReplyEl programa (código abierto, licencia MIT)Gratis
VercelTu panel de controlGratis (plan Hobby)
ResendLos emails para entrar al panelGratis
MetaLa app que conecta con InstagramGratis
RailwayBase de datos y el proceso que manda los DMsEl primer mes viene con USD 5 de prueba. Después, plan Hobby: mínimo USD 5 por mes (más impuestos de tu tarjeta)
DominioSi no tenés unoSegún el dominio, se paga una vez por año

Railway cobra por uso: los USD 5 del plan Hobby se descuentan de lo que consumas. Para una sola cuenta de Instagram, lo normal es quedarse en esos USD 5. El plan gratis de Railway (USD 1 por mes) no alcanza para tener todo prendido las 24 horas.

Regla de oro: tus claves son como las llaves de tu casa

Durante la guía vas a generar contraseñas y claves. Nunca las pegues en un chat, un grupo, un comentario ni en una captura que compartas. Si alguna se te escapa, generá una nueva.

★

Tu hoja de datos

Abrí una nota privada en tu compu (Notas, Bloc de notas, Google Keep) y copiá esta plantilla. La vas a ir completando a medida que avanzás, así tenés todo a mano.

MI HOJA DE DATOS · OpenReply (no la compartas con nadie)

Mi dominio .....................
Mi dirección de Vercel ......... https://
Mi usuario de Instagram ........ @

NEXTAUTH_SECRET ................
CRON_SECRET ....................
ENCRYPTION_KEY .................
WEBHOOK_VERIFY_TOKEN ...........

RESEND_API_KEY ................. re_
DATABASE_PUBLIC_URL (Railway) .. postgresql://
REDIS_PUBLIC_URL (Railway) ..... redis://

INSTAGRAM_APP_ID (Meta) ........
INSTAGRAM_APP_SECRET (Meta) ....
FACEBOOK_APP_SECRET (Meta) .....

Parte 1

Preparar el terreno

Tu copia del programa, el servicio de emails y tus claves secretas.

1

Hacé tu copia de OpenReply en GitHub

  1. Iniciá sesión en GitHub y entrá a github.com/diwenne/openreply.
  2. Arriba a la derecha, tocá Fork y después Create fork, sin cambiar nada.
Deberías ver

Una copia en github.com/TU-USUARIO/openreply. Esa es la que vas a conectar a Railway y a Vercel.

2

Creá tu cuenta de Resend y verificá tu dominio

Resend es el servicio que manda el email con el link para entrar a tu panel. Arrancalo ahora porque la verificación puede tardar un rato.

  1. Creá la cuenta en resend.com (podés entrar con GitHub).
  2. Andá a Domains → Add Domain y escribí tu dominio, por ejemplo tunombre.com.
  3. Resend te muestra 3 o 4 registros DNS (tipo MX y TXT, uno empieza con resend._domainkey). Dejá esa pantalla abierta.
  4. En otra pestaña, entrá al panel de tu dominio. En Hostinger: Dominios → tu dominio → DNS / Nameservers → Agregar registro.
  5. Cargá cada registro copiando exacto el tipo, el nombre y el valor que te da Resend.
  6. Volvé a Resend y tocá Verify. Puede tardar de unos minutos a unas horas: seguí con la guía mientras tanto.
Ojo acá

No borres ni cambies los registros que ya tenés en tu dominio. Los de Resend van aparte y no tocan tu web ni tu email actual.

Creá tu clave de Resend:

  1. Andá a API Keys → Create API Key.
  2. Nombre: openreply. Permiso: Sending access. Dominio: el tuyo.
  3. Copiala con el botón de copiar (no seleccionándola a mano) y pegala en tu hoja de datos. Empieza con re_ y Resend la muestra una sola vez.
Ojo acá

Si la clave queda incompleta o con un espacio, al final vas a ver "Server error" cuando quieras entrar a tu panel. Es el error más común: copiala siempre con el botón.

3

Generá tus 4 claves secretas

Son contraseñas largas y al azar que usa tu instalación. Las generás desde el navegador: cada vez que abrís (o recargás) uno de estos links, aparece una clave nueva distinta.

ClaveAbrí este link y copiá lo que aparece
NEXTAUTH_SECRETgenerate-secret.vercel.app/32
CRON_SECRETgenerate-secret.vercel.app/32 (recargá para que sea otra)
ENCRYPTION_KEYgenerate-secret.vercel.app/64 (tiene que tener 64 caracteres)
WEBHOOK_VERIFY_TOKENgenerate-secret.vercel.app/32 (recargá otra vez)
Ojo acá

Las 4 tienen que ser distintas entre sí. Y la ENCRYPTION_KEY tiene que ser exactamente la misma en Vercel y en Railway: si no coinciden, no sale ningún mensaje.

Parte 2

Railway: la base de datos

Railway guarda tus campañas y registros, y más adelante va a correr el proceso que manda los DMs.

4

Creá el proyecto con Postgres y Redis

  1. Entrá a railway.com y creá la cuenta con GitHub.
  2. Tocá New Project → Empty Project.
  3. Dentro del proyecto: Create (o + New) → Database → Add PostgreSQL.
  4. Otra vez: Create → Database → Add Redis.
  5. Otra vez: Create → GitHub Repo → elegí TU-USUARIO/openreply.
¿No aparece tu repositorio?

Entrar con GitHub solo sirve para iniciar sesión. Tocá Configure GitHub App (o entrá a github.com/settings/installations → Railway → Configure) y dale acceso al repo openreply. Después recargá.

Dejá los nombres que pone Railway: Postgres y Redis. Más adelante los vamos a usar tal cual. Si el servicio openreply aparece en rojo, es normal: todavía no tiene su configuración.

5

Abrí la conexión pública de Postgres y Redis

Tu panel va a vivir en Vercel, fuera de Railway, así que necesita una "puerta" pública para llegar a la base de datos.

  1. Tocá el servicio Postgres → pestaña Settings → Networking → Public Networking → TCP Proxy. Si pide puerto, dejá el que sugiere.
  2. Hacé lo mismo en Redis.
  3. Arriba va a aparecer un aviso de cambios pendientes. Tocá Deploy para aplicarlos y esperá a que todo quede Online.
Ojo acá

Hasta que no tocás Deploy, los cambios quedan "preparados" pero no activos. Si ves el cartel "A public endpoint is staged", es eso.

6

Copiá las dos direcciones públicas

  1. Postgres → pestaña Variables → buscá DATABASE_PUBLIC_URL → tocá los asteriscos (o el ojito) para ver el valor y copialo en tu hoja de datos.
  2. Redis → Variables → copiá REDIS_PUBLIC_URL.
Así se ve una dirección correcta

postgresql://postgres:AbC123…@algo.proxy.rlwy.net:38165/railway

redis://default:XyZ789…@algo.proxy.rlwy.net:41234

Las que NO sirven para Vercel

Si ves ${{PGUSER}} o cualquier cosa con ${{, es la plantilla, no el valor real: hacé clic en los asteriscos para revelarlo.

Si dice railway.internal, es la dirección interna: Vercel no se puede conectar con esa.

Parte 3

Vercel: tu panel

Acá vive la página desde la que vas a crear tus campañas. También es la dirección que recibe los avisos de Meta.

7

Importá tu repositorio

  1. Entrá a vercel.com, creá la cuenta con GitHub y elegí el plan Hobby (gratis).
  2. Add New… → Project → buscá openreply → Import. Si no aparece, tocá Adjust GitHub App Permissions y dale acceso.
  3. En Project Name poné algo único, como openreply-tunombre. Tu dirección va a ser parecida a https://openreply-tunombre.vercel.app.
Ojo acá

Si Vercel te ofrece agregar Prisma Postgres o Redis ("Optional Integrations"), no toques Add. Ya tenés los de Railway.

8

Cargá las variables y publicá

  1. Abrí Environment Variables en esa misma pantalla.
  2. Completá este bloque con los datos de tu hoja (reemplazá cada PEGÁ_ACÁ) y pegalo entero en el primer campo Key: Vercel lo separa solo en 10 variables.
Variables para Vercel
NEXTAUTH_URL=https://TU-APP.vercel.app
NEXTAUTH_SECRET=PEGÁ_ACÁ
CRON_SECRET=PEGÁ_ACÁ
ENCRYPTION_KEY=PEGÁ_ACÁ
WEBHOOK_VERIFY_TOKEN=PEGÁ_ACÁ
DATABASE_URL=PEGÁ_ACÁ_TU_DATABASE_PUBLIC_URL
REDIS_URL=PEGÁ_ACÁ_TU_REDIS_PUBLIC_URL
RESEND_API_KEY=PEGÁ_ACÁ
EMAIL_FROM=login@tudominio.com
META_GRAPH_API_VERSION=v25.0
  1. En EMAIL_FROM usá tu dominio verificado en Resend, por ejemplo login@tunombre.com.
  2. Revisá que no quede ningún PEGÁ_ACÁ ni espacios de más, y tocá Deploy. Tarda unos 2 a 4 minutos.
  3. Cuando termine, andá a Settings → Domains y fijate tu dirección real .vercel.app. Anotala en tu hoja de datos.
  4. Si es distinta de la que pusiste en NEXTAUTH_URL: Settings → Environment Variables → NEXTAUTH_URL → Edit → corregila (con https:// y sin barra al final) → Save → Deployments → ⋯ → Redeploy.

¿No arrancó ningún deploy? Andá a Deployments → ⋯ (arriba a la derecha) → Create Deployment → escribí main → Deploy to Production.

Si falla con "P1013: The provided database string is invalid"

La DATABASE_URL está mal: quedó la plantilla con ${{, el texto PEGÁ_ACÁ o un espacio. Corregila con la dirección pública real de Railway y hacé Redeploy.

9

Primer chequeo

Abrí en el navegador https://TU-APP.vercel.app/api/health (con tu dirección). Vas a ver un texto con datos.

Deberías ver

"database":{"status":"ok"}, "redis":{"status":"ok"} y "queue":{"status":"ok"}.

El "worker":{"healthy":false} es normal por ahora: lo prendemos en la parte 4.

Probalo también en una ventana de incógnito. Si te pide iniciar sesión en Vercel, desactivá la protección: Settings → Deployment Protection → Vercel Authentication → Disabled. Meta tiene que poder entrar sin login.

Parte 4

El worker que manda los DMs

Volvemos a Railway para configurar el servicio openreply. Es el que realmente envía los mensajes.

10

Cargá sus variables

  1. En Railway, tocá el servicio openreply (el de GitHub) → pestaña Variables → Raw Editor.
  2. Pegá este bloque, completando los PEGÁ_ACÁ con los mismos valores que pusiste en Vercel.
Variables para el worker (Railway)
NEXTAUTH_URL=https://TU-APP.vercel.app
NEXTAUTH_SECRET=PEGÁ_ACÁ
CRON_SECRET=PEGÁ_ACÁ
ENCRYPTION_KEY=PEGÁ_ACÁ
WEBHOOK_VERIFY_TOKEN=PEGÁ_ACÁ
DATABASE_URL=${{Postgres.DATABASE_URL}}
REDIS_URL=${{Redis.REDIS_URL}}
RESEND_API_KEY=PEGÁ_ACÁ
EMAIL_FROM=login@tudominio.com
META_GRAPH_API_VERSION=v25.0

Esta vez sí van los ${{…}}: dentro de Railway, esas referencias se completan solas con las direcciones internas, que son más rápidas. Por eso era importante dejar los nombres Postgres y Redis.

  1. Tocá Update Variables.
11

Decile que arranque como worker

  1. En el mismo servicio, pestaña Settings → sección Deploy → Custom Start Command → + Start Command.
  2. Escribí y confirmá con Enter o con el ✓:
npm run worker
  1. Aplicá los cambios con Deploy y esperá a que quede Online.

No vas a encontrar un campo de "Build Command": Railway detecta que el proyecto trae un Dockerfile y lo usa solo. Está bien así.

¿Cómo sé que quedó bien?

En Deployments → View logs → Deploy Logs tiene que aparecer npm run worker. Si dice next start, el comando de arranque no se guardó: volvé a cargarlo.

12

Segundo chequeo

Recargá https://TU-APP.vercel.app/api/health.

Deberías ver

"status":"ok" y "worker":{"healthy":true}. Toda la infraestructura está funcionando.

Parte 5

Meta: la app de Instagram

Es la parte más lenta. Meta cambia sus pantallas seguido: si algún nombre no coincide exacto, buscá el más parecido.

13

Creá la app

  1. Entrá a developers.facebook.com/apps con tu Facebook. Si es la primera vez, registrate como desarrollador (te pide verificar teléfono o email).
  2. Crear app → poné un nombre (por ejemplo, OpenReply TuNombre) y un email que revises.
  3. En Casos de uso, filtrá por Todo y marcá una sola casilla: Administrar mensajes y contenido en Instagram.
  4. En Negocio, elegí no conectar un portfolio comercial por ahora.
  5. Seguí con Siguiente hasta Crear app.
No marques estas

"Autenticar y solicitar datos con el inicio de sesión con Facebook", nada de "API de marketing" o anuncios, y tampoco "Otro". Con el caso de uso equivocado, el login falla más adelante.

¿Conviene conectar el portfolio comercial? Para usarlo con tu propia cuenta, no hace falta. Solo lo necesitarías si quisieras que otras personas conecten su Instagram a tu instalación, y lo podés sumar después.

14

Sacá las 3 claves de Meta

  1. Menú izquierdo → Casos de uso → en "Administrar mensajes y contenido en Instagram", tocá Personalizar.
  2. En el recuadro de la izquierda hay dos opciones con nombre casi igual. Entrá a "Configuración de la API con inicio de sesión con Instagram" (la de Instagram, no la de Facebook).
  3. Copiá el Identificador de la app de Instagram → es tu INSTAGRAM_APP_ID.
  4. Al lado, Clave secreta de la app de Instagram → Mostrar → es tu INSTAGRAM_APP_SECRET.
  5. Menú principal de la izquierda → Configuración de la app → Básica → Clave secreta de la app → Mostrar → es tu FACEBOOK_APP_SECRET.
Ojo acá

En "Básica" también aparece un "Identificador de la app" (el de Facebook). Ese no va: el ID que necesitás es el de Instagram, del punto 3.

Cargalas en los dos lados:

Las 3 variables de Meta
INSTAGRAM_APP_ID=PEGÁ_ACÁ
INSTAGRAM_APP_SECRET=PEGÁ_ACÁ
FACEBOOK_APP_SECRET=PEGÁ_ACÁ
  • Vercel → Settings → Environment Variables → pegá el bloque → Save → Deployments → ⋯ → Redeploy.
  • Railway → openreply → Variables → Raw Editor → agregá las 3 líneas al final, sin borrar lo que ya está → Update Variables → Deploy.
15

Sumate como tester (son dos mitades)

Mitad 1, en Meta:

  1. Menú izquierdo → Roles de la app → Roles (también hay un link "Roles" en el punto 2 de la pantalla de Instagram).
  2. Sección Evaluadores de Instagram → Agregar → escribí tu usuario exacto de Instagram, sin la @ → enviar.

Mitad 2, en la app de Instagram del celular:

  1. Tu perfil → menú ☰ → Configuración y actividad.
  2. Apps y sitios web → Invitaciones de evaluador.
  3. Aceptá la invitación de tu app.
El paso que todos se saltean

Si no aceptás la invitación desde Instagram, al conectar tu cuenta vas a ver el error "Insufficient Developer Role". Si no la ves, esperá unos minutos y volvé a entrar.

16

Configurá el webhook

Es la dirección a la que Meta le avisa cada comentario. Volvé a la pantalla Configuración de la API con inicio de sesión con Instagram → punto 3. Configurar webhooks:

URL de devolución de llamada
https://TU-APP.vercel.app/api/webhook
  1. En Token de verificación, pegá tu WEBHOOK_VERIFY_TOKEN (el mismo de Vercel).
  2. Dejá apagado el interruptor del certificado y tocá Verificar y guardar.
  3. En la lista de campos que aparece, suscribite a comments y a messages (este último hace que también funcione con DMs y respuestas a tus historias).
Si dice "No se pudo validar la URL"

Revisá que la dirección termine en /api/webhook (no en /api/instagram/callback, que va en el paso siguiente) y que el token sea idéntico al de Vercel. Si el botón queda gris, hacé clic en el campo del token y volvé a pegarlo.

El aviso "Para recibir webhooks, la app debe estar publicada" es normal. La publicás dos pasos más adelante.

17

Registrá la dirección de retorno del login

En la misma pantalla, punto 4. Configurar el inicio de sesión de empresa de Instagram → Configurar → en URI de redireccionamiento de OAuth pegá:

https://TU-APP.vercel.app/api/instagram/callback

Sin barra al final. Tocá Guardar. Si Meta te muestra una "URL de inserción", ignorala.

18

Publicá la app

Sin este paso, los comentarios reales no llegan (solo las pruebas de Meta).

  1. Menú izquierdo → Publicar. Si te pide datos, completalos con estas páginas, que OpenReply ya trae listas:
CampoDirección
Política de privacidadhttps://TU-APP.vercel.app/privacy
Condiciones del serviciohttps://TU-APP.vercel.app/terms
Eliminación de datoshttps://TU-APP.vercel.app/data-deletion
  1. Si te pide categoría, elegí algo como "Negocios y páginas" o "Mensajería". Si te pide ícono, subí una imagen cuadrada de 1024 × 1024.
  2. Cuando diga "Se completó toda la configuración obligatoria", tocá Publicar.
Deberías ver

"Tu app se publicó correctamente".

Si Meta te pide revisión de la app (App Review), no la envíes todavía: para usarlo con tu propia cuenta de tester normalmente no hace falta.

Parte 6

Tu primera campaña

19

Entrá a tu panel

  1. Abrí https://TU-APP.vercel.app/login y escribí tu email.
  2. Te llega un email desde login@tudominio.com con un link (revisá también spam). Abrilo y ya estás adentro.
Si aparece "Server error"

El panel no pudo mandar el email. Casi siempre es la clave de Resend mal copiada. En Vercel andá a Logs, intentá entrar de nuevo y buscá la línea roja: si dice "API key is invalid", creá una clave nueva en Resend, reemplazala en Vercel y en Railway, y hacé Redeploy.

20

Conectá tu Instagram

  1. En el panel: Settings → Connect Instagram.
  2. Iniciá sesión con tu cuenta de Instagram y aceptá todos los permisos.
Deberías ver

Tu cuenta conectada en el panel.

21

Creá la campaña y probala

  1. Creá una campaña nueva: elegí uno de tus posts, poné la palabra clave TEST y un mensaje como el de abajo. Activala.
  2. Desde otra cuenta de Instagram, comentá TEST en ese post.
  3. En unos segundos le tiene que llegar el mensaje directo a esa cuenta.
Ejemplo de mensaje
¡Hola {username}! Acá tenés el link que pediste 👉 tunombre.com

{username} se reemplaza solo por el usuario de quien comentó.

Listo: ya tenés tu ManyChat propio

Ahora podés usar palabras clave en tus reels, pedir que respondan una historia, mandar hasta dos botones con links medidos o pedir que te sigan antes de recibir el link. Todo desde tu panel.

Si algo falla

Problemas frecuentes

Tu mejor amigo es https://TU-APP.vercel.app/api/health: te dice si la base de datos, Redis y el worker están bien. En tu panel, la sección DM Logs muestra cada envío y por qué falló.

Railway o Vercel no muestran mi repositorio

Hay que darles permiso en GitHub: github.com/settings/installations → Railway (o Vercel) → Configure → Repository access → elegí openreply.

La dirección de Railway tiene ${{…}} o railway.internal

Para Vercel necesitás la dirección pública real. Activá el TCP Proxy, aplicá con Deploy y revelá el valor de DATABASE_PUBLIC_URL o REDIS_PUBLIC_URL tocando los asteriscos. Tiene que tener proxy.rlwy.net y un número de puerto.

Vercel falla con "P1013"

La DATABASE_URL de Vercel no tiene un formato válido. Editala, pegá la dirección pública real (empieza con postgresql://) sin espacios y hacé Redeploy.

El worker dice "healthy": false

Revisá tres cosas en el servicio openreply de Railway: que tenga las variables, que el Custom Start Command sea npm run worker y que no haya cambios pendientes sin aplicar (botón Deploy). En Deploy Logs tiene que decir npm run worker, no next start.

Meta dice "No se pudo validar la URL de devolución de llamada"

La dirección del webhook tiene que terminar en /api/webhook, el token tiene que ser idéntico a tu WEBHOOK_VERIFY_TOKEN y el último deploy de Vercel tiene que estar en Ready.

Al entrar al panel aparece "Server error"

Falló el envío del email. Mirá Vercel → Logs: "API key is invalid" es la clave de Resend mal copiada (creá una nueva y redeploy). Si menciona el dominio, revisá que esté Verified en Resend y que EMAIL_FROM use ese dominio.

"Insufficient Developer Role" al conectar Instagram

Tu cuenta no aceptó la invitación de tester. En la app de Instagram: Configuración y actividad → Apps y sitios web → Invitaciones de evaluador → Aceptar.

"redirect_uri mismatch" al conectar Instagram

La URI de redireccionamiento en Meta tiene que ser exactamente https://TU-APP.vercel.app/api/instagram/callback, sin barra al final y con tu dirección real.

Comento la palabra y no llega el DM

Revisá que estés comentando desde otra cuenta (tus propios comentarios se ignoran), que la campaña esté activa, que la app de Meta esté publicada y que /api/health diga worker healthy. Después mirá DM Logs en el panel: ahí figura el motivo exacto.

Para dejarlo prolijo

  • Cambiá cualquier clave que hayas compartido.En Resend se crea una nueva; en Meta, "Restablecer" la clave secreta. Después reemplazala en Vercel y en Railway.
  • Mirá tu consumo en RailwayEn tu workspace → Usage. Así sabés cuánto vas a pagar antes de que llegue la factura.
  • Usalo con criterioMandá solo lo que la persona pidió al comentar. Instagram limita la cantidad de mensajes por hora y castiga el spam.

OpenReply es un proyecto de código abierto creado por Diwen Huang (licencia MIT): github.com/diwenne/openreply. Esta guía no está afiliada a Meta, Instagram ni ManyChat. Las pantallas de cada servicio pueden cambiar con el tiempo. Última revisión: octubre de 2026.