Communitygithub.com

baronguyen001/ai-automation-skills

Rota un conjunto de proxies HTTP/SOCKS con selección round-robin, seguimiento de fallos y un período de enfriamiento que descarta proxies muertos antes de reintentarlos. Trae tu propia lista de proxies mediante variables de entorno; no se incluye ninguna. Útil para rotar proxies, distribuir solicitudes entre proxies, evitar bloqueos por IP, reintentar a través de otro proxy o verificar estado de proxies.

¿Qué es ai-automation-skills?

Esta habilidad implementa un rotador de proxies que distribuye las solicitudes HTTP/SOCKS entre un grupo de proxies mediante selección round-robin. Automáticamente rastrea los fallos de cada proxy y los pone en un período de enfriamiento si fallan demasiadas veces, para luego darles otra oportunidad. Es ideal para desarrolladores que necesitan evitar bloqueos por IP al hacer scraping o muchas solicitudes. No incluye proxies propios: debes proporcionarlos mediante la variable de entorno `PROXY_POOL`. Soporta Python con la biblioteca `requests` y funciona con plataformas como Claude Code o Cursor. La habilidad también proporciona un método `health_check` para detectar proxies muertos antes de una ejecución grande y maneja el error de "no hay proxies saludables" mediante retroceso y reintento. Está basada en el uso en producción del autor y es compatible con ecosistemas Trawlkit.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/baronguyen001/ai-automation-skills/tree/HEAD/skills/proxy-rotator

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Rotador de Proxies

Usa esta habilidad cuando un raspador deba distribuir solicitudes entre varios proxies y dejar de golpear a aquellos que han fallado. El rotador entrega el siguiente proxy saludable, cuenta los fallos y pone un proxy en un período de enfriamiento después de fallar demasiadas veces; luego le da otra oportunidad. Tú proporcionas la lista de proxies; no se incluye ninguna.

Cuándo invocar

  • El usuario dice: "rotar proxies", "distribuir solicitudes entre proxies", "dejar de recibir bloqueos por IP", "reintentar a través de otro proxy".
  • El código en la conversación realiza muchas solicitudes salientes y necesita distribuirlas entre un grupo de proxies.

Cuándo NO invocar

  • Una sola conexión es suficiente, o el objetivo permite explícitamente tu volumen; rotar proxies añade complejidad innecesaria.
  • La intención es evadir un bloqueo explícito o abusar de un servicio; mantén el uso dentro de los términos del objetivo.

Ejemplo concreto

Entrada del usuario:

Tengo 5 proxies. Distribúyelos en round-robin y salta los que empiecen a fallar.

Salida:

import requests
from rotator import ProxyRotator

rot = ProxyRotator.from_env()        # PROXY_POOL="http://h1:8080,socks5://h2:1080,..."
for url in urls:
    p = rot.get()                    # siguiente proxy saludable
    try:
        r = requests.get(url, proxies=p.as_dict(), timeout=15)
        rot.report(p, ok=r.ok)       # retroalimenta el resultado para que el grupo se autosane
    except Exception:
        rot.report(p, ok=False)      # demasiados fallos -> puesto en enfriamiento

Patrón a aplicar

  1. Carga los proxies desde el entorno o un archivo ignorado por git; nunca confirmes URLs de proxy reales ni credenciales.
  2. Siempre llama a report(proxy, ok=...) después de cada solicitud para que los proxies fallidos se pongan en enfriamiento automáticamente.
  3. Ajusta max_fails y cooldown según el objetivo; un enfriamiento corto recupera proxies intermitentes, uno largo elimina los malos.
  4. Ejecuta health_check antes de un lote grande para descartar proxies muertos de antemano.
  5. Maneja el error "no hay proxies saludables" — retrocede y reintenta en lugar de detener la ejecución.

Referencia: assets/rotator.py.

Fuente

Destilado del uso en producción en los proyectos de automatización del autor. v1.0.0. Ver también: [[playwright-login-session]], [[pipeline-orchestrator]], [[cron-dispatch]].

→ Construye el bot completo y ejecutable con Trawlkit.

Individual skills in this repo

This repo contains 9 individual skills — each has its own dedicated page.

baronguyen001/ai-automation-skills

Schedule any script to run on a recurring schedule on Windows (Task Scheduler) or Linux (cron) - register, list, and remove jobs from one command, with logging to a file and a guard against overlapping runs. Use for schedule a script, run nightly, set up a cron job, windows task scheduler, or run on a timer.

baronguyen001/ai-automation-skills

Turn a run's list of result dicts into a schema'd CSV and a Markdown table from one column spec - declare columns once, emit both, with stable ordering and safe escaping, stdlib only, no pandas. Use when the user asks to write results to CSV, export a report, make a markdown summary table, or save a run's output as a spreadsheet.

baronguyen001/ai-automation-skills

Strip HTML to clean plain text with the standard library only (no BeautifulSoup/lxml): drops script/style, turns block tags into line breaks, and collapses whitespace. Use when the user wants readable text from an HTML page/email, to clean scraped HTML before sending it to an LLM, or to build a text index from web content.

baronguyen001/ai-automation-skills

Persist records between scheduled runs as append-only JSON Lines (one object per line) with streaming reads and optional key-based dedup, stdlib only. Use when the user wants to log run results to JSONL, append events to a file, dedup records by id across runs, or keep a simple durable history without a database.

baronguyen001/ai-automation-skills

Extract text and simple table-like rows from a PDF for downstream AI without OCR binaries. Use when the user asks to read a PDF, turn a PDF into text, pull simple tables from statements/reports, or feed PDF content into an LLM pipeline.

baronguyen001/ai-automation-skills

Parse an RSS 2.0 or Atom feed into normalized item dicts (title, link, id, published, summary) with the standard library only - no feedparser. Use when the user asks to read an RSS/Atom feed, poll a blog/news feed, extract feed entries, or watch a site that publishes a feed.

baronguyen001/ai-automation-skills

Upload and download run artifacts from S3-compatible storage with BYO bucket and credentials from env. Use when the user asks to store scraper output, archive reports, publish artifacts to object storage, fetch a prior run file, or use MinIO/R2/Spaces/S3 without hardcoding credentials.

baronguyen001/ai-automation-skills

Draft a short-form TikTok/Reels/Shorts or long-form video script from a topic and creator persona file - hook variants, beat-structured body, CTA, b-roll cues, caption overlays, and [STORY]/[NUMBER] slots so the model never fabricates personal facts. Use for write a video script, tiktok script, youtube script, or /shortform-script.

baronguyen001/ai-automation-skills

Give scheduled scripts memory between runs with one SQLite file - a seen-set for dedup, a key/value cursor to resume where you left off, and order-preserving new-item filtering. Use for dedup across runs, don't re-alert the same item, remember the last id, resume a scraper, or persist state between cron runs.

Skills relacionados