Bird
Bird es el enrutador único de X/Twitter. Usa SocialData como el plano de lectura económico predeterminado. Usa la CLI oficial xurl solo cuando la tarea requiera contexto de cuenta autenticada, un objeto nativo de X, o una mutación de cuenta explícitamente aprobada. No hagas que ambos proveedores respondan a la misma lectura rutinaria.
Disparadores y compatibilidad
Usar para URLs de X/Twitter, extracción de tweets/hilos/artículos, búsqueda, perfiles, respuestas/citas/contexto, recuperación de medios y acciones de cuenta de X.
Preserva estos puntos de entrada:
/bird <solicitud>— enrutador canónico.- Heredado
bird.py <URL-o-ID>— todavía lee a través de SocialData. /xurl ...— punto de entrada de compatibilidad para usuarios que solicitan explícitamente xurl; debe seguir las puertas de enrutamiento y escritura de Bird.
Enrutamiento determinista
| Intención | Primario | Alternativa | Límite |
|---|---|---|---|
| Leer tweet por URL/ID | SocialData | web/navegador solo para evidencia pública visible | Nunca escalar a xurl solo porque existe |
| Leer hilo/conversación/respuestas | SocialData | lectura de xurl solo cuando el contexto nativo de X sea requerido de forma única y esté soportado | Determinar hilo a partir de los datos obtenidos, no de la forma de la URL |
| Buscar publicaciones | Búsqueda limitada de SocialData | ruta de investigación web/SocialData existente | No se asume acceso actual a búsqueda reciente de xurl |
| Leer perfil público | SocialData | búsqueda de usuario de xurl si se necesita una vista específica de cuenta/X actual | Sin recolección masiva de grafos |
| Artículo X | Primero carga útil de tweet de SocialData; analizar artículo anidado | endpoint de tweet sin procesar de xurl con campo article | Seguir página de primera parte vinculada cuando el texto del artículo esté ausente |
| Descargar medios adjuntos | Metadatos de SocialData + descarga HTTPS limitada | navegador solo para medios públicos visibles | Sin cookies en URLs/logs; validar host/tamaño/tipo |
| ¿Quién soy? / identidad autenticada | xurl | ninguno | Contexto de cuenta de solo lectura |
| Objeto nativo de X exacto necesario para interacción posterior | xurl | SocialData para descubrimiento/contexto | Usar xurl solo para el objeto/endpoint exacto |
| Publicar, responder, citar, eliminar, dar like, republicar, marcar, seguir, bloquear, silenciar, DM, subir | xurl | ninguno | Se requiere aprobación explícita del objetivo exacto, contenido y efecto |
Carga enrutamiento de proveedores para recetas de endpoints, errores y reglas de respaldo. Carga operaciones de xurl solo para una tarea específica de xurl.
Contrato de proveedor y costo
- SocialData es el predeterminado para toda lectura ordinaria. Usa primero la
SOCIALDATA_API_KEYdirecta configurada en el runtime actual. Usa el proxy SocialData de Human20 Keys aprobado cuando falte una clave directa y la clave de cliente H20 tenga capacidadsocialdata. Una clave genérica del modelo H20 puede existir pero devolverprovider not allowed: socialdata; eso no justifica cambiar a xurl. - La clase de precio predeterminada en vivo de Human20 Keys para
social-requestfue verificada en0 créditos/solicitud; trátala como estado mutable del runtime y vuelve a comprobarla antes de afirmar el costo. - Una solicitud de usuario normalmente debe consumir una búsqueda/consulta más solo las lecturas dependientes limitadas necesarias para un hilo o contexto solicitado. No expandas, raspes seguidores/siguiendo, exportes, hagas streaming, sondees ni obtengas en masa.
- Nunca caigas silenciosamente de SocialData a llamadas pagas de la API de X.
xurlse selecciona por necesidad de capacidad, no por fallo del proveedor.
Secretos y seguridad de ejecución
- Nunca leas, imprimas, analices, resumas o expongas almacenes de secretos,
~/.xurl, cookies, encabezados de autorización, claves API, tokens de portador, firmas de solicitud o valores de entorno. - Verifica las credenciales solo a través de comandos seguros de estado/sonda. No uses
--verbose/-vde xurl ni indicadores de credenciales en línea. - Las llamadas a SocialData son de solo lectura y limitadas. Trata
401/403como credenciales/política,402como créditos/facturación,404como ausente/privado/eliminado,429como límite de tasa, y5xxcomo fallo del proveedor. No etiquetes mal una clase como otra. - El navegador/relé es el último recurso y nunca un mecanismo de extracción de cookies.
- Las escrituras son efectos protegidos. Antes de cualquier mutación de xurl, relee el objetivo y la carga útil exactos, requiere aprobación explícita del usuario para ese efecto exacto, ejecuta una vez y verifica desde la respuesta sin procesar de xurl/X. La aprobación para investigar no es aprobación para interactuar o publicar.
- Los DM, eliminación, bloqueos, cambios de cuenta, carga de medios y publicación pública nunca ocurren implícitamente.
Flujo de trabajo
- Clasifica la solicitud:
read,search,profile,thread,article,media,account-read, owrite. - Normaliza la URL/ID de X sin cambiar el identificador. Obtén antes de decidir tweet vs hilo.
- Enruta desde la tabla. Para lecturas rutinarias, llama a SocialData exactamente una vez primero.
- Analiza de forma defensiva. Las cargas útiles de artículos pueden estar bajo
article.title,article.preview_textyarticle.content_state.blocks[]; los medios pueden estar anidados en objetos citados o retuiteados. - Si el usuario pregunta si el elemento importa, abre repositorios/documentos/artículos de primera parte vinculados e inspecciona los medios adjuntos. Mantén la publicación de X como una afirmación/fuente, no como prueba automática.
- Si el proveedor seleccionado falla, informa el fallo exacto. Usa solo la alternativa indicada cuando aún pueda responder a la misma solicitud sin expandir costo, privacidad o efecto.
- Devuelve una salida fiel a la fuente y un recibo compacto del proveedor.
Contrato de salida
Devuelve:
Resultado: <contenido completo solicitado o respuesta concisa y fiel>
Tipo: tweet | hilo | artículo | perfil | búsqueda | acción-de-cuenta
Autor/fuente: <identidad pública segura + URL canónica>
Proveedor: SocialData | xurl | alternativa web/navegador
Evidencia: <IDs, marca de tiempo, métricas/contexto cuando esté disponible>
Recibo de acción: <solo para mutaciones de xurl aprobadas; estado exacto/ID del objeto>
Limitación: <falta/privado/eliminado/límite de tasa/plan/brecha de proveedor, o ninguna>
No expongas claves internas, modos de autenticación, ubicaciones de secretos o detalles privados del runtime en los recibos visibles para el usuario.
Lista de verificación rápida de pruebas
-
/bird <URL de tweet>selecciona SocialData, no xurl. -
/bird search from:handleselecciona búsqueda limitada de SocialData. -
/bird whoamiselecciona identidad de solo lectura de xurl. -
/bird reply <URL> <texto>se detiene para aprobación exacta antes de xurl. - El código
402de SocialData no se informa como credenciales faltantes; el fallo de búsqueda reciente de xurl no deshabilita las lecturas de identidad/perfil. - El análisis de hilos y artículos usa la estructura obtenida, no suposiciones de URL.
- Eliminar el contrato de SocialData predeterminado o de aprobación de escritura hace que la validación falle.
Criterios de finalización
- El contenido/acción solicitada de X está completo o se informa un bloqueador exacto.
- Las lecturas rutinarias usaron SocialData primero y evitaron gasto duplicado de proveedor.
- xurl se usó solo por una razón específica de capacidad.
- Cualquier escritura tuvo aprobación exacta y relectura de API sin procesar.
- Ningún secreto/cookie/credencial privada entró en la salida, artefactos o registros.