mcpField
P
pexels-media

pexels-media

github.com/troykelly创意与媒体12301 次安装41 周前更新
代码仓库

关于 pexels-media

用于从 Pexels 获取免版税图片和视频的技能,适合设计与内容制作。它介绍如何通过 Pexels API 搜索、筛选和下载媒体,并为下载文件创建元数据旁置文件。

主要功能

  1. 01搜索图片和视频
  2. 02按方向、尺寸和颜色筛选
  3. 03浏览精选媒体与合集
  4. 04按 ID 获取媒体
  5. 05为下载文件创建元数据旁置文件

适用场景

  1. 01为 UI 设计查找占位图片
  2. 02寻找主视觉背景视频
  3. 03搜索产品摄影背景素材

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/troykelly/claude-skills --skill pexels-media

安装后在 Claude Code 中输入/pexels-media确认已加载。

详细介绍

Pexels 媒体素材获取

从 Pexels 获取高质量、免版税的图片和视频,用于设计、占位图或内容创作。

前提条件

此技能要求设置 PEXELS_API_KEY 环境变量。

# Check if API key is available
echo $PEXELS_API_KEY

如果尚未设置,请从 Pexels API 获取免费的 API 密钥。

API 基础 URL

  • 图片:https://api.pexels.com/v1/
  • 视频:https://api.pexels.com/videos/

身份验证

所有请求都需要 Authorization 标头:

curl -H "Authorization: $PEXELS_API_KEY" "https://api.pexels.com/v1/search?query=nature"

图片端点

搜索图片
curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/search?query=QUERY&orientation=ORIENTATION&size=SIZE&color=COLOR&locale=LOCALE&page=PAGE&per_page=PER_PAGE"

参数:

参数必填可选值
query是搜索词
orientation否landscape、portrait、square
size否large(24MP)、medium(12MP)、small(4MP)
color否red、orange、yellow、green、turquoise、blue、violet、pink、brown、black、gray、white 或十六进制代码(例如 #ffffff)
locale否en-US、pt-BR、es-ES、de-DE、fr-FR、ja-JP、zh-CN、ko-KR 等
page否页码(默认值:1)
per_page否每页结果数(默认值:15,最大值:80)
精选图片

由 Pexels 团队精选的热门图片(每小时更新):

curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/curated?page=1&per_page=15"
按 ID 获取图片
curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/photos/PHOTO_ID"

视频端点

搜索视频
curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/videos/search?query=QUERY&orientation=ORIENTATION&size=SIZE&min_width=MIN_WIDTH&min_height=MIN_HEIGHT&min_duration=MIN_DURATION&max_duration=MAX_DURATION&page=PAGE&per_page=PER_PAGE"

其他视频参数:

参数描述
min_width最小宽度(像素)
min_height最小高度(像素)
min_duration最短时长(秒)
max_duration最长时长(秒)
热门视频
curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/videos/popular?min_width=1920&min_duration=10&max_duration=60&page=1&per_page=15"
按 ID 获取视频
curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/videos/videos/VIDEO_ID"

合集

精选合集
curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/collections/featured?page=1&per_page=15"
合集媒体
curl -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/collections/COLLECTION_ID?type=TYPE&page=1&per_page=15"

类型参数: photos、videos,或省略以获取两者。

可用图片尺寸

下载图片时,API 响应中提供以下尺寸:

键描述
original摄影师上传的原始尺寸
large2x宽度 940px,高度加倍
large宽度 940px
medium高度 350px
small高度 130px
portrait宽度 800px,高度 1200px
landscape宽度 1200px,高度 627px
tiny宽度 280px,高度 200px

可用视频文件

响应中包含多个不同画质的视频文件:

画质常见分辨率
hd1280x720
sd640x360
hls自适应流媒体
不同规格可提供时为 Full HD、4K

强制要求:附属元数据文件

重要要求: 每个已下载文件都必须创建一个附属元数据文件。

附属文件命名

对于下载的文件 mountain-sunset.jpg,创建 mountain-sunset.jpg.meta.json。

图片附属文件内容
{
  "source": "pexels",
  "type": "photo",
  "id": 12345,
  "url": "https://www.pexels.com/photo/12345/",
  "download_url": "https://images.pexels.com/photos/12345/pexels-photo-12345.jpeg",
  "downloaded_size": "large",
  "width": 1920,
  "height": 1080,
  "photographer": "John Doe",
  "photographer_url": "https://www.pexels.com/@johndoe",
  "photographer_id": 67890,
  "avg_color": "#7E5835",
  "alt": "Brown mountain during sunset",
  "license": "Pexels License - Free for personal and commercial use",
  "attribution": "Photo by John Doe on Pexels",
  "attribution_html": "<a href=\"https://www.pexels.com/photo/12345/\">Photo</a> by <a href=\"https://www.pexels.com/@johndoe\">John Doe</a> on <a href=\"https://www.pexels.com\">Pexels</a>",
  "downloaded_at": "2025-12-02T14:30:00Z",
  "api_response": {
    // Full original API response for this photo
  }
}
视频附属文件内容
{
  "source": "pexels",
  "type": "video",
  "id": 12345,
  "url": "https://www.pexels.com/video/12345/",
  "download_url": "https://videos.pexels.com/video-files/12345/...",
  "downloaded_quality": "hd",
  "width": 1920,
  "height": 1080,
  "duration": 30,
  "user": {
    "id": 67890,
    "name": "John Doe",
    "url": "https://www.pexels.com/@johndoe"
  },
  "video_files": [
    {
      "id": 1,
      "quality": "hd",
      "file_type": "video/mp4",
      "width": 1920,
      "height": 1080,
      "link": "https://..."
    }
  ],
  "video_pictures": [
    {
      "id": 1,
      "picture": "https://...",
      "nr": 0
    }
  ],
  "license": "Pexels License - Free for personal and commercial use",
  "attribution": "Video by John Doe on Pexels",
  "downloaded_at": "2025-12-02T14:30:00Z",
  "api_response": {
    // Full original API response for this video
  }
}

下载工作流

1. 搜索并选择
# Search for photos
RESPONSE=$(curl -s -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/search?query=office+workspace&orientation=landscape&per_page=5")

# Parse and display results
echo "$RESPONSE" | jq '.photos[] | {id, photographer, alt, url: .src.large}'
2. 下载并创建附属文件
# Get photo details
PHOTO_ID=12345
PHOTO_DATA=$(curl -s -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/photos/$PHOTO_ID")

# Extract download URL (choose size)
DOWNLOAD_URL=$(echo "$PHOTO_DATA" | jq -r '.src.large')
FILENAME="pexels-$PHOTO_ID-large.jpg"

# Download the image
curl -L -o "$FILENAME" "$DOWNLOAD_URL"

# Create sidecar metadata (MANDATORY)
echo "$PHOTO_DATA" | jq '{
  source: "pexels",
  type: "photo",
  id: .id,
  url: .url,
  download_url: .src.large,
  downloaded_size: "large",
  width: .width,
  height: .height,
  photographer: .photographer,
  photographer_url: .photographer_url,
  photographer_id: .photographer_id,
  avg_color: .avg_color,
  alt: .alt,
  license: "Pexels License - Free for personal and commercial use",
  attribution: ("Photo by " + .photographer + " on Pexels"),
  downloaded_at: (now | todate),
  api_response: .
}' > "$FILENAME.meta.json"

速率限制

  • 默认值: 每小时 200 次请求,每月 20,000 次请求
  • 检查响应标头以查看当前限制:
    • X-Ratelimit-Limit
    • X-Ratelimit-Remaining
    • X-Ratelimit-Reset

署名最佳实践

虽然 Pexels 许可协议未要求署名,但建议注明来源:

  • 简洁格式:“Photo by [Photographer] on Pexels”
  • 含链接:“Photo by Photographer on Pexels”
  • **HTML:**使用附属文件中的 attribution_html

使用案例

UI 设计占位图
# Get 5 abstract/minimal images for placeholders
curl -s -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/search?query=minimal+abstract&orientation=square&size=small&per_page=5"
主视觉背景视频
# Find short, wide landscape videos
curl -s -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/videos/search?query=nature+aerial&orientation=landscape&min_width=1920&min_duration=5&max_duration=15"
产品摄影背景
# Search for clean, neutral backgrounds
curl -s -H "Authorization: $PEXELS_API_KEY" \
  "https://api.pexels.com/v1/search?query=white+background+texture&color=white&size=large"

检查清单

使用此技能时:

  • 确认已设置 PEXELS_API_KEY
  • 选择合适的端点(搜索、精选、热门、合集)
  • 应用相关筛选条件(方向、尺寸、颜色、时长)
  • 根据使用场景选择合适的分辨率
  • 将文件下载到合适的位置
  • 创建附属元数据文件(强制要求)
  • 考虑在最终使用时注明来源

References

评论

支持 Markdown