Skills 实战:Unsplash → COS 自动化配图

前置条件:本机已安装 OpenCode;已开通腾讯云 COS 并建好存储桶;本机可用 npx(用于启动 cos-mcp)。

最近有一项比较重复的任务:找素材图片并上传到腾讯云 COS。图片需求量大,且会持续一段时间,所以想优化工作流。

打算在 OpenCode 里写一个 Skill:自动找图片链接、下载到本地、上传到 COS,最后把可访问的图片链接写回 Markdown。

MCP

腾讯官方 MCP:cos-mcp,用于上传图片。接入方式为本地子进程 stdio(配置里对应 type: "local"),示例命令如下。

路径:~/.config/opencode/opencode.json

▼
json
复制代码
{ "$schema": "https://opencode.ai/config.json", "mcp": { "cos-mcp": { "type": "local", "command": ["npx", "-y", "cos-mcp", "--Region=<地区>", "--Bucket=<bucket>", "--SecretId=<secretId>", "--SecretKey=<secretKey>", "--DatasetName=yourDatasetname"], "enabled": true } } }

将 region、bucket、secretId、secretKey 等换成你自己的值。请勿把真实密钥写进会被提交的仓库或公开发布的文章里。

如何拿到 COS 相关配置

以下假设你已经创建过对象存储桶。

1. 桶与地域、访问域名

打开 COS 控制台 - 存储桶列表。

image.png

记下 region、bucket,以及控制台里显示的访问域名(形如 https://xxx-xxx.cos.ap-xxx.myqcloud.com)。后续上传路径与域名组合即可得到图片 URL;把桶名、地域、域名等信息提供给 Agent,由 Skill / MCP 侧处理即可,无需在文章里手工推导整条 URL。

2. secretId、secretKey

在 访问管理 - 访问密钥 创建并查看 secretId、secretKey。注意 secretKey 仅在创建时完整可见,其他时间不可见;若遗失只能删除该密钥后重新创建。

image.png

图片源

图源使用 Unsplash:注册账号 → 创建 Application → 拿到 Access Key。

1. 注册账号(已有账号可跳过)

image.png

2. 创建 Application

登录后打开 新建 Application。

image.png

填写 Application Name、Description,例如:

▼
text
复制代码
Application Name:Photo Gallery App Description:A web application that helps users discover and curate high-quality images from Unsplash. The app allows users to search for images by keywords, create collections, and download their favorite photos for personal and commercial projects.

选择 Create application:

image.png

3. 获取 Access Key

image.png

4. 验证 Access Key

使用 curl 测试:

▼
curl
复制代码
curl -s "https://api.unsplash.com/search/photos?query=ai&client_id={Access Key}"

image.png

若返回类似下图,一般表示 Access Key 配置有误或权限异常:

image.png

Skills 编写

完整 SKILL.md 示例与说明可参考:codecopy 原文。落地时通常需要做到:

  • 用 Unsplash 搜索接口按关键词取图,并控制条数;
  • 下载到本地临时路径后,通过 cos-mcp 上传到指定前缀/目录;
  • 用控制台提供的域名(或自定义域名)生成最终图片 URL,写回目标 Markdown。

把 codecopy 里面的 Skill 里占位内容换成你自己的:域名(文中写「换成自己的域名」需要进行替换);Access Key(与 Unsplash 控制台一致)。

▼
bash
复制代码
curl -s "https://api.unsplash.com/search/photos?query={query}&client_id={Access key}&per_page={count}"

在 OpenCode 中新建 Skill,按向导写入后,路径一般为 ~/.config/opencode/skills/<名称>/SKILL.md。

创建时可用的 prompt 示例:

▼
text
复制代码
帮我创建 skills 具体要求如下:{这里写上面的 skill.md 的完整内容}

跑通后,目标 Markdown 里应出现可浏览器打开的 COS 图片链接。若上传失败,先核对桶权限、地域与密钥;若搜图失败或返回异常,检查 Unsplash Access Key 与接口配额(例如 429)。

测试

这里我们使用 OpenCode 进行测试,测试的 prompt 如下:

▼
text
复制代码
/download-image-from-unsplash 帮我找到鱼皮相关的图片

注意:这个 /download-image-from-unsplash 每一个人可能不一样,需要看看自己的叫什么 image.png

结果如下:

image.png

生成的 md :

image.png

相关专栏

0个评论
点击登录,快来和大家讨论吧~
表情
图片
暂无评论
leikooo
作者分享
提到用 Rust 重写项目,很多人的第一反应往往是性能提升。以 Bun 为例,它最初主要采用 Zig 开发,后来在 2026 年发布的 v1.4 版本中将核心代码迁移到了 Rust。用 Rust 重写,性能、安全性往往是大家想要的,但是有没有想过用 Rust 重写还能发现 bug 呢? pgrust 这个项就是,他用 Rust 重新实现 PostgreSQL,保持通信协议和 SQL 方言兼容。为了确认新系统的行为和原版一致,开发者需要对着 PostgreSQL 的实际返回逐个比对。结果查着查着,有些异常不是新代码的锅,PostgreSQL 自己就是这样的。pgrust 开发者 Michael Malis 把其中几个报告给了 PostgreSQL 社区。 大概的问题: 1)SP-GiST 空间索引里有个函数判断点的方位,代码认为上、下、同一水平线三种情况已经穷尽了,末尾放了句「impossible case」兜底。结果在特定浮点边界附近,三种判断同时不成立,程序真走进了这个「不可能」的分支 2)日期格式缓存复用时,一个解析模式的标记没重置,导致同一条 JSONPath 查询在同一个会话里,换个执行顺序结果就不一样。 3)pgcrypto 的 crypt() 在某些输入下截断了多字节字符,返回的文本编码不合法。能存进去,但 pg_dump 导出时就炸了。 一个用 Rust 重写的新项目,测着测着,把运行了几十年的 PostgreSQL 里埋着的东西翻了出来。Rust 重写的价值,不一定只在跑得更快、更安全这一件事上。为了做到真正的兼容,开发者得把前人没怎么碰过的边界全走一遍,这个过程本身就在帮原版排雷。
4
ARTS 1025: 唯一字符与同构字符串、省词可能增加阅读负担与重新估算软件的实现成本
5
🎉 1024 程序员节快乐! 祝编程导航里的每一位程序员:offer 多多,薪资翻倍,面试顺利,早日拿下心仪 offer!💻
17
AST:从 Java 代码理解抽象语法树
5
原来维基百科还有专门研究「AI 味」的页面 今天偶然发现一个挺有意思的维基百科页面:https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing,专门整理 AI 写作的典型特征。 里面总结了很多我们平时经常看到的 AI 味,比如喜欢用“值得注意的是”“在当今快速发展的时代”“综上所述”,还有过度使用排比、加粗、列表,以及一些看起来很有道理,实际上没什么信息量的表达。 感觉以后可以定期翻翻这个 wiki,尤其是经常使用 AI 辅助写作的人,应该能从中发现不少所谓的 AI 味。 链接: https://en.wikipedia.org/wiki/Wikipedia:Signs_of_AI_writing
5
下载 APP