---
name: media-tools
description: "轻量级媒体工具集：GIF 搜索 (Tenor API)、音频频谱可视化 (songsee)。"
version: 1.0.0
author: Hermes Curator (consolidated)
license: MIT
platforms: [linux, macos, windows]
metadata:
  hermes:
    tags: [media, GIF, audio, spectrogram, Tenor, songsee, tools]
    absorbed_from: [gif-search, songsee]
---

# 媒体工具集 (Media Tools)

轻量级媒体处理工具。用于快速搜索/下载 GIF 和生成音频频谱图。

---

## 工具 1: GIF 搜索 (Tenor API)

搜索和下载 GIF，通过 Tenor API + curl。无需额外工具。

### 前置条件

```bash
# 在 ~/.hermes/.env 中设置
TENOR_API_KEY=your_key_here
```

免费 API key: https://developers.google.com/tenor/guides/quickstart

### 搜索 GIF

```bash
curl -s "https://tenor.googleapis.com/v2/search?q=thumbs+up&limit=5&key=${TENOR_API_KEY}" | jq -r '.results[].media_formats.gif.url'
```

### 下载 GIF

```bash
URL=$(curl -s "https://tenor.googleapis.com/v2/search?q=celebration&limit=1&key=${TENOR_API_KEY}" | jq -r '.results[0].media_formats.gif.url')
curl -sL "$URL" -o celebration.gif
```

### API 参数

| 参数 | 说明 |
|------|------|
| `q` | 搜索关键词 (空格用 `+` 替代) |
| `limit` | 最大结果数 (1-50, 默认 20) |
| `key` | API key |
| `media_filter` | 格式过滤: `gif`, `tinygif`, `mp4`, `tinymp4`, `webm` |
| `contentfilter` | 安全过滤: `off`, `low`, `medium`, `high` |

### 可用格式

`gif`, `tinygif`, `mp4`, `tinymp4`, `webm`, `nanogif`

---

## 工具 2: 音频频谱图 (songsee)

从音频文件生成频谱图和多种音频特征可视化。

### 安装

```bash
go install github.com/steipete/songsee/cmd/songsee@latest
```

### 基础用法

```bash
songsee track.mp3                              # 基础频谱图
songsee track.mp3 -o spectrogram.png           # 保存到文件
songsee track.mp3 --start 12.5 --duration 8    # 时间切片
```

### 多面板可视化

```bash
songsee track.mp3 --viz spectrogram,mel,chroma,hpss,selfsim,loudness,tempogram,mfcc,flux
```

### 可视化类型

| 类型 | 说明 |
|------|------|
| `spectrogram` | 标准频谱图 |
| `mel` | Mel 刻度频谱图 |
| `chroma` | 音高类别分布 |
| `hpss` | 谐波/打击乐分离 |
| `selfsim` | 自相似矩阵 |
| `loudness` | 响度时间线 |
| `tempogram` | 节拍估计 |
| `mfcc` | MFCC 系数 |
| `flux` | 频谱通量 (起始检测) |

### 常用参数

| 参数 | 说明 |
|------|------|
| `--viz` | 可视化类型 (逗号分隔) |
| `--style` | 色彩方案: `classic`, `magma`, `inferno`, `viridis`, `gray` |
| `--width/--height` | 输出尺寸 |
| `--start/--duration` | 时间切片 |
| `--format` | 输出格式: `jpg` 或 `png` |
| `-o` | 输出文件路径 |
