OpenClaw实战|从识图到公众号内容自动化,我跑通了完整链路

作者:后端小肥肠日期:2026/3/23

大家好,我是小肥肠。今天这篇文章,想跟大家分享一下我最近刚跑通两个skill:让 OpenClaw图像理解和 飞书 文章一键转存至公众号草稿箱。

1. 前言

最近我在慢慢做一件事:把之前在 Coze 里折腾过的插件和工作流,陆续迁到 OpenClaw + Skill 这一套上。上周末我主要搞定了两件事,都已经不是“纸上谈兵”,是真的跑起来了。

第一件:把图像理解插件迁移成 OpenClaw Skill

我把之前做的图像理解Coze插件,迁成了一个独立的 xfc-img-understand skill,直接接到 OpenClaw 里面。

它现在能做的事情很直接:

  • 支持输入在线图片 URL或者本地图片路径
  • 如果输入的是本地图片,会先自动上传到 OSS,然后交给通义千问视觉模型做识别和理解,最终返回结构化描述结果
  • 如果输入的是图片URL则是直接交给通义千问视觉模型做识别和理解

说白了,这玩意儿已经不是“帮我识个图”那么简单了,它更像一个可以接进自动化工作流里的视觉理解节点。

第二件:把飞书文档一键迁到公众号草稿箱

我又顺手做了一个 xfc-md-nice skill,用来把飞书文档直接转成公众号图文,并且不是那种“能发但丑”的半成品,而是带排版、带样式的成品文章。

skill里面的公众号样式是我基于xfc-img-understand反推别人好看的样式二创出来的。

我现在只要发一句命令: [飞书文档链接] 帮我把这篇飞书文档转成公众号图文,发送到草稿箱,发之前先给我看你生成的样式长图,我说可以了你再发

它就会自动完成:

  • 抓飞书文档正文
  • 下载文中图片
  • 转成 Markdown
  • 用 mdnice 渲染成公众号样式
  • 先出一张预览长图给我确认
  • 我确认没问题后,再推到公众号草稿箱

这个流程多了一步人工审核,样式和排版我能自己把关,不会一键把不美观的文章直接发出去。

顺手提一句,这篇文章也是xfc-md-nice发布到公众号草稿箱的,由于篇幅限制,这个内容挪到下期教程

那这篇先不跑偏,正式进入今天的主角:OpenClaw + 图像理解 Skill。

2. 图像理解 skill 思路设计

我做这个 skill,不是为了单纯搞一个 “看图说话” 的玩具,而是为了把它真正塞进自动化场景里。

周末在折腾 OpenClaw 的时候,我突然发现了一个很致命的短板:它看不懂我发的图 (图中我的 🦐 看不懂开始瞎编,不知道咋了它被我养的絮絮叨叨...)

这个问题一旦放到真实场景里就很麻烦。因为很多关键信息根本不在文字里,而是藏在截图、海报、长图、商品图这些图片素材里。如果 Agent 只能处理文字,那它很多时候就只是“半成品”

我很快就意识到:图像理解不是锦上添花,而是很多自动化能力能不能跑起来的前提。 只要这一层打通,后面的事情就顺了很多。比如:

  • 自动反推热门图片并继续做二创
  • 自动提取截图和海报里的关键信息
  • 和其他 skill 联动,继续做写作、整理、排版、发布

所以这个 skill 的目标很明确:输入一张图片,输出可继续用于自动化处理的理解结果。

2.1 整体链路怎么设计

我的设计其实比较朴素,核心就两段:

  1. 解决图片可访问问题
  2. 调用视觉模型做理解

因为视觉模型并不直接认识你电脑里的本地路径,所以只要用户给的是本地图片,就必须先处理成模型能访问的 URL。

于是整个流程就变成了:

  • 如果用户给的是 image_url ,直接把在线图片地址传给模型
  • 如果用户给的是 image_path ,先把本地图片上传到阿里云 OSS,再生成一个模型能访问的图片 URL,然后再调用通义千问视觉模型去理解。

这样做的好处是,前面的输入可以很随意,后面的输出可以很统一。 对接 OpenClaw 的时候就会很舒服,因为上层只管把图片交进来,下层会自己判断走哪条路。

2.2 这个 skill 要解决的,不只是“识图”

很多人做图像理解,第一反应就是让 AI 去描述图片。但真到自动化工作流里,单纯一段描述其实还不够,关键在于这套能力能不能稳定接进后续流程里。

所以我在设计这个 skill 时,关注的重点并不是“它能不能识图”,而是:输入是不是稳定、报错是不是可控、输出是不是统一,以及后续别的 skill 能不能直接 使用它的输出

只有把这一层打扎实了,后面不管是接文章生成、截图分析、素材管理,还是跟 xfc-md-nice 这种内容排版 skill 联动,都会轻松很多。

3. 图像理解 skill 实现

话不多说,正式开始 xfc-img-understand 这个 Skill 的搭建。

目录结构设计如下:

1xfc-img-understand/
2├── SKILL.md          # 必填:使用说明 + 元数据
3├── scripts/          # 必填:核心执行脚本
4├── config.json       # 必填:阿里云 OSS + DashScope 配置
5└── requirements.txt  # Python 依赖
6

整个 Skill 虽然不大,但已经把图像理解里最关键的链路都包进来了:

3.1 SKILL.md 设计编写

SKILL.md 可以理解为整个 Skill 的大脑和说明书。它决定了 OpenClaw 在收到用户请求后,能不能正确识别“这件事该不该调用 xfc-img-understand 来做”

在这个 Skill 里,我给它定义的场景非常明确:

  • 用户要分析图片内容
  • 用户要提取图中文字
  • 用户给的是本地图片路径

也就是说,这个 Skill 不是泛泛地“看图说话”,而是一个专门负责图像理解的工作节点

3.2 代码结构说明

真正干活的是 scripts/understand_image.py

我没有把它写成一坨难维护的脚本,而是按流水线思路拆成了几步:

  • 读取 config.json
  • 判断图片来源是 image_url 还是 image_path
  • 如果是本地图片,先上传 OSS
  • 再调用通义千问视觉模型做理解
  • 最后返回结构化 JSON 结果

核心代码结构如下:

1def run(payload):
2    # 1. 读取配置
3    # 2. 判断图片来源
4    # 3. 本地图片上传 OSS
5    # 4. 调用 qwen-vl 模型
6    # 5. 返回 text / image_url / object_key / error_message
7    pass
8

这套结构的好处很明显:前面的输入可以灵活,后面的输出必须统一。

不管上游丢给你的是聊天图片、本地截图,还是公网链接,到了这层之后都会被整理成标准流程,后续接 OpenClaw 其他 Skill 也会更顺。

3.3 config.json 填写

在整条链路里,我们既要调用阿里云视觉模型,又要让脚本有权限把本地图片传到 OSS。 所以一定要有一个统一管理配置的文件:config.json

配置格式如下:

1module.exports = {
2  dashscope_api_key: "sk-xxxxxxxx", // 阿里云百炼模型key,用于调用 `qwen-vl-plus` 做图片理解
3  dashscope_base_url: "https://dashscope.aliyuncs.com/compatible-mode/v1", // 阿里云模型调用接口
4  dashscope_model: "qwen-vl-plus", // 默认使用的视觉理解模型,可改成 [`qwen-vl-max`](https://xplanc.org/primers/document/zh/02.Python/EX.%E5%86%85%E5%BB%BA%E5%87%BD%E6%95%B0/EX.max.md)
5  oss_access_key_id: "xxxx", // 阿里云 OSS  AccessKeyId
6  oss_access_key_secret: "xxxx", // 阿里云 OSS  AccessKeySecret
7  oss_endpoint: "oss-cn-shenzhen.aliyuncs.com", // OSS 地域节点地址
8  oss_bucket: "your-bucket", // OSS Bucket 名称
9  oss_prefix: "openclaw", // 上传到 OSS 后的目录前缀/基础路径
10  oss_custom_domain: "https://your-domain.com", // OSS 自定义访问域名;如果为空则走签名 URL
11  signed_url_expire_seconds: 3600, // 当未配置自定义域名时,签名 URL 的有效期,单位秒
12};
13

这些配置看起来只是填参数,但其实它们决定了整条链路能不能真正跑起来。尤其是做 Skill 之后,我越来越强烈地感觉到一件事: 真正难的往往不是代码,而是环境。

3.4. Openclaw集成图像理解skill

Openclaw接入skill方法很简单,找到任意FTP工具传输到服务器的/root/.openclaw/workspace/skills/目录即可。

传输成功以后来到飞书 bot页面二次确认skill是否传输成功:

接下来就可以畅通爽用了:

以上就是OpenClaw +claude skill完成图像理解的全部教程,动手能力强的读者可以跟着教程实践一遍。上述skill已经被收录到了小肥肠共学群中,需要原件可以加入社群直接使用哦。

4. 结语

这次把 xfc-img-understand 从插件形态迁到 OpenClaw Skill,我最大的感受就是:Skill 这种组织方式,真的很适合做可复用的自动化能力。 它不是写一个一次性脚本跑完就结束了,而是把场景定义、配置管理、脚本逻辑、输入输出约定这些东西,全部收进了一个更稳定的结构里。

如本次分享对你有帮助,欢迎一键三连支持一下小肥肠,我们下期再见~


OpenClaw实战|从识图到公众号内容自动化,我跑通了完整链路》 是转载文章,点击查看原文


相关推荐


墨梅博客 1.9.0 发布与 LeanCloud 停服应对 | 2026 年第 11 周草梅周报
草梅友仁2026/3/15

本文在草梅友仁的博客发布和更新,并在多个平台同步发布。如有更新,以博客上的版本为准。您也可以通过文末的 原文链接 查看最新版本。 前言 欢迎来到草梅周报!这是一个由草梅友仁基于 AI 整理的周报,旨在为您提供最新的博客更新、GitHub 动态、个人动态和其他周刊文章推荐等内容。 开源动态 本周墨梅博客的开发依旧在稳步进行中。 您可以前往 Demo 站试用:demo.momei.app/ 您可以通过邮箱 admin@example.com,密码 momei123456 登录演示用管理员账号


ai-agent工程师指南
哈里谢顿2026/3/7

一些基本概念 1 Zero-shot & Few-shot 是什么? 1. Zero-shot(零样本) 不给例子,直接让模型做。 不提供任何参考样例 只告诉模型任务是什么 完全靠模型本身能力去理解、推理 例子 把下面句子分类成积极 / 消极:这部电影太好看了! 这就是 zero-shot。 2. Few-shot(少样本 / 小样本) 给几个例子,再让模型做。 给 1~10 个左右的示例 告诉模型:我要你像这样输出 模型照着格式、逻辑去做 例子 分类:今天心情很好 → 积极分类


CSDN创作变现活动!社区镜像或使用视频教程分别单个最高得 80 元,收益上不封顶!
CSDN官方博客2026/2/27

CSDN AI 社区是聚焦 AI 技术产业落地的开发者服务平台(官方入口),核心为创作者搭建技术价值转化桥梁,AI社区涵盖: 镜像市场(社区镜像)、算力市场等模块。 本次推出镜像创作激励活动,以下是方案活动规则、参与要求及激励政策,保障创作者权益与活动有序开展。 一、活动总则 活动时间: 2026年1月1日 - 2026年2月28日 现金奖励: 1、按照官方指定镜像任务创作,单个社区镜像奖励 30-80元现金 ,创作越多可获得现金奖


深度解析 JWT:从 RFC 原理到 NestJS 实战与架构权衡
NEXT062026/2/18

1. 引言 HTTP 协议本质上是无状态(Stateless)的。在早期的单体应用时代,为了识别用户身份,我们通常依赖 Session-Cookie 机制:服务端在内存或数据库中存储 Session 数据,客户端浏览器通过 Cookie 携带 Session ID。 然而,随着微服务架构和分布式系统的兴起,这种有状态(Stateful)的机制暴露出了明显的弊端:Session 数据需要在集群节点间同步(Session Sticky 或 Session Replication),这极大地限制了系统


RTOS核心三剑客:任务、信号量与队列深度解析
牛逍遥2026/2/9

RTOS核心三剑客:任务、信号量与队列深度解析 一、裸机编程的瓶颈:为什么需要RTOS? 在嵌入式开发中,裸机程序通常采用**超级循环(Super Loop)**结构: void main() { while(1) { read_sensors();// 读取传感器 process_data();// 处理数据 update_display();// 刷新显示 handle_uart();// 串口通信 check_safety();// 安全检测 } } 裸机编程的致命缺陷: 阻塞操作导致响


Objective-C手机验证码短信接口调用流程:创建请求对象并设置报文体
2601_949146532026/2/1

在iOS原生开发中,基于Objective-C对接手机验证码短信接口是账号安全、用户验证场景的核心需求,但新手常因请求对象创建不规范、报文体参数编码错误、请求头配置缺失等问题,导致接口返回405(API ID错误)、407(内容含敏感字符)等异常。本文聚焦objective-c手机验证码短信接口的核心调用流程,拆解创建NSURLRequest请求对象、配置请求头、设置报文体的完整逻辑,提供可直接复用的实战代码,解决参数编码、状态码解析等痛点,帮助开发者高效完成接口对接。 一、Objective


没显卡也能玩!Ollama 本地大模型保姆级入门指南
字节逆旅2026/1/22

如果你想在自己电脑上跑 AI,又不希望数据被大厂拿走,Ollama 绝对是目前最香的选择。不用配复杂的 Python 环境,不用求爷爷告奶奶找 API Key,只要一键安装,就能实现“大模型自由”。不过我的电脑很早就有了python环境了,忘记啥时候安装的,虽然在python方面还是个菜鸟。 1. 怎么安装 直接去 Ollama 官网 下载。有1个多G,先有个心理准备。 第一步: 安装完后,它会躲在右下角任务栏。 第二步: 打开终端(CMD 或 PowerShell),输入下面的命令。这


一个致力于为 C# 程序员提供更佳的编码体验和效率的 Visual Studio 扩展插件
追逐时光者2026/1/14

前言 今天大姚给大家分享一个致力于为 C# 程序员提供更佳的编码体验和效率的 Visual Studio 扩展插件:Codist。 Codist 插件介绍 Codist 是一个使用 .NET 编写、开源免费的 Visual Studio 扩展插件,致力于为 C# 程序员提供更好的编程体验和生产效率。它不仅强化了语法高亮、快速信息提示、导航栏、滚动条和显示质量,还集成了自动版本号更新、括号自动补全、支持高级编辑功能的智能工具栏、代码分析等功能。 支持 Visual Studio 版本 Visu


2026:一名码农的“不靠谱”年度规划
苏渡苇2026/1/6

又到了一年一度列计划的时候,我对着屏幕敲下“2026年度目标”这几个字,感觉就像在代码里写下了一个暂时没有具体实现的接口——定义很美好,实现嘛,有待观察。 一、工作要干得出彩,还得有点新花样 说真的,每年我都告诉自己,今年一定要写出那种能让同事看了忍不住赞叹“妙啊”的代码。但实际情况往往是,我对着三年前自己写的代码陷入沉思:“这真是我写的吗?当时怎么想的?” 新点子倒是不缺,缺的是能让这些点子安全落地还不引起生产事故的魔法。我现在的原则是:每个炫酷的想法,都必须配套一个“搞砸了怎么办”的预案。


基于 YOLOv8 的驾驶员疲劳状态识别系统实战(含完整源码与可视化界面)
我是杰尼2025/12/28

基于 YOLOv8 的驾驶员疲劳状态识别系统实战(含完整源码与可视化界面) 一、项目背景与研究意义 随着汽车保有量的持续增长,疲劳驾驶已成为交通事故的重要诱因之一。据统计,在高速公路和长途驾驶场景中,由于驾驶员长时间保持同一姿态,容易出现注意力下降、反应迟钝、频繁眨眼、打哈欠等疲劳特征,从而显著提升事故风险。 传统的疲劳检测方法多依赖以下方式: 车载方向盘行为分析 心率、脑电等生理传感器 人工巡查与事后分析 这些方法或成本较高,或依赖额外硬件,或难以规模化部署。相比之下,基于计算机视觉的疲劳

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2026 XYZ博客