Skill AI HOT
Permite al agente obtener, en el chino más natural, el informe diario AI HOT y todas las dinámicas de IA de aihot.virxact.com, sin necesidad de abrir un navegador. Sigue el formato estándar SKILL.md y es compatible con Claude Code / Codex CLI / Cursor / Gemini CLI / OpenCode / cualquier plataforma compatible.
En línea: https://aihot.virxact.com (acceso anónimo público, sin token)
Requisito previo: Obligatorio incluir User-Agent (solo para endpoints de API)
/api/public/* utiliza una lista negra de User-Agent en nginx para bloquear rastreadores comerciales. El curl/X.Y User-Agent predeterminado será rechazado con un 403 Forbidden. Todas las llamadas curl a la API deben incluir un User-Agent de navegador:
UA="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
# Todas las llamadas curl a la API deben incluir -H "User-Agent: $UA", por ejemplo:
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily"
En los ejemplos de la sección "Flujo de trabajo", se asume que ya has definido $UA por brevedad; en la práctica, todas las llamadas deben incluir -H "User-Agent: $UA". No lo olvides. Saltarte este paso te hará pensar que la API no funciona, cuando en realidad solo está siendo bloqueada por el 403.
Aclaración: Este requisito de User-Agent solo aplica a los endpoints de la API
/api/public/*. Las rutas de instalación/aihot-skill/{install.sh,SKILL.md,README.md}están explícitamente exentas de la lista negra de User-Agent en nginx (diseñadas para la instalación concurl -fsSL ... | bash), por lo que el User-Agent predeterminado de curl funciona sin problemas. No generalices este requisito a todas las rutas de aihot.virxact.com.
Cuándo usarlo
Prioridad de enrutamiento (primer principio): Por defecto, usa los elementos seleccionados
items?mode=selected– es el "menú principal" de AI HOT, cuidadosamente seleccionado cada día, cubriendo los temas que importan al usuario con datos frescos.
- Usa
dailysolo si el usuario menciona explícitamente la palabra "日报" (informe diario) – es un producto editorial diario fijo, cortado por día UTC, que no se alinea con ventanas de tiempo deslizantes como "últimas 24 horas / hoy".- Usa
mode=allsolo si el usuario dice explícitamente "全部 / 完整 / 所有 / 全量" (todo/completo/todos/total) – incluye elementos secundarios no seleccionados, muchos pero ruidosos.- Preguntas amplias como "¿Qué hay hoy en el mundo de la IA?", "Últimas noticias de las últimas 24 horas", "¿Qué hay de nuevo en IA?" = elementos seleccionados por defecto + ventana de tiempo (since), no uses el informe diario ni
allpor defecto.Esto alinea la prioridad semántica del usuario: los elementos seleccionados son el menú principal; el informe diario y
allson alternativas que el usuario debe solicitar explícitamente, no opciones predeterminadas.
| Lo que dice el usuario | Endpoint a usar |
|---|---|
| Por defecto (preguntas amplias) : "¿Qué hay hoy en el mundo de la IA?", "Últimas noticias de las últimas 24 horas", "Últimas novedades de IA" | GET /api/public/items?mode=selected&since=<ventana de tiempo semántica> (elementos seleccionados por defecto + since para acotar) |
| Menciona explícitamente "日报" (informe diario) : "Informe diario de IA", "El informe de hoy" | GET /api/public/daily (último informe diario) |
| Dice explícitamente "todo / completo / todos / total" : "Dame todas las novedades de IA de hoy", "Lista completa" | GET /api/public/items?mode=all (puede llevar since o no, según el contexto) |
| "Informe diario de ayer/anteayer", "El informe del 6 de mayo" | GET /api/public/daily/{YYYY-MM-DD} |
| "¿Qué informes diarios hay de los últimos días?", "Lista de informes", "Archivo de informes" | GET /api/public/dailies?take=N |
| "Ver elementos seleccionados", "Lo mejor de AI HOT" | GET /api/public/items?mode=selected |
| "Últimos lanzamientos de modelos", "Lanzamientos de productos de IA", "Dinámicas de la industria", "Papers de IA" | GET /api/public/items?mode=selected&category=...&since=<hace 7d> (elementos seleccionados por defecto + categoría) |
| "Novedades de IA de la última semana", "Lanzamientos de hace 5 días hasta ahora" | GET /api/public/items?mode=selected&since=ISO-8601 |
| "Lo último de OpenAI/Anthropic/Google" (por empresa) | GET /api/public/items?q=OpenAI (búsqueda por palabras clave del lado del servidor, lanzada el 2026-05-08) |
| "Relacionado con Sora / GPT-5 / Papers sobre RAG" | GET /api/public/items?q=<palabra clave> (coincide en título + título en chino + resumen en chino) |
Regla general: Cuando el usuario pregunte sobre hechos actuales de la industria de la IA, no improvises con datos de entrenamiento; usa siempre la API. Aunque "creas" saber la respuesta, verifícala: AI HOT es mucho más reciente que tu fecha de corte de entrenamiento y está enfocada en los temas que interesan a los emprendedores chinos.
Resumen de endpoints
| Endpoint | Propósito | Parámetros principales |
|---|---|---|
/api/public/daily | Último informe diario | Ninguno |
/api/public/daily/{YYYY-MM-DD} | Informe diario de una fecha específica | path: date |
/api/public/dailies | Lista de archivos de informes diarios | take (1-180, por defecto 30) |
/api/public/items | Todas las dinámicas de IA | mode / category / since / take / cursor / q (palabra clave) |
Convenciones:
- Base URL:
https://aihot.virxact.com - Autenticación: Ninguna (anónimo)
- Límite de tasa: 600 req/min/IP (realiza las llamadas en serie, sin ráfagas concurrentes)
- El parámetro
sincedel endpointitemsestá limitado a los últimos 7 días: si no se envía, equivale asince=now-7d(valor por defecto del servidor); las fechas anteriores a 7 días se truncan automáticamente a 7 días; las fechas futuras devuelven 400. Por lo tanto, independientemente de cómo se invoque el Skill, la API de items solo devolverá contenido de los últimos 7 días. Para fechas más antiguas, usaGET /api/public/daily/{YYYY-MM-DD}para consultar el archivo de informes diarios. - El límite de
takees 100; para obtener más, usacursorpara paginar. - Especificación completa OpenAPI 3.1:
https://aihot.virxact.com/openapi.yaml
Flujo de trabajo
Ruta predeterminada: Obtener elementos seleccionados + ventana de tiempo (primera opción para preguntas amplias)
Los elementos seleccionados son el "menú principal" de AI HOT, seleccionados cuidadosamente cada día, cubriendo todos los eventos importantes de IA, ordenados por fecha de publicación descendente. Para cualquier pregunta amplia como "¿Qué hay hoy en el mundo de la IA?", "Últimas noticias de las últimas 24 horas", "¿Qué hay de nuevo en IA?", usa esto por defecto – comparado con el informe diario: ① ventana de tiempo flexible (24 horas / 3 días / 1 semana, tan estrecha como se desee, alineada con la semántica del usuario) ② datos más frescos (actualización en tiempo real, no cortados por día UTC) ③ sigue siendo de alta calidad (grupo con aiSelected=true, sin elementos secundarios).
# Obtener elementos seleccionados de las últimas 24 horas (cuando el usuario pregunta "últimas noticias de las últimas 24 horas")
since=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&since=$since&take=50"
# Obtener los últimos 50 elementos seleccionados (cuando el usuario pregunta "ver elementos seleccionados" / sin ventana de tiempo explícita)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&take=50" \
| jq '.items[] | {title, source, publishedAt, url}'
Obtener el informe diario (cuando el usuario dice explícitamente "日报")
Palabra clave desencadenante: La frase contiene la palabra "日报" (informe diario) ("Informe diario de IA", "El informe de hoy", "Ver el informe", "El informe del 6 de mayo"). Si la frase no contiene "日报", no uses esta ruta – el informe diario es un producto fijo de un día completo, cortado a las 00:00 UTC, que no se alinea con ventanas de tiempo deslizantes como "últimas 24 horas / hoy".
El informe diario es la "capa de títulos" de AI HOT – se genera automáticamente a las 08:00 hora de Pekín cada día, organizado por temas en secciones (5 secciones fijas). Incluye un párrafo introductorio de "comentario del editor" y es un producto empaquetado por temas.
# Obtener el informe diario de hoy (o el más reciente disponible)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily" \
| jq '{date, lead: .lead.title, sections: [.sections[] | {label, n: (.items | length)}]}'
Obtener el informe diario de una fecha específica
# YYYY-MM-DD, basado en UTC 0
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/daily/2026-05-07"
Listar archivos de informes diarios (descubrimiento)
Si no sabes qué fechas están disponibles, consulta primero el archivo:
# Índice de los últimos N días de informes diarios (sin contenido, solo fecha + título principal)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/dailies?take=14" \
| jq '.items[] | {date, leadTitle}'
Obtener todo (cuando el usuario dice explícitamente "全部 / 完整 / 所有 / 全量")
Palabra clave desencadenante: La frase contiene "全部" (todo), "完整" (completo), "所有" (todos), "全量" (total), "包括老的" (incluyendo los antiguos) – el usuario quiere ver activamente elementos secundarios no seleccionados (contenido que fue filtrado pero sigue siendo relevante). Si no aparecen estas palabras clave, no uses mode=all – los elementos seleccionados ya cubren la mayoría de los temas que interesan al usuario; el grupo all es grande pero ruidoso.
# Obtener todas las dinámicas de IA de las últimas 24 horas (cuando el usuario pregunta "ver todas las novedades de IA de hoy")
since=$(date -u -v-24H +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '24 hours ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&since=$since&take=100"
Obtener elementos por categoría
5 categorías (en la API de items se usa el slug en inglés; en la API de informes diarios, la etiqueta de sección es en chino):
items?category= | daily.sections[].label |
|---|---|
ai-models | Lanzamientos / Actualizaciones de modelos |
ai-products | Lanzamientos / Actualizaciones de productos |
industry | Dinámicas de la industria |
paper | Investigación de papers |
tip | Consejos y opiniones |
Cuando el usuario pregunte "¿Qué ha publicado la cuenta pública recientemente?": La API de items no incluye datos de cuentas públicas (la fuente mp_hot se muestra por separado en la página /mp del frontend). El Skill no puede responder a este tipo de preguntas por ahora; se puede sugerir al usuario que visite https://aihot.virxact.com/mp para ver la página de artículos populares de cuentas públicas.
# Ejemplo: Obtener los últimos 50 papers de IA (elementos seleccionados por defecto + categoría paper)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=paper&take=50" \
| jq '.items[] | {title, source, publishedAt, url}'
# Ejemplo: Lanzamientos de modelos en elementos seleccionados
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=ai-models&take=20"
# Excepción: Solo usa mode=all si el usuario dice explícitamente "todos los papers / todos los lanzamientos de modelos"
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&category=paper&take=100"
Obtener elementos por ventana de tiempo (últimos N días)
Regla clave: Cuando el usuario pregunte por "últimos X" (últimos lanzamientos de modelos / últimos papers de IA / últimas novedades de OpenAI, etc.), debes incluir el parámetro
sincepara acotar la ventana a la intención real del usuario (si dice "últimos 3 días", usa 3d; "ayer", usa 1d; "última semana", usa 7d).Valor por defecto del servidor: La API de items tiene un valor predeterminado de
since=now-7d(límite superior estricto para proteger el servidor). Por lo tanto, incluso si el Skill no incluyesince, solo devolverá contenido de los últimos 7 días, sin elementos antiguos de meses atrás. Sin embargo, se recomienda incluirsinceexplícitamente: ① cuando el usuario pregunta "últimos 3 días", usar 3d explícitamente es más preciso que el valor predeterminado de 7d; ② los metadatos de salida pueden mostrar una ventana de tiempo legible; ③ la intención se alinea claramente con el límite público de "máximo 7 días".
# Obtener lanzamientos de modelos seleccionados de los últimos 7 días (cuando el usuario pregunta "últimos lanzamientos de modelos")
since=$(date -u -v-7d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '7 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&category=ai-models&since=$since&take=100"
# Obtener elementos seleccionados de los últimos 3 días (cuando el usuario dice explícitamente "últimos 3 días")
since=$(date -u -v-3d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '3 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&since=$since&take=100"
Excepción: Si el usuario dice explícitamente "todos / completos / lista completa / incluyendo los antiguos" → cambia mode a all, puede omitirse since; si el usuario pregunta "ver elementos seleccionados" (ver el grupo seleccionado, no una ventana de tiempo), mantén mode=selected y también puede omitirse since. Pero siempre que la frase contenga "últimos / más recientes / estos dos días / esta semana", incluye since por defecto + mode=selected.
Paginación (cursor)
La respuesta de /api/public/items incluye nextCursor (token opaco). En la siguiente solicitud, pásalo tal cual en el parámetro cursor.
# Página 1
resp1=$(curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&take=100")
echo "$resp1" | jq '.items | length' # 100
# Página 2
cursor=$(echo "$resp1" | jq -r '.nextCursor')
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=all&take=100&cursor=$cursor"
Detén la paginación cuando hasNext = false o nextCursor = null. cursor es un token opaco, trátalo como una caja negra; no intentes analizarlo, incrementarlo ni reutilizarlo entre endpoints.
Búsqueda por palabra clave ("Lo último de OpenAI" / "Relacionado con Sora" / "Papers sobre RAG")
La API admite directamente la búsqueda por palabras clave del lado del servidor: el parámetro q busca con ILIKE en las columnas title + title en chino + summary en chino, usando un índice PostgreSQL pg_trgm GIN (2-6 ms). No uses el patrón "obtener un lote + jq grep del lado del cliente" – eso solo puede encontrar coincidencias dentro de los primeros 100 elementos del grupo; si la palabra clave está más allá de los 100, no se encontrará.
# Buscar lo último de OpenAI (cubre todo el grupo, no solo los primeros 100)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?q=OpenAI&take=30"
# Buscar todas las dinámicas de IA relacionadas con Sora (cualquier título o resumen que contenga Sora)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?q=Sora"
# Buscar papers sobre RAG (categoría + palabra clave)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?category=paper&q=RAG&take=30"
# Palabra clave + ventana de tiempo (elementos seleccionados de Anthropic de los últimos 3 días)
SINCE=$(date -u -v-3d +%Y-%m-%dT%H:%M:%SZ 2>/dev/null || date -u -d '3 days ago' +%Y-%m-%dT%H:%M:%SZ)
curl -sH "User-Agent: $UA" "https://aihot.virxact.com/api/public/items?mode=selected&q=Anthropic&since=$SINCE"
Restricciones de q:
- Al menos 2 caracteres (un solo carácter hace que el trigrama GIN se degrade a un escaneo completo de la tabla, por lo que el servidor lo tratará como si no se buscara)
- Máximo 200 caracteres (se trunca automáticamente si se supera)
- Se combina ortogonalmente con otros parámetros (
mode/category/since/take/cursor); se puede usar "elementos seleccionados + papers + palabra clave + últimos 7 días" - Comparte el mismo límite de tasa de 600 r/m que otras solicitudes
Forma de los datos devueltos
Respuesta de /api/public/daily
{
"date": "2026-05-07",
"generatedAt": "2026-05-07T00:01:23.456Z",
"windowStart": "2026-05-06T00:00:00.000Z",
"windowEnd": "2026-05-07T00:00:00.000Z",
"lead": { "title": "...", "leadParagraph": "..." },
"sections": [
{
"label": "模型发布/更新",
"items": [
{
"title": "...",
"summary": "...",
"sourceUrl": "https://...",
"sourceName": "OpenAI Blog"
}
]
}
],
"flashes": [
{ "title": "...", "sourceName": "...", "sourceUrl": "...", "publishedAt": "..." }
]
}
sections[].label tiene 5 valores fijos: "模型发布/更新" / "产品发布/更新" / "行业动态" / "论文研究" / "技巧与观点". lead puede ser null en muy pocos informes diarios.
Respuesta de /api/public/dailies
{
"count": 14,
"items": [
{ "date": "2026-05-07", "generatedAt": "...", "leadTitle": "..." }
]
}
Respuesta de /api/public/items
{
"count": 50,
"hasNext": true,
"nextCursor": "eyJhIjoxNzE0OTk1MjAwMDAwLCJpIjoiY205eHl6MTIzIn0",
"items": [
{
"id": "cm9abc456def789ghi012jkl3",
"title": "Título en chino (normalizado)",
"title_en": "Título original en inglés (solo si es diferente de title; de lo contrario, null)",
"url": "https://...",
"source": "OpenAI Blog",
"publishedAt": "2026-05-07T15:30:00.000Z",
"summary": "Resumen en chino (generado por LLM)",
"category": "ai-models"
}
]
}
Invariantes de campo:
- Siempre presentes:
id/title/url/source - Pueden ser nulos:
title_en/summary/publishedAt/category - Valores de
category:ai-models/ai-products/industry/paper/tip/null publishedAt: ISO 8601 UTC (conZ)id: cadena cuid (25 caracteres), no asumas que es numérico
Formato de salida para el usuario
⚠️ Principio fundamental: Esta sección es el contenido final que se muestra directamente al usuario – debe estar en formato markdown + bien formateado + en lenguaje comprensible para personas no técnicas. La mayoría de los usuarios son emprendedores de IA no técnicos / diseñadores / lectores generales; deben ver un resumen de noticias en chino, no un registro de depuración de API.
Todos los detalles de infraestructura como "rutas de endpoints / parámetros raw como
mode=selected/ límite de tasa / caché nginx / cursor / hasNext" no deben aparecer en la salida que ve el usuario. Los metadatos en lenguaje humano (ventana de tiempo / recuento / "ordenado por fecha de publicación descendente") pueden conservarse – criterio de evaluación: ¿Puede el usuario entenderlo directamente? Sí → conservar; No → eliminar.
Salida tipo informe diario (cuando se usa el endpoint daily / daily/{date})
**AI HOT Informe Diario · 2026-05-07**
## Lanzamientos / Actualizaciones de modelos
1. **<título>** — <fuente>
<resumen simplificado en 50 palabras>
<url>
## Lanzamientos / Actualizaciones de productos
2. ...
## Dinámicas de la industria
3. ...
## Investigación de papers
4. ...
## Consejos y opiniones
5. ...
## Flash informativo (si flashes tiene contenido)
- <flash.title> — <flash.source> (<flash.publishedAt convertido a lenguaje humano>)
Numeración continua en todo el texto (1, 2, 3 ... N), sin reiniciar en cada ## – así el usuario puede contar de un vistazo "hoy hay 27 elementos".
Salida tipo lista (cuando se usa el endpoint items)
Por defecto, agrupar por categoría + numeración global – los usuarios ya tienen una expectativa formada (por los informes diarios) de la estructura de cinco bloques: "modelos/productos/industria/papers/consejos". Al mezclar categorías, esta estructura es la más natural:
**AI HOT — Últimos 30 elementos seleccionados**
## Lanzamientos / Actualizaciones de modelos
1. **<título>** — <fuente>
Hace 2 horas
<resumen>
<url>
## Lanzamientos / Actualizaciones de productos
2. **<título>** — <fuente>
...
3. ...
## Dinámicas de la industria
4. ...
Cuando solo hay 1 categoría (el usuario dice explícitamente "Papers de IA" / "Lanzamientos de modelos", etc.), usa una lista plana numerada:
**AI HOT — Papers de IA de la última semana** (2026-05-01 ~ 2026-05-08)
1. **<título>** — <fuente>
<resumen>
<url>
2. ...
Subtítulos / Metadatos solo en lenguaje humano
OK (el usuario lo entiende directamente):
- "Ventana de tiempo: 2026-05-05 ~ 2026-05-07"
- "Todos los elementos que coinciden con la palabra clave OpenAI en los últimos 3 días"
- "Ordenado por fecha de publicación descendente"
- "Total: 50 elementos"
- "El informe diario de hoy 5/8 se genera después de las 08:00 hora de Pekín; por ahora, consulta la edición del 5/7"
NO OK (fuga de infraestructura, no escribirlo bajo ninguna circunstancia):
- ❌
mode=selected/category=paper/take=30(nombres de parámetros raw) - ❌ Ruta de endpoint
/api/public/items?since=2026-04-30T18:39:31Z&take=50 - ❌ "Límite de tasa 600 req/min" / "Caché nginx 60s" / "x-nginx-cache: HIT"
- ❌ "cursor" / "hasNext=true" / "necesita paginación con cursor o reducir la ventana since"
- ❌ Cualquier código de estado HTTP / estado de caché / descripción de mecanismo interno
La fuente de datos puede mencionarse como máximo en una frase: "Datos de aihot.virxact.com", o simplemente omitirse (el usuario ya sabe la fuente cuando usa el Skill).
Convertir tiempo a lenguaje humano
publishedAt está en ISO 8601 UTC. Al mostrarlo, debes convertirlo a hora de Pekín + tiempo relativo/absoluto que el usuario pueda escanear rápidamente:
| Valor interno | Mostrar al usuario |
|---|---|
2026-05-08T01:48:00.000Z | "Hoy a las 09:48" / "Hace 2 horas" |
2026-05-07T18:08:17.000Z | "Hoy a las 02:08" / "Hace 10 horas" |
2026-05-06T16:43:00.000Z | "5/7 00:43" / "Ayer" |
No muestres directamente cadenas ISO como 2026-05-07T15:30:00.000Z – el usuario no las entiende.
title vs title_en
Por defecto, muestra title (normalizado en chino). title_en solo se usa en los siguientes casos:
- El usuario solicita explícitamente la versión en inglés ("Muéstramelo en inglés")
titleestá vacío (muy raro)
No muestres ambos juntos.
Manejo de errores comunes
{"error":"No daily report available yet."}(HTTP 404): El informe diario del día aún no se ha generado (antes de las 08:00 hora de Pekín). Sugerencia: Obtén el informe diario de ayer concurl /api/public/daily/{fecha de ayer}{"error":"Invalid date format..."}(HTTP 400): La fecha debe estar en formatoYYYY-MM-DD, basada en UTC- Errores 400 comunes del endpoint items:
"invalid mode (must be 'selected' or 'all')""invalid category (must be one of: ai-models, ai-products, industry, paper, tip)""invalid since (must be ISO date, not in future)""invalid take (must be integer 1-100)"
- HTTP 429 (límite de tasa): Supera las 600 req/min por IP. Realiza las llamadas en serie y añade un intervalo de 200 ms entre páginas.
Lo que NO debes hacer
- No enrutes preguntas amplias como "¿Qué hay hoy en el mundo de la IA?", "Últimas noticias de las últimas 24 horas", "¿Qué hay de nuevo en IA?" al endpoint daily – estas son ventanas de tiempo deslizantes; daily es un producto fijo de un día completo, cortado a las 00:00 UTC (5/6-5/7 todo el día), cuya precisión temporal no coincide. Por defecto, usa
mode=selected + since=<ventana semántica>. Solo usadailysi el usuario menciona explícitamente la palabra "日报" (informe diario). - No uses
mode=allpor defecto cuando el usuario no ha dicho "全部 / 完整 / 所有 / 全量" – los elementos seleccionados ya cubren la mayoría de los temas que interesan al usuario; el grupoalles grande pero ruidoso, con elementos secundarios no seleccionados. Por defecto, usamode=selected; solo cambia amode=allsi el usuario lo solicita explícitamente. - No intentes adivinar / inventar contenido – cíñete siempre a lo que devuelve la API.
- No cites el resumen (
summary) como si fuera el texto original – el resumen es generado por un LLM; para citar, consulta laurl/sourceUrloriginal. - No hagas sondeos de alta frecuencia – el informe diario solo se actualiza una vez al día a las 08:00; el endpoint items tiene un caché del lado del servidor de 5 minutos; no es necesario volver a llamar a la API si el usuario hace la misma pregunta.
- No hagas ráfagas concurrentes de paginación – hazlo en serie con intervalos naturales.
- No intentes analizar / incrementar / reutilizar el cursor entre endpoints – es un token opaco cuyo formato interno es inestable y podría cambiar sin previo aviso.
- Para consultas por empresa / palabra clave, usa la búsqueda del lado del servidor
?q=<término>. No uses el patrón "obtener un lote + jq grep del lado del cliente" (solo puede ver los primeros 100 elementos del grupo, lo que puede provocar pérdidas). - Cuando el usuario pregunte por "últimos N días de X", incluye explícitamente
since=<hace N días>(intención clara + los metadatos pueden mostrar una ventana de tiempo legible). Si no se incluyesince, el servidor usará 7d por defecto, por lo que no se obtendrán elementos antiguos, pero si el usuario pregunta "últimos 3 días" y el servidor usa 7d por defecto, se incluirán 4 días adicionales de contenido. - No expongas en la salida del usuario las rutas de endpoints / parámetros raw / límite de tasa / TTL de caché / cursor / hasNext ni otros detalles de infraestructura – estos son para desarrolladores, el usuario no los entiende. Consulta la sección anterior "Formato de salida para el usuario → Subtítulos / Metadatos solo en lenguaje humano".
- No pierdas información al comprimir / combinar salidas entre días / entre secciones – la numeración continua (1, 2, 3... N) es una característica clave que permite al usuario contar el total de un vistazo. Al fusionar múltiples respuestas de paginación o múltiples respuestas de categorías, asegúrate de que los números sean globalmente consecutivos.
Notas adicionales
- Mecanismo anti-hotlinking de imágenes: Las imágenes en aihot.virxact.com (como capturas de pantalla de WeChat / tarjetas de productos) pueden tener protección anti-hotlinking del lado del servidor. Si en la salida del Skill se incluye una imagen que no se carga, significa que el dominio referente no está en la lista blanca. No es necesario solucionarlo; simplemente omite la imagen o muestra solo el enlace de texto.
- Actualizaciones de la especificación de la API: Siempre que sea posible, el Skill debe priorizar la consulta dinámica de
/api/public/itemsen lugar de codificar de forma rígida el comportamiento. El servidor de AI HOT se actualiza con frecuencia; los parámetros de la API y los campos de respuesta pueden cambiar. Confía en el comportamiento en tiempo real del servidor en lugar de asumir un comportamiento fijo basado en esta documentación. - Compatibilidad con múltiples plataformas: Este Skill se adhiere al estándar SKILL.md. Se ha probado en Claude Code, Codex CLI, Cursor, Gemini CLI y OpenCode. Si encuentras un comportamiento inconsistente en alguna plataforma (por ejemplo, falla al analizar
jqo restricciones dedate), puedes informar del problema en el repositorio de GitHub. - Consideraciones de idioma: Aunque AI HOT se enfoca en contenido en chino, los datos subyacentes (como
title_en,sourceUrl) pueden contener caracteres no chinos (inglés, japonés, etc.). Cuando el usuario pregunte en un idioma distinto al chino, el Skill puede intentar devolver el campotitle_encorrespondiente (si existe), o simplemente devolver el contenido en chino. No realices una traducción automática al idioma del usuario, a menos que el usuario lo solicite explícitamente.