跳到主要内容
知仓学习社ZHICANG

web-media-getter

One query across free image / video / GIF APIs (stock + historical/archival + GIF engines), returning normalized, license-tagged results with option…

读凭据严重 4 · 高危 0sickn33/agentic-awesome-skills

它会碰到什么

扫了多少1 个文本文件,6 KB
它会碰到什么读凭据
命中总数4 处
命中统计严重 4 · 高 0 · 中 0 · 低 0
逐条看命中(4 条严重或高危)
  • 严重 SKILL.md:38cred-paths
    in `central/.env` (optional — the 5 no-key sources work without them).
  • 严重 SKILL.md:55cred-paths
    in `central/.env`. (tenor adapter removed — Google EOL'd the API 2026-06-30.)
  • 严重 SKILL.md:97cred-paths
    `license`/`user` for attribution. Key: `FREESOUND_API_KEY` in `central/.env`
  • 严重 SKILL.md:102cred-paths
    from `.env` (ignores a local `lm-studio` stub env var). Pads sub-2s clips so the

这一栏是扫描器报的事实,不是结论。命中多不等于有毒(安全工具、规则库、示例脚本本来就会包含危险写法),命中少也不等于干净。它和你手上的凭据、文件、网络有什么关系,需要你自己看。

技能内容

When to Use

Use when a task needs a REAL or ARCHIVAL photo / clip (hero, texture, reference, historical footage) or a reaction / animated GIF, rather than a generated one — fan out across free image/video/GIF sources in one query and download license-tagged results.

_Source: connerkward/web-media-getter-skill (MIT)._

web-media

Query many free image/video sources in one fan-out, get a normalized result list,

optionally download top-K with an attribution sidecar. Zero-dep stdlib script.

Script: webmedia.py (in this dir). Keys: PEXELS_API_KEY, PIXABAY_API_KEY

in central/.env (optional — the 5 no-key sources work without them).

Sources

| Source | Key? | Best for | Media |

|--------|------|----------|-------|

| openverse | none | CC web images (Flickr, museums) | image |

| wikimedia | none | factual / historical / landmark photos | image |

| internetarchive | none | historical/archival images + films | image, video |

| loc | none | historical US prints/photos | image |

| nasa | none | space imagery + video | image, video |

| pexels | free key | modern stock photos + short video clips | image, video |

| pixabay | free key | modern photos/illustrations + short clips | image, video |

| klipy | free key | GIFs — recommended (free, unlimited, Tenor drop-in) | gif |

| giphy | free key | GIFs — biggest library (prod key needs approval) | gif |

GIF sources fire only with --type gif. Keys: KLIPY_API_KEY, GIPHY_API_KEY

in central/.env. (tenor adapter removed — Google EOL'd the API 2026-06-30.)

klipy is the one to get (free + unlimited);

its adapter is unverified — assumes Tenor-compatible request/response;

verify against docs.klipy.com when you key it. webmedia.py "shrug" --type gif --count 6 --json

Usage

webmedia.py "1950s street scene" --type image --count 8 --json
webmedia.py "rocket launch" --type video --source nasa,internetarchive
webmedia.py "car factory 1930s" --source all --download --out /tmp/cars
  • --source all (default) | nokey (no-key only) | comma list (wikimedia,pexels)
  • --type image|video · --count N · --json · --download --out DIR
  • --download fetches each result's direct media URL and writes attribution.json

(source, author, license, url, page_url) alongside the files.

Record schema

{source, title, url, thumb, dl, page_url, author, license, w, h, type}

dl is the directly-downloadable media URL (None when only a page exists).

The video caveat (important)

Archival sources (Internet Archive, Europeana, LoC) host whole films/documentaries,

not single shots. So:

  • Modern single clippexels / pixabay (born as short clips, direct MP4). Done.
  • Historical single shot → retrieve the IA film here, then extract the shot:
  • Twelve Labs Marengo search (free 600 min) — pass the IA public MP4 URL, get a

timestamped moment for "car on assembly line", clip with ffmpeg. Semantic, cheap.

  • or PySceneDetect (free, local) to cut the film into shots, then rank keyframes

with CLIP via the muser skill. Fully offline.

Audio: freesound + audio QA

webmedia.py is image/video. For sound effects (real, CC-licensed) and for

judging audio (since Claude can't hear), two sibling scripts live in

central/scripts/:

  • freesound-fetch.py "<query>" [count] [max_sec] [out_dir] — searches freesound.org

and downloads short hq-mp3 previews. Prints one JSON line per file with

license/user for attribution. Key: FREESOUND_API_KEY in central/.env

(token-based read; full originals would need OAuth — previews suffice for SFX).

  • audio-judge.py <file> "<target>" — sends the clip to OpenAI gpt-audio

(audio-native) and returns JSON {heard, score, matches, suggestion}, enabling a

generate/fetch → judge → iterate loop. Auto-sources a real sk- OPENAI_API_KEY

from .env (ignores a local lm-studio stub env var). Pads sub-2s clips so the

speech-tuned model doesn't refuse. Caveat: it reliably describes audio and

filters obvious mismatches, but it is NOT a trustworthy judge of subjective qualities

like "grating" — it labels nearly any beep "sharp/high-pitched". Use it to cull, not

to make the final aesthetic call; confirm by ear.

Where this fits

This is the internet-retrieval capability — peer to muser (local semantic search)

and fal (generate). A future media router would fan out across all three and rank

candidates by relevance (CLIP), handing aesthetic spreads to lookdev. Don't build that

router until the model demonstrably mis-routes without it.

Limitations

  • Results depend on third-party API availability, quotas, credentials, and license metadata quality.
  • License tags and attribution fields must still be reviewed before commercial or public use.
  • Relevance ranking can find plausible assets, but final aesthetic fit, brand safety, and audio suitability require human inspection.

想直接用这个技能?

本站把开放许可(MIT / Apache 等)的技能按仓库打包整理到网盘,点一下转存到你自己的网盘,不用一个个从 GitHub 拉。许可未声明的技能只给原始仓库链接,不打包。

同名技能的其他版本

有 3 个不同仓库或目录里都有叫 web-media-getter 的技能。它们内容并不相同,别混用: