YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

Xbot — Bot de Warmup (GoLogin + Playwright, fase 1: model_uk)

Bot de warmup para cuentas de Instagram gestionadas dentro del navegador antidetect GoLogin (app Orbita, Windows). Cada cuenta vive SIEMPRE dentro de su perfil GoLogin (proxy + fingerprint propios): el bot controla ese navegador vía CDP (connect_over_cdp), nunca abre uno propio.

Fase 1: solo model_uk (Instagram UK). TikTok entra en fase 2 (no implementado).


1. Instalación (Windows, paso a paso)

1.1 Instalar Python 3.11+

  1. Descarga el instalador desde https://www.python.org/downloads/windows/
  2. En la primera pantalla del instalador marca "Add python.exe to PATH".
  3. Instala y verifica en una terminal nueva:
    python --version
    
    Debe mostrar 3.11+ (el código es compatible también con 3.10; se recomienda 3.11+). Si tienes varias versiones, puedes forzar con py -3.11.

1.2 Instalar las dependencias

Todos los comandos se ejecutan desde la carpeta del proyecto:

cd C:\xbot
pip install -r requirements.txt

o, manualmente:

pip install pygologin playwright PyYAML tzdata requests

Notas:

  • pygologin es el SDK oficial (repo: github.com/gologinapp/pygologin).
  • tzdata es obligatorio en Windows para que zoneinfo resuelva Europe/London (regla de horario 09:00–23:00 UK).
  • No hace falta playwright install: el bot nunca lanza un navegador propio, solo se conecta por CDP al Orbita de GoLogin.

2. Obtener el API token de GoLogin

  1. Abre la app de GoLogin → Settings → API.
  2. Copia el API token.
  3. Guárdalo como variable de entorno permanente (CMD):
    setx GOLOGIN_TOKEN "PEGA_AQUI_TU_TOKEN"
    
  4. Cierra y vuelve a abrir la terminal. Verifica: echo %GOLOGIN_TOKEN%

Si no ves la pestaña API o el token aparece bloqueado, tu plan de GoLogin puede no incluir acceso API.


3. Obtener el profile_id (script incluido)

cd C:\xbot
python list_profiles.py

Salida esperada (tabla ID | NOMBRE): ``` ID NOMBRE

a1b2c3d4-.... model_uk

Copia el `ID` del perfil de Orbita de la cuenta model_uk.

---

## 4. Configurar `config.yaml`
Edita `C:\xbot\config.yaml` — sección `profiles.model_uk`:
```yaml
profiles:
  model_uk:
    warmup_start: "2026-09-07"            # fecha de inicio del warmup (YYYY-MM-DD)
    ig_handle: TU_USUARIO_DE_INSTAGRAM    # rellena cuando exista la cuenta
    gologin_profile_id: PEGA_EL_ID_DEL_PASO_3
    nurture_days_before_account: 3        # dias de SOLO nurturing antes de pedir crear la cuenta
    account_ready: false                  # pon true cuando la cuenta IG exista en ese perfil

Opcional (notificaciones): telegram.bot_token, telegram.chat_id, telegram.notify_summary: true.


5. Flujo secuencial por fases (importante)

El bot es secuencial: mientras no exista la cuenta de Instagram, jamás entra a Instagram. La fase se guarda en state.json (campo phase).

flowchart TD
    A[nurture_pre: dias 1 a N solo nurturing] -->|warmup_day supera N| B[awaiting_account]
    B -->|usuario crea correo y cuenta IG a mano y pone account_ready true| C[ig_warmup]
    B -->|cada dia sigue nutriendo| B
    C -->|flujo normal: nurturing + feed IG| C

Fase 1: nurture_pre (días 1 a N, default 3)

La sesión diaria es solo cookie nurturing (todo el presupuesto de 15-35 min va a bbc/amazon/youtube/gumtree/rightmove). Sin Instagram.

Fase 2: awaiting_account (te toca a ti)

Cuando warmup_day supera nurture_days_before_account, el bot imprime:

[ACCION MANUAL REQUERIDA - fase awaiting_account]
1. Abre este perfil de Orbita manualmente y crea el CORREO (ej. gmail.com).
2. Con ese correo crea la CUENTA DE INSTAGRAM dentro del MISMO perfil
   (instagram.com/accounts/emailsignup) y verifica email/telefono.
3. Deja la sesion de IG iniciada en ese perfil.
4. En config.yaml pon: account_ready: true (y el ig_handle real).
5. Vuelve a correr: python bot.py --profile <perfil>

Cada día en esta fase el bot sigue nutriendo (sesión solo de nurturing) y te lo recuerda. Si configuraste Telegram, las instrucciones también llegan ahí.

Fase 3: ig_warmup (flujo normal)

Cuando pongas account_ready: true y el ig_handle real, la siguiente corrida entra al flujo completo: nurturing (50-65% del tiempo) + feed de Instagram. Los likes siguen sujetos a like_start_day (día 4) y topes diarios.


6. Uso diario

Sesión automática

cd C:\xbot
python bot.py --profile model_uk
  • Solo corre entre 09:00 y 23:00 hora UK; una sesión por día (idempotente).
  • Si ya corrió hoy: "ya ejecuto su sesion de hoy" y no hace nada.

Abrir el perfil para crear la cuenta a mano (--task manual)

python bot.py --profile model_uk --task manual

Abre Orbita con tu perfil (proxy + fingerprint reales), deja el navegador abierto para que tú crees el correo y la cuenta de Instagram, y al presionar ENTER lo cierra limpio. Es actividad humana: no aplica la ventana horaria ni la cuarentena (solo se avisa). Recomendado usarlo cuando el bot esté en fase awaiting_account.

Qué hace una sesión automática (daily)

  1. Valida perfil, horario UK, cuarentena, idempotencia y fase.
  2. Arranca Orbita con tu perfil GoLogin (gl.start(), 2 reintentos).
  3. Nurturing (siempre).
  4. Instagram solo en fase ig_warmup: 8-20 posts, pausas 2-40 s, 1 video completo al azar, 0-3 likes con hover previo (solo warmup_day >= 4).
  5. Cierra Orbita, guarda state.json (warmup_day += 1) y loguea en logs.db.

7. Archivos generados en tiempo de ejecución

Archivo Qué es
state.json Estado por perfil: phase, warmup_day, likes_today, sessions_today, last_run, quarantine_until
logs.db SQLite con la tabla actions(timestamp, profile, action, detail, ok)

Consultar el log:

python -c "import sqlite3;[print(r) for r in sqlite3.connect('logs.db').execute('SELECT timestamp, action, detail, ok FROM actions ORDER BY id DESC LIMIT 30')]"

Liberar la cuarentena manualmente (solo si estás seguro)

Edita state.json y pon "quarantine_until": null.

Reiniciar el warmup de un perfil

Borra la entrada del perfil en state.json; warmup_day y phase se recalculan desde warmup_start en la siguiente corrida.


8. Automatizar con Task Scheduler (opcional)

schtasks /Create /TN "XbotWarmup" /TR "python C:\xbot\bot.py --profile model_uk" /SC DAILY /ST 10:07

Hora con minutos irregulares a propósito; el bot revalida el horario UK internamente.


9. Reglas anti-ban implementadas (resumen)

  1. Sesión total 15-35 min (log-normal), máx 1 sesión/día (idempotencia).
  2. Sleep entre acciones: base 2-8 s con jitter ±50% — nunca valores fijos.
  3. Likes: máx 15/día, solo desde warmup_day >= 4, probabilidad 0.4 por post, nunca 2 likes seguidos sin scroll de por medio, siempre hover antes de like.
  4. Kill signal (captcha / login requerido / challenge / checkpoint) → aborta TODO, gl.stop(), cuarentena 48 h y notificación Telegram.
  5. Solo corre 09:00-23:00 Europe/London (zoneinfo).
  6. Nunca comenta, sigue, publica ni abre DMs; solo perfiles de config.yaml.
  7. Idempotente por día.
  8. warmup_day += 1 al terminar la sesión diaria completa.
  9. Flujo secuencial: sin cuenta de Instagram creada, el bot no entra a Instagram (fases nurture_pre / awaiting_account).

10. Solución de problemas

Síntoma Causa / solución
Could not open requirements file No estás en C:\xbot: ejecuta cd C:\xbot primero
No pude cargar la zona horaria Europe/London Falta pip install tzdata
GOLOGIN_TOKEN esta vacio setx GOLOGIN_TOKEN "..." y reabre la terminal
token rechazado por GoLogin (HTTP 401) Token incorrecto o revocado; regenera en Settings → API
GoLogin no arranco tras 3 intentos Cierra Orbita manualmente, revisa proxy del perfil, reintenta
No pude conectarme al navegador Orbita via CDP Cierra el perfil abierto en la app de GoLogin y reintenta
El bot nunca entra a Instagram Estás en fase nurture_pre/awaiting_account: crea la cuenta a mano (--task manual) y pon account_ready: true en config.yaml
[ERROR] Falta una dependencia cd C:\xbot && pip install -r requirements.txt
Se detiene y no corre de nuevo Idempotencia diaria; correrá mañana

11. Estructura del proyecto

C:\xbot\
├── bot.py               # entrypoint CLI (--profile --task daily|manual) + fases
├── config.yaml          # perfiles, límites, sitios, Instagram, telegram
├── gologin_client.py    # wrapper pygologin: start/stop + 2 reintentos
├── human.py             # sleep_jitter, bezier_move, random_scroll, log_normal
├── list_profiles.py     # obtiene profile_id (GET /profiles)
├── actions/
│   ├── nurture.py       # cookie nurturing 3-4 sitios
│   ├── ig_scroll.py     # feed IG + likes condicionales
│   └── detect.py        # captcha/challenge/checkpoint → kill signal
├── state.json           # (generado al correr) estado por perfil, incluye phase
├── logs.db              # (generado al correr) log SQLite
└── requirements.txt
Downloads last month
5
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support