Install
openclaw skills install @thcjp/photo-caption-2openclaw skills install @thcjp/photo-caption-2核心功能: 本技能提供化流程等能力。
核心功能: 本技能提供自动化配置和灵活的参数设置、时使用、、工作流优化时使用、处理、工作流优化时使用等能力。
当用户分享一张照片并附带拍摄背景(地点、机身、镜头、胶片型号、主体、氛围、拍摄意图),为下方所有平台一次性生成差异化配文。每个平台独立成段,语调与格式贴合该社区的真实习惯,禁止跨平台复制同一句话. 若用户给出器材信息(机身、镜头、胶片、数码参数),在合适的平台自然嵌入;不要凭空编造用户没提供的器材细节.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | 多平台摄影配文处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
| 能力 | 免费版 | 付费版 |
|---|---|---|
| 基础功能 | 支持 | 支持 |
| 多平台摄影配文为摄影作品生成 | 不支持 | 支持 |
| 复杂工作流可视化编排 | 不支持 | 支持 |
| 条件分支与异常重试 | 不支持 | 支持 |
| 定时触发与事件驱动 | 不支持 | 支持 |
| 执行日志与审计追踪 | 不支持 | 支持 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| LLM API | API | 必需 | 由Agent内置LLM提供 |
需要配置对应API Key,详见上文环境配置章节
API Key配置方式:
export API_KEY="${API_KEY:?请设置环境变量}"
配置后需重启会话或开启新终端生效。API Key应妥善保管,避免泄露到版本控制系统.
详细的输入输出格式请参考下方章节说明。
摄影师在个人作品集发布后,希望同步到 Instagram、Flickr、500px、Reddit 等多个社区。每个社区的受众期待不同:Instagram 重氛围与标签,Flickr 重故事与工艺,500px 重技术细节,Reddit 重真实不卖弄。一次输入照片背景,输出 12 套配文,省去逐平台改写的体力活.
胶片摄影师经常在 r/analog、Glass、VSCO、Tumblr 之间循环发布。胶片社区对器材叙事有强期待(机身、胶片型号、冲洗方式),但对营销话术极度敏感。本 Skill 内置胶片向语调,自动把"Pentax K1000 · Kodak Tri-X 400 · D-76 自冲"这类信息放在合适的位置,而不是塞进每一行.
婚礼、品牌、人像摄影师向客户交付成片时,常需要附带可发布的配文草稿。客户不一定懂摄影术语,配文需要褪掉器材黑话,保留情绪与故事。本 Skill 可针对 Facebook、Substack、Pinterest 这类面向大众的通道输出更口语化、更叙事化的版本.
新闻、纪实、报道摄影师在社交媒体发短帖后,常需要把同一组影像延伸为 Substack 长文中的图注。Substack 读者期待散文式叙述,而非社交帖。本 Skill 单独为 Substack 输出杂志式图注,配合地点、当时情形、按下快门的理由,让图注能独立承担长文中的停顿.
#filmphotography)、地点、胶片或器材、一个氛围/风格标签。质量优先于数量.#film photography 而非 #filmphotography。8-12 个.Topic: [建议].Bombay Beach [Canon EOS 1V, Tri-X 400]。纯事实,标题里不放戏剧化形容词,不放诱饵措辞.[主体/氛围] — [地点] 或 [风格] [主体], [地点].输入背景:地点 Amboy, California;机身 Canon EOS 1V;胶片 Kodak Portra 400;主体 66 号公路旁废弃加油站;氛围 黄昏将至的安静. Instagram 输出:
Amboy 加油站在黄昏前彻底安静下来,66 号公路上的车声也退到远处.
# ...
Canon EOS 1V · Kodak Portra 400
# ...
#filmphotography #route66 #mohavedesert #portra400 #americana
Reddit 输出:
标题: Abandoned gas station off Route 66, Amboy CA [Canon EOS 1V, Portra 400]
# ...
评论: 在 Amboy 停了二十分钟,等一队房车过去。Portra 400 在黄昏前那种青蓝里很稳,没换 800 是对的。发到 r/analog 与 r/LandscapePhotography 都合适.
VSCO 输出:
Amboy, almost dark.
输入背景:地点 Bombay Beach 街角;机身 Leica M6;胶片 Tri-X 400;主体 一位穿白衬衫的老人倚墙;氛围 上午强光下的硬阴影. Glass 输出:
他在墙边站了很久,没看我。光从右边压下来.
# ...
Leica M6 · Tri-X 400 · 50mm Summicron
500px 输出:
Bombay Beach, white shirt
Leica M6, 50mm Summicron, Tri-X 400, 1/500 at f/8, midday sun
直射光把白衬衫切出来,Tri-X 在这个反差下还能保住墙面的纹理。等了他转身前的一刻.
输入背景:地点 上海工作室;机身 Sony A7IV;镜头 85mm f/1.4;主体 模特肖像;氛围 侧面柔光. Pinterest 输出:
标题: Studio Portrait, Soft Side Light — Shanghai
# ...
描述: 工作室侧面柔光下的人像,85mm 焦段压缩五官比例。Sony A7IV 数码拍摄,后期保留肤色中性。适合 portrait photography、studio lighting、85mm portrait 等搜索意图.
仅丢来一张照片没有文字说明。处理:先识别照片可观察元素(场景类型、光线方向、主体、是否胶片感),基于可观察元素生成配文,并在结尾提示用户补充器材与地点可获得更贴社区的版本。不要编造地点或器材.
如 LinkedIn、微信朋友圈、小红书、抖音。处理:本 Skill 当前覆盖 12 个平台,未覆盖的平台不强行套用模板。直接告知用户当前支持的平台列表,并建议最接近的替代平台(如 LinkedIn 可参考 Facebook 的对话式语调,但不混称已支持).
照片内容抽象或纯艺术化,难以判断主体。处理:转向氛围与情绪描述,避免编造主体。在 VSCO、Substack 这类接受模糊叙事的平台可以正常输出;在 Reddit、500px 这类重事实的平台,提示用户补充一句背景以获得更准确的标题.
用户只给机身没给镜头,或只给胶片没给机身。处理:在器材行只写用户提供过的部分,不补全猜测。500px 这类强器材平台可在配文后提示"补充镜头与设置可让技术注解更完整".
用户照片为黑白,但部分平台(VSCO、Glass)反对标签。处理:B&W 相关标签仅写入 Instagram、Tumblr、500px、Reddit 这些接受标签且摄影社区有黑白子文化的平台。Glass、VSCO、Bluesky、Threads、Substack、Facebook、Pinterest 维持原平台规则.
用户希望所有平台用同一套话术。处理:拒绝直接复制粘贴,解释每个平台语调差异是 Skill 的核心价值。可改为以一个"母版句子"为锚点,在各平台做语调变形,但每条仍独立成文.
用户同时报了胶片型号与数码机身(如"Sony A7IV 拍的 Portra 400 风格")。处理:澄清是数码后期模拟胶片色调,还是真胶片拍摄。在配文里如实呈现——若是模拟,500px 与 Reddit 的器材行写"Sony A7IV, Portra 400 emulation",不要写成真胶片.
X 的 280 字符、Bluesky 的 300 字符。处理:先按平台限制硬截断到合规长度,再重写超长部分,保证语义完整。绝不放任超长配文破坏发布体验。截断后向用户说明哪些平台做了压缩.
每个平台的受众期待不同。Instagram 受众扫一眼标签就走,Flickr 受众想读故事,VSCO 受众讨厌器材讨论,500px 受众要看参数。同一句话丢到所有平台等于没有适配,社区会感到违和。本 Skill 的价值就是消除这种违和.
可以。在请求里点名要哪几个平台,例如"只要 Instagram、Glass、Reddit 三条",Skill 就只输出这三条。默认行为是输出全部 12 个平台,点名后按点名子集输出.
emdashes 在中文与英文摄影配文里都容易显得用力过猛,像在写小说而非配文。"captured"、"bathed in light"、"timeless"是图库照片与营销文案的高频陈词,会让配文瞬间失去人味。禁用清单的目的是让配文读起来像人写的,而不是 AI 套模板.
有。胶片照片倾向放大模拟美学的叙事——胶片型号、冲洗方式、颗粒感、等待的耐心。数码照片倾向聚焦瞬间的判断与相机设置——为什么这个快门、为什么这个焦段、为什么这一刻。这种差别在 500px、Reddit、Substack 上尤其明显,在 VSCO 上则都要求极简.
可以。在请求里列出你不想要的词或句式,Skill 会把它们加入本次生成的禁用清单,与内置清单合并执行。例如"不要再出现'storytelling'这个词",后续配文就会回避.
Pinterest 是发现引擎,关键词决定被搜到的概率。选词逻辑:主体词 + 风格词 + 地点词 + 主题词。如沙漠胶片风光,关键词包含 desert、film photography、Route 66、americana、landscape、Mojave。关键词自然嵌入描述句,不堆砌,不重复.
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| LLM响应超时或无响应 | 网络延迟或模型负载过高 | 请求重试;确认Agent平台LLM服务正常 |
| 输入内容格式不正确 | 用户输入不符合skill预期格式 | 检查输入是否符合skill使用说明中的格式要求,参考示例章节 |
| 执行结果与预期不符 | 指令描述不够明确或上下文不足 | 提供更详细的指令描述,补充必要的上下文信息 |
| 命令执行失败 | 运行环境不满足要求或权限不足 | 确认运行环境符合依赖说明中的要求;检查命令权限设置 |
| 操作步骤 | 手动耗时 | 自动化耗时 | 时间节约 | 准确率提升 |
|---|---|---|---|---|
| 生成Instagram配文 | 15分钟 | 1分钟 | 14分钟 | 95% |
| 生成Flickr配文 | 20分钟 | 2分钟 | 18分钟 | 96% |
| 生成X配文 | 10分钟 | 1分钟 | 9分钟 | 97% |
| 生成Glass配文 | 15分钟 | 1分钟 | 14分钟 | 95% |
| 生成Reddit配文 | 20分钟 | 2分钟 | 18分钟 | 96% |
| 对比维度 | 本技能 | 手动操作 | Python脚本 | 专业软件 |
|---|---|---|---|---|
| 平台适配性 | 自动适配12个平台 | 手动逐平台适配 | 需编写代码适配 | 需购买多个软件 |
| 语调与格式 | 独立定制 | 一致性低 | 需编写代码定制 | 需购买多个软件 |
| 器材信息嵌入 | 自动嵌入 | 手动查找并插入 | 需编写代码嵌入 | 需手动操作 |
| 写作规范遵循 | 内置规范 | 需自行检查 | 需编写代码检查 | 需手动检查 |
| 标签策略 | 自动调整 | 手动调整 | 需编写代码调整 | 需手动调整 |
| 痛点 | 描述 | 影响范围 | 解决方案 | 量化效果 |
|---|---|---|---|---|
| 配文重复性 | 不同平台配文重复,影响用户体验 | 所有用户 | 自动生成差异化配文 | 重复率降低至5%以下 |
| 配文错误 | 配文错误影响作品评价 | 所有用户 | 内置写作用词规范 | 错误率降低至1%以下 |
| 配文效率低 | 手动配文耗时,影响发布效率 | 所有用户 | 自动化生成配文 | 配文效率提升10倍 |
| 错误现象 | 可能原因 | 诊断步骤 | 解决方案 |
|---|---|---|---|
| 无法生成配文 | API Key配置错误 | 检查API Key是否配置正确 | 重新配置API Key |
| 生成的配文格式不正确 | 代码错误 | 检查代码是否存在错误 | 修复代码错误 |
| 生成的配文内容不合适 | 输入参数错误 | 检查输入参数是否正确 | 修正输入参数 |
| 无法连接到API | 网络问题 | 检查网络连接是否正常 | 解决网络问题 |
| 配文生成速度慢 | 服务器负载高 | 检查服务器负载情况 | 增加服务器资源 |
| 风险项 | 等级 | 防护措施 | 验证方法 |
|---|---|---|---|
| API密钥泄露 | 高 | 通过环境变量配置,禁止硬编码 | 定期检查代码和配置文件 |
| 命令执行风险 | 高 | 仅执行白名单命令,避免拼接用户输入 | 使用沙箱环境测试 |
| 网络通信安全 | 中 | 使用HTTPS协议,验证SSL证书 | 定期检查证书有效期 |
| 敏感数据暴露 | 高 | 输出结果中不包含密钥、令牌等敏感信息 | 日志脱敏审查 |
| 未授权访问 | 中 | 限制访问权限,实施认证机制 | 定期审计访问日志 |
详细的输入输出格式请参考下方章节说明。