encontrar-imágenes: buscar, seleccionar, descargar y acreditar imágenes
El script es scripts/imgs.py en el directorio de esta habilidad. En los comandos siguientes, reemplace <dir-habilidad> con la ruta completa del directorio que contiene este SKILL.md (por ejemplo C:/Users/<nombre>/.claude/skills/find-images).
Las claves provienen de variables de entorno o de ~/.config/image-search/keys.env (SERPER_API_KEY, PIXABAY_API_KEY, opcional EXA_API_KEY). El script las lee por sí mismo: nunca las imprima ni las busque en ningún otro lugar. Si falta una clave, el script indica qué fuente omitió; continúe con las otras fuentes e indique al usuario que configure la clave como se describe en el README.md de esta habilidad.
Los mensajes del script, las etiquetas de las hojas y credits.md siguen el idioma del sistema (chino o inglés); FIND_IMAGES_LANG=zh|en lo anula.
La salida va a images/ en el proyecto actual: _work/<tag>/ contiene los candidatos y las hojas de contacto, assets/ las imágenes seleccionadas, manifest.json el registro de origen de cada imagen y credits.md la página de créditos.
Primero decida si la diapositiva necesita una imagen encontrada
| Contenido | Qué hacer |
|---|---|
| Datos, comparaciones, tendencias | No busque; use gráficos nativos de pptx o matplotlib |
| Procesos, estructuras, relaciones | No busque; dibuje con formas o SVG |
| Conceptos, ilustración abstracta | Pruebe primero con iconos (icons); en Codex también puede generar una con imagegen |
| Productos, lugares, personas, eventos, organizaciones específicos | Use esta habilidad para encontrar fotos reales |
| Imágenes de ambiente, fondos de portada | Use esta habilidad con Pixabay o Commons como fuente |
Selección de fuentes
Fuente (src / mode) | Adecuada para | Idioma de consulta | Licencia |
|---|---|---|---|
web (Serper, es decir, Google Images) | Productos específicos, eventos de noticias, personas, temas en chino | Cualquiera. Para temas en chino, agregar 官方图 (imagen oficial), 高清 (HD) o 新闻图 (foto de noticias) ayuda | Derechos desconocidos: solo presentaciones internas y trabajos de curso, citando la fuente |
commons (Wikimedia Commons) | Monumentos, ciudades, arquitectura, historia, ciencia, figuras públicas, logotipos de organizaciones | Solo inglés, 2–4 palabras (las consultas en chino casi no devuelven nada) | CC0 es de uso libre; CC BY / BY-SA requieren atribución |
pixabay | Imágenes de ambiente y escenas genéricas (oficina, trabajo en equipo, ciudad, naturaleza, industria) | Chino o inglés | Uso libre, atribución opcional; máx. 1280px |
mode: site (página oficial) | Imágenes oficiales de una página de producto o empresa | Proporcione la URL de la página | Imagen del sitio oficial; cite la fuente |
mode: icons (Iconify) | Iconos de conjuntos de código abierto (MIT, Apache, …) | Solo inglés, 1–2 palabras (drone, battery). Con menos de 6 resultados, el script también busca cada palabra por separado | Los conjuntos predeterminados son de uso libre sin atribución; color se aplica tanto a SVG como a PNG |
Para un tema específico, use src web o web,commons. Cuando las imágenes deben ser de uso libre, use commons,pixabay y omita web.
Flujo de trabajo
1. Escriba el plan de imágenes (plan.json, UTF-8)
Un elemento por diapositiva; nombre cada tag según el número de diapositiva y el propósito:
[
{"tag": "s01_portada", "q": "barco portavehículos en puerto", "q_en": "car carrier ship",
"src": "commons,pixabay", "orient": "apaisado", "min_side": 1600, "n": 12},
{"tag": "s04_producto", "q": "比亚迪 海豹07 官方图", "src": "web", "orient": "apaisado", "min_side": 1200, "n": 9},
{"tag": "s05_oficial", "mode": "site", "url": "https://www.byd.com/cn/", "n": 9},
{"tag": "s07_icono", "mode": "icons", "q": "battery", "color": "#1F4E79", "n": 16}
]
q: consulta principal, utilizada porwebypixabay. Puede estar en chino para temas chinos, como ens04_producto.q_en: consulta en inglés utilizada porcommons; por defecto esq.orient:apaisado/retrato/cuadrado/cualquiera.min_side: longitud mínima del lado largo en píxeles. Fondo de pantalla completa 1600, media diapositiva 1000, ilustración pequeña 600. La API gratuita de Pixabay sirve como máximo 1280px, por lo que el script reduce el requisito a 1280 para Pixabay. Esto es suficiente para un fondo de pantalla completa en un proyector o monitor normal, ligeramente suave en una pantalla 4K. Si una imagen a pantalla completa debe ser muy nítida, prefiera los candidatos de Commons.n: número de candidatos en la hoja, 16 como máximo.
2. Buscar y construir hojas de contacto
python <dir-habilidad>/scripts/imgs.py search --plan plan.json --out images
También funcionan elementos individuales: search --tag s04_producto --q "..." --src web, o site --tag .. --url .., icons --tag .. --q ...
Si los argumentos no ASCII se muestran distorsionados en el shell (por ejemplo, chino en Git Bash en Windows), colóquelos en plan.json en su lugar.
Cada elemento produce una hoja de contacto numerada images/_work/<tag>/sheet.jpg y una lista de texto con una línea por candidato (tamaño, dominio de origen, licencia).
Buscar el mismo tag nuevamente sobrescribe sus candidatos y números, así que seleccione de una hoja antes de buscar ese tag de nuevo.
3. Mire la hoja y elija
- Abra la imagen de la hoja: Read en Claude Code, view_image en Codex. Una hoja cuesta aproximadamente 1600 tokens. No abra los candidatos uno por uno.
- Verifique que el sujeto sea correcto (modelo, lugar), la composición deje espacio para el texto, no haya marca de agua ni bloque grande de texto, el estilo coincida con el resto de la presentación y la resolución sea suficiente.
- Si nada encaja, busque de nuevo. Después de la primera búsqueda, vuelva a buscar como máximo dos veces, cada vez desde un ángulo diferente en lugar de con sinónimos: un tema más específico o más amplio, otra fuente o el otro idioma. Si aún así falla, recurra a iconos o un diseño solo de texto, o informe al usuario.
- Cuando el ajuste temático y la licencia entren en conflicto: si la solicitud indica que se prefieren imágenes de uso libre, busque primero
commons,pixabay; si al volver a buscar aún no encuentra nada sobre el tema, use una imagen deweby etiquétela como "derechos desconocidos" en su informe. Si la solicitud indica que las imágenes deben ser de uso libre o se publicarán, nunca useweb; recurra en su lugar. - Las etiquetas de la hoja muestran tamaño, licencia (Commons muestra la licencia exacta, por ejemplo CC BY-SA 4.0) y dominio de origen; la lista de texto muestra la misma información.
4. Descargue las imágenes seleccionadas
python <dir-habilidad>/scripts/imgs.py pick --tag s04_producto --ids 6 --out images
El script descarga la imagen original (Commons a través de su miniatura estándar de 1920px; los lados largos de más de 2560px se reducen; webp/avif se convierten a jpg/png) y la registra en manifest.json.
Si pick informa una descarga degradada ("degraded": true en el manifiesto: la protección de enlace directo bloqueó el original y solo llegó una miniatura), elija otro candidato.
5. Inserte las imágenes y construya la página de créditos
- Al insertar, guíese por
file,widthyheightenmanifest.json; recorte para ajustarse al diseño y nunca estire. Los iconos vienen tanto en PNG como en SVG (el camposvg). - Ejecute
credits --out imagespara escribircredits.mdy coloque su sección de créditos de diapositiva en la última diapositiva (fuentes). Si tiene una sección de notas, transmítala al usuario. - Cuando toda la presentación esté terminada, renderícela y verifique las capturas de pantalla como de costumbre. Esa es la única vez que el agente principal necesita mirar las imágenes.
Ahorro de contexto: entregue tres o más imágenes a un subagente
El agente principal solo escribe plan.json y lee el manifiesto. Ver las hojas, elegir y descargar pasan a un subagente, por lo que las imágenes candidatas nunca entran en el contexto principal. Plantilla de prompt para subagente:
Lea <dir-habilidad>/SKILL.md y sígalo para encontrar imágenes para la presentación en <ruta del proyecto>.
Plan de imágenes: <ruta a plan.json> (tag, propósito y contexto de la diapositiva para cada elemento a continuación).
<Para cada elemento: qué dice la diapositiva, dónde va la imagen, apaisado o retrato, estilo>
Para cada elemento, mire la hoja una vez y elija 1 imagen (como máximo 1 de respaldo); seleccione en <proyecto>/images. Si nada encaja, vuelva a buscar con diferentes palabras, como máximo dos rondas más.
Devuelva para cada tag: el id elegido, ruta de archivo, tamaño, clase de licencia y una razón de una línea; enumere los tags sin imagen adecuada y por qué. No devuelva las imágenes en sí.
Reglas de licencia
- Uso libre (CC0, Pixabay, iconos de código abierto): cualquier uso. Acreditar imágenes CC0 y Pixabay es un cortesía, no un requisito.
- Atribución requerida (CC BY / BY-SA): acredite al autor y la licencia en la diapositiva de fuentes. Una imagen BY-SA modificada debe compartirse bajo la misma licencia.
- Oficial / derechos desconocidos (
site,web): solo presentaciones internas, trabajos de curso y charlas académicas, citando la fuente. Antes de publicar o usar comercialmente cualquier cosa, informe al usuario y reemplácelas con imágenes de uso libre. - Fotos de personas: las figuras públicas en un contexto de noticias están bien; no use fotos de personas privadas como decoración.
Cuotas y límites
- Serper: 2500 consultas gratuitas al registrarse. Una búsqueda de 20 resultados (cuando
n> 6) cuesta 2 consultas, 10 resultados cuestan 1. Después de eso, recarga, desde $50 por 50,000 consultas, y las recargas caducan después de 6 meses. El saldo restante está en el panel de serper.dev. - Pixabay: 100 solicitudes por minuto; las imágenes no deben tener enlace directo (el script las descarga).
- Commons: solo se pueden obtener anchos de miniatura estándar (960/1280/1920/3840); busque en inglés.
- Iconify: gratuito, sin clave. Convertir SVG a PNG necesita Node.js con sharp. Si falta, el script lo indica; use otro enfoque, o pida al usuario que ejecute
npm install -g sharp. - Exa: se usa solo cuando el modo
siteno puede encontrar imágenes en la página misma; usa créditos de Exa.