openjiuwen/dev_tools/skill_creator/skills/skill_omni_creation/SKILL.md
Generates a multimodal Skill markdown file from a source URL. Use this Skill when a user wants to turn a web tutorial, product support article, or software guide into a reusable agent Skill with concise steps and embedded screenshots.
npx skillsauth add openjiuwen-ai/agent-core generate_skill_from_urlInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
给定一个网页 URL,读取页面中的任务说明、操作步骤、图片和视频内容,整理成一个标准 Skill .md 文件。生成结果应包含 # Skill、## Name、## Description、## Steps,并把相关截图放在它所说明的步骤后面。
适用请求包括:
将生成的 Skill 保存到:
skills/<slug>/SKILL.md
相关图片保存到:
skills/<slug>/references/img_NN.ext
最终 Skill markdown 必须符合:
# Skill: <Skill Name>
## Name
<snake_case_skill_name>
## Description
<1-3 English sentences describing what this Skill does and when to use it>
## Steps
1. <action-oriented instruction>

2. <next instruction>
接收用户提供的 URL,先确定页面要表达的主要任务;如果用户没有提供标题,就从页面标题或文章主标题推断一个简短任务名。
用 Playwright 打开并完整渲染该 URL,等待动态内容加载完成,必要时关闭 cookie banner 或同意弹窗。读取页面正文、标题层级、列表项、图片、iframe 和嵌入视频链接。
从渲染后的页面中整理 section_tree:保留主内容区的标题、段落和列表项,去掉导航、页脚、广告、登录入口、隐私条款、站点菜单等与任务无关的文本。
为页面中的每张内容图片建立记录。记录图片 URL、alt 文本、上方最近标题、图片前后的正文片段,以及 figcaption、aria-describedby、表格同行文字或“见图 N”这类远程引用。
跳过明显不是内容图片的资源,例如 SVG 图标、data URI、小 logo、广告像素、追踪图片和站点装饰图。不要在这一步因为截图看起来“不够重要”就丢弃它;内容相关性留到视觉过滤时判断。
并发下载候选图片。只保留可读取的 jpeg、png、gif、webp 图片;丢弃尺寸过小、超过大小限制、无法打开或下载失败的图片;用图片原始字节的 SHA-256 哈希去重。
如果页面包含 YouTube、Bilibili、Vimeo 或其他可下载的嵌入视频,尝试用 yt-dlp 下载视频,再用 ffmpeg 从视频中提取代表性帧。视频失败时跳过该视频并继续处理页面图片。
将下载成功的 DOM 图片和视频帧合并成同一组候选视觉材料。每个候选项都必须带上可用的文本上下文;视频帧至少带上视频标题或描述。
调用支持视觉输入的模型过滤候选图片。给模型同时提供图片和图片附近的文字,让它保留软件界面、菜单、设置页、按钮、对话框、操作结果截图或能直接说明任务的画面;跳过广告、纯装饰图、独立 logo 和无关宣传图。模型调用失败时,保守地保留该批图片。
把保留下来的图片保存到 skills/<slug>/references/,按出现顺序命名为 img_00.ext、img_01.ext、img_02.ext。保存后记录每张图片在最终 markdown 中可使用的相对路径。
判断每张保存后的图片应该说明哪段文字。优先使用 figcaption、aria-describedby、表格同行文字或正文反向引用;如果没有明确引用,再结合图片内容和 text_before / text_after 判断它属于前文、后文,还是独立说明。
根据保存路径和对齐结果构建 image manifest。manifest 中必须包含图片相对路径、alt 文本、所在标题和它对应的文本上下文,供最终生成 Skill 时逐字引用。
调用文本模型生成最终 Skill markdown。输入应包含来源 URL、section_tree 和 image manifest;只使用已提供的内容,不得自行补充未出现在输入中的步骤或 UI 元素。生成内容只保留直接完成任务所需的正向步骤。
写 ## Name 时使用简短准确的 snake_case;写 ## Description 时用英文 1-3 句说明这个 Skill 的用途和触发场景。
写 ## Steps 时使用编号步骤,每一步都应该是可执行的动作。把图片紧贴在它说明的步骤后方,不要让图片集中堆在文末,也不要引用 manifest 之外的路径。
删除或避免加入 FAQ、故障排查、营销介绍、背景知识、系统要求长表格、替代方法、撤销步骤和边缘说明,除非它们是完成主任务的必要动作。
生成后检查 markdown 图片语法。若出现 ![references/img_00.png] 这种把路径写进 alt 文本里的形式,将它修复成 。
最后确认输出文件存在,并检查 markdown 中的每个图片引用都能在 skills/<slug>/ 下找到对应文件。若有断链,修正路径后再结束。
执行本 Skill 时,优先使用下方脚本,## Steps 描述的是背后的逻辑,用于理解或自定义实现。
所有命令均在项目根目录(generate_skills/)下运行。每个脚本各负责一个阶段,通过 JSON 文件传递中间结果;工作目录自动隔离为 work/<slug>/,多个 URL 顺序或并行跑互不干扰。
执行步骤(在 scripts/ 目录作为 cwd 执行,<skills_dir> 为 skill 输出根目录的绝对路径):
# 第 1 步:爬取页面,--slug 指定 work 子目录名和最终输出目录名
# 运行后输出:[stage 1] wrote work/<slug>/stage_01_scrape.json: N image(s) ...
python stage_01_scrape.py "<URL>" --slug <slug>
# 第 2 步:下载并去重图片
python stage_02_download.py work/<slug>/stage_01_scrape.json
# 第 3 步:VLM 过滤
python stage_03_filter.py work/<slug>/stage_02_download.json
# 第 4 步:保存图片,--skills-dir 必须传绝对路径
python stage_04_save.py work/<slug>/stage_03_filter.json --skills-dir <skills_dir>
# 第 5 步:生成 Skill markdown,--clean 表示成功后自动删除 work/<slug>/
python stage_05_generate.py work/<slug>/stage_04_save.json --clean
示例(URL 为 Figma 文章,slug 为 067_advanced_prototyping_examples,skills_dir 为 /data/generated_skills):
python stage_01_scrape.py "https://help.figma.com/hc/en-us/articles/17146044893591" --slug 067_advanced_prototyping_examples
python stage_02_download.py work/067_advanced_prototyping_examples/stage_01_scrape.json
python stage_03_filter.py work/067_advanced_prototyping_examples/stage_02_download.json
python stage_04_save.py work/067_advanced_prototyping_examples/stage_03_filter.json --skills-dir /data/generated_skills
python stage_05_generate.py work/067_advanced_prototyping_examples/stage_04_save.json --clean
playwright、beautifulsoup4、Pillow、requests、openai、python-dotenvffmpeg、ffprobe、yt-dlpAPI_BASE、API_KEY、MODEL_NAMEplaywright install chromiumtools
Participate in an OpenJiuWen agent team as an external member. Use when this agent has been spawned into a team (the OPENJIUWEN_TEAM_JOIN environment variable is set) and needs to read its inbox, send messages to teammates, and claim / work / complete tasks via the `team-member` CLI.
tools
Complete calendar-and-clock workflows on mobile (find events, read start times, create alarms or reminders relative to meetings). Use when the user asks to schedule, set an alarm before/after a meeting, find appointment times, or coordinate Calendar with Clock.
tools
Navigate github.com in mobile Chrome to retrieve repository information (files, README, contributors, languages, releases, packages) and switch to desktop site mode for richer metadata (forks, stars). Use for in-browser research, not git CLI or GitHub API operations.
development
Comprehensive step-by-step workflow for navigating the Booking.com mobile site to search for destinations, select dates/occupancy, browse results, and extract detailed hotel information including pricing and facilities.