소스 정보
- 저장소
- ccwq/ccwq-skill-list
- 최근 소스 활동
- 2026년 8월 14일 08:39
- 감지된 SKILL.md 언어
- 중국어
- 스타
- 2
- 포크
- 0
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/ccwq/ccwq-skill-list --skill chatgpt-web-skill명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
使用渐进式披露结构创建、改写或审查中文技术文章。适用于需要同时服务快速阅读与深度阅读的技术科普、教程、调查、对比、架构分析、事故复盘和观点文章。
显式调用的工程方法论选择器:根据目标、上下文、阶段、产物、质量属性与风险,诊断问题并组合推荐可验证的工程方法。
用于本机、SSH、容器、CI/CD、服务器、云服务、代码与接口的联调排障。 先识别执行环境,再选择最小只读 probe;统一生成脱敏 debug_report,优先复制到剪切板, 不可用时回退到终端和临时文件。支持动态轮次、风险分级授权、截图补证和内部并行复核。
SOC 직업 분류 기준
SKILL.md 표시 중
| name | chatgpt-web-skill |
| description | 通过 ChatGPT Web 进行信息搜集、Deep Research、图片生成编辑、结构化视觉审查和统一经验整理。 |
| license | MIT |
| metadata | {"version":"1.15.1","tags":["chatgpt","chatgpt-web","agent-browser","image-generation","image-editing","visual-review","research"],"related_skills":["agent-browser"]} |
本 skill 依赖 agent-browser skill 与其 CLI 操作 ChatGPT Web UI;不提供独立的浏览器自动化实现。agents-op 指 ChatGPT Web Project,不是本地 Git/workspace 项目;它是图片生成与编辑的指定工作区,也可用于聊天、图片审阅、网页研究和讨论。
优先通过 scripts/run_agent_browser.py 调用 agent-browser CLI,统一传递 session 和 CDP 配置。ChatGPT Web 任务只连接已登录的既有浏览器,不启动新的浏览器会话。CDP 优先级固定为:调用期 --cdp/-c > AGENT_BROWSER_CDP_PORT > 用户级 agent-browser 配置文件的 cdp > 9222。--cdp/-c 接受端口(如 9222)或完整 http(s) URL(如 http://192.168.1.8:9222);两种形式都先通过 /json/version 发现目标 WebSocket,再由 agent-browser connect 建立当前 session 并核验目标,避免静默落回默认浏览器。用户级配置路径为 Windows %USERPROFILE%\.agent-browser\config.json、macOS/Linux ~/.agent-browser/config.json,内容示例为 { "cdp": 9222 }。连接失败时,报告该优先级与配置方式,不创建新浏览器。会话名默认取当前项目绝对路径去除 / 后的字符串(非 CDP 默认 daemon 场景),截图保存到 %temp%\agent-browser-captures\。先枚举现有 tabs;目标 URL 已打开时复用该 tab,不要重复打开。tab ID 只在当前 daemon 生命周期内有效:看到 daemon version mismatch、daemon restart 或 tab 切换失败时,立刻重新执行 tab list,废弃旧 ID 与旧 lease,不按编号猜测替代 tab。例如:
python scripts/run_agent_browser.py tab list
python scripts/run_agent_browser.py -c <port-or-url> snapshot -i
此 skill 的全部业务动作都在 ChatGPT Web 对话内完成;不把它用作直接浏览、抓取或自动化外部网站的通用工具。普通讨论可直接在 chat 中进行。只有确有必要使用 ChatGPT Web 的 Search 或 Deep Research 时,发送前先向用户说明理由并取得本次明确授权;未获授权则继续普通对话,或报告信息边界。
每次触发此 Skill 后、任何浏览器操作前,都通过 experience_memory.py read 读取统一经验库。文件永久位于 Windows %USERPROFILE%\.config\chatgpt-web-skill\experience.md 或 macOS/Linux ~/.config/chatgpt-web-skill/experience.md;文件不存在时返回有效空库且不创建文件。禁止枚举、读取、迁移、重命名或删除旧临时经验文件,也不得手动编辑统一经验库。
经验文件由脚本独占维护,固定头为:
# chatgpt-web-skill 经验库
Skill-Version: 1.15.0
Entry-Count: 0
仅在任务结论已验证后、最终汇报前运行 append --group <group> 追加脱敏条目;每条经验只能属于一个分组。脚本 warning 使用稳定 code 与上下文:version_mismatch 或 experience_limit_exceeded(实际条数大于 50)只提示 trim,不阻断任务;entry_count_mismatch 会拒绝普通追加,需 trim 修复。Agent 收到任一 warning 必须立即向用户给出中文友好提醒。不记录 prompt、图片、chat 内容、账户标识、cookie、私有 URL 或凭据。
-t 和 --trim使用 -t 或 --trim 时,整理统一经验库;可追加主题,裸参数处理全部经验。此模式只处理既有经验,不新增条目。
experience_memory.py read --full,读取全量经验,并核验本地 SKILL.md、scripts/ 与 references/。默认可接入已有 CDP 浏览器,复用现有 ChatGPT tab 做实时 snapshot 的只读核验。ok 后,生成含全部原始条目处理结果的 JSON 计划,并通过脚本原子写回。删除、改写和合并必须带已验证证据;改写或合并保留最早“首次记录日”,并写入“最近核验”。# 仅在用户确认最终计划后执行;计划中每个 source_indexes 必须恰好出现一次。
python scripts/experience_memory.py trim --plan <confirmed-plan.json> --confirm ok
完成条件:全库的每条原始经验都被恰好归为保留、改写、合并、删除或本轮未证实;改写、合并和删除必须附非空 evidence。只有全库 trim 成功才更新文件 Skill-Version 并重算 Entry-Count。
把每条已验证经验按稳定性分流,避免以自然语言反复执行机械步骤:
scripts/ 增加标准库 Python 辅助逻辑和离线单元测试,再在 skill 中调用脚本。SKILL.md。当前可直接复用的辅助脚本:
# 返回至少两条 Project 实时归属证据,否则退出码为 1。
python scripts/runtime_checks.py -c <port-or-url> --tab <tab-id> project --name agents-op
# 每轮先检查快照;一旦图片已可见就立即截图并返回,不再空等尺寸轮询。
python scripts/runtime_checks.py -c <port-or-url> --tab <tab-id> images --min-width 1000 --screenshot <temp-path>
# 确认 marker 已离开 composer 并渲染;认证中断会以退出码 2 停止。
python scripts/runtime_checks.py -c <port-or-url> --tab <tab-id> message --marker <unique-marker>
# 由当前 sidebar 的真实 Project 行定位并点击主页,再返回实时 URL 和双证据;不拼接 URL 或请求 backend-api。
python scripts/project_locator.py -c <port-or-url> --tab <tab-id> --name agents-op
# 无可复用 ChatGPT tab 时,通过 agent-browser 新建任务 tab 后定位;终态必须 release 输出的 lease。
python scripts/project_locator.py -c <port-or-url> --new-tab --name agents-op
# 读取、原子追加或按已确认计划整理统一的脱敏经验。
python scripts/experience_memory.py read
python scripts/experience_memory.py status
python scripts/experience_memory.py append --group <group> --topic <topic> --scene <scene> --conclusion <conclusion> --boundary <boundary>
python scripts/experience_memory.py trim --plan <confirmed-plan.json> --confirm ok
任务 tab 的稳定生命周期使用 browser_task.py:
python scripts/browser_task.py acquire <url> [--force-new]
python scripts/browser_task.py status <lease-path>
python scripts/browser_task.py action <lease-path> -- click '@e123'
python scripts/browser_task.py release <lease-path> [--purge]
acquire 默认只复用规范化后完整 URL 精确匹配的 tab;回归测试使用 --force-new。lease 记录 session、可选 CDP、稳定 tab ID 和是否由本次创建;它不跨 daemon restart 生效。release 只关闭 created=true 的 tab,并重新执行 tab list 确认其消失;复用 tab 不关闭。action 允许透传任意 agent-browser 子命令,但会在动作前后重新选择 lease tab 并保存 snapshot。动作后的 snapshot 失败会标记 lease 为 uncertain,不会覆盖动作本身的退出码。发生 daemon restart 或 status 返回 stale 时,终止旧 lease、重新获取并重新验证 Project,不能把新 tab 的数字 ID 写回旧 lease。lease、snapshot 和截图保存到 %temp%\agent-browser-captures\chatgpt-web-skill\;默认不清理证据,只有显式 --purge 才删除已验证的专用 lease 目录。
runtime_checks.py 只机械判定 Project 证据、消息提交状态和图片可见性/尺寸;它不能授权持久化操作、选择动态控件或替代截图质量审阅。
每次任务按以下顺序执行;每项完成后才进入下一项:
project_locator.py --new-tab --name agents-op 创建。它经 browser_task.acquire(... --force-new) 调用 agent-browser tab new,在 skill .env 的 CHATGPT_PROJECT_LOCATOR_NEW_TAB_TIMEOUT_SECONDS=30 共享总预算内依次等待 sidebar 与 Project 证据渲染;超时或失败会释放本次新建 tab,成功才返回稳定 tab_id、created_tab=true 和 lease。把该 ID 传给每个 run_agent_browser.py --tab 与 runtime_checks.py --tab 调用,终态用 browser_task.py release <lease> 关闭新建 tab。
对需要跨多条命令的任务,优先通过 browser_task.py acquire 获取 lease;真实回归使用 --force-new,普通任务按精确 URL 复用。project_locator.py --name agents-op:它从当前 sidebar 的实时 DOM 精确匹配 Project 行、点击同一行的 Open project home,再读取浏览器实际导航得到的 URL。不得预存、拼接或从 /backend-api/* 推导 Project URL。随后运行 runtime_checks.py project --name agents-op 并结合实时 snapshot,确认页面是 ChatGPT Web 且 Project 名为 agents-op。禁止相信旧 tab ID、旧 URL 或记忆中的页面文本。agents-op 不存在时,先报告并请求创建 Project 的持久化状态授权;存在时直接使用,名称重复也以实时证据选择正确 Project。agents-op 内新建 chat;以当前 session 和 tab 作为本次任务的最小隔离边界。可接受的 Project 实时证据至少两项:页面 title 含 agents-op、Project 首页 URL 以 /project 结尾、composer 标注/placeholder 为 New chat in agents-op、页面内容表明该 Project 的 chats/sources。Project 内既有对话通常为同一路径下的 /c/<chat-id>,不能要求其以 /project 结尾。无法确认归属时,诊断并报告,不在普通 Chat 或其他 Project 静默执行。
以下会改变持久化 ChatGPT 状态,未获本次明确授权时停止并书面报告:编辑/清空 Project instructions(textarea#instructions)、切换 Library access/Memory 等设置、重命名/分享/置顶/删除 Project 或 chat、批准付费/权限/订阅弹窗、上传到当前项目 chat 以外的位置。visual-review 调用仅授权在当前任务 chat 上传本次指定的一张图片和发送固定审查提示词;不授权删除或修改任何 chat。只读页面探测与视觉核验默认允许。
不把未文档化的 /backend-api/* 当成稳定自动化 API;只用浏览器 UI/CDP DOM 与当前页面已渲染资源。不得输入凭证、处理付款订阅或批准权限;遇到平台 policy/block 如实报告,不尝试绕过。
当任务需要理解 ChatGPT Web 自身的后台请求时,只在已登录、已打开的 ChatGPT tab 上观察浏览器真实发出的网络记录;不对 /backend-api/* 使用 open、fetch、curl、重放或构造独立请求。先清空当前 tab 的日志,执行对应的可见 UI 操作,再读取 network requests 并按路径确认请求、方法、状态和触发动作;响应体、cookie、授权头、用户内容和完整私有 URL 都不落盘、不汇报。
例如,/backend-api/gizmos/snorlax/sidebar?owned_only=true&conversations_per_gizmo=5&limit=20 只有在展开 ChatGPT sidebar 的 Projects/自定义 GPT 列表或其“Show more”分页时,且网络日志实际出现该路径后,才能把它记录为 sidebar 数据加载请求。参数语义仅作运行时线索:owned_only=true 倾向筛选当前用户拥有的条目,conversations_per_gizmo=5 倾向为每项附带最多 5 个会话摘要,limit=20 倾向限制本页条目数;必须由本次请求和页面渲染共同验证,不能据此推断稳定接口契约。
ChatGPT UI 会变化。DOM selector 与 agent-browser ref(如 @e123)都可能随页面更新失效;每次点击、输入或提交前后都必须取得实时 snapshot 验证控件与页面状态,绝不跳过验证。Python 入口仅固化 CLI 参数、Project 证据和图片尺寸轮询,不能替代 DOM 的实时发现。下列 selector 仅为线索,不是永久契约:
在 PowerShell 中把 ref 作为字符串传入,例如 click '@e123';PowerShell 不支持 &&,需要顺序执行的命令改为独立命令或使用 ;。
Enter 不一定会提交 prompt。提交后先运行 runtime_checks.py message --marker <unique-marker>;未发送时重新发现并点击当前页面的 Send prompt,再运行该检查。若仍为 pending,不要盲目重复提交;若为 interrupted,报告认证/导航中断并停止。
Project home 中普通 ref click 无效时,不猜测或复用旧 ref。在同一 agent-browser session 内通过实时 DOM 定位 agents-op 的对应控件并触发 click;进入 Project 首页后,同时以 /project URL 和 New chat in agents-op 作为归属证据。Project 内既有对话通常为同一路径下的 /c/<chat-id>,不把它误判为 URL 证据缺失。
Create image 菜单项;选择后同时确认图片模式 pill(已观察到 data-id="picture_v2")与 placeholder 变为 Describe or edit an image。仅出现文字 Create image 不是模式成功证据。
图片上传:#upload-photos[accept="image/*"];通用文件上传:#upload-files。
Project options:button[aria-label="Open project options for agents-op"],菜单应含 Share project、Rename project、Project settings、Delete project。
对 composer:先聚焦 [aria-label="Add files and more"],确认可见 .ProseMirror.ProseMirror-focused,再向 ProseMirror 写入。常用可靠写入方式为 document.execCommand('insertText', false, prompt);在该 editor 上分派 Enter 的 keydown。已有工具 pill 时,只向 ProseMirror 追加 prompt,不能 selectAll 或清空 editor,否则会移除工具模式。通过 CDP eval 以 base64 写入中文时,先将 atob() 结果转为 Uint8Array,再用 TextDecoder 按 UTF-8 解码后 insertText。不要对激活后的 inert textarea 直接设值或按 Enter。
不强制创建本地任务目录、prompt 文件、候选图副本或评审记录。用户沟通、Project Instructions 与 visual-review 的固定 prompt 默认中文;用户明确指定其他语言时才切换。发送前在当前对话中确认意图、要求、排除项与验收标准。
agents-op chat,选择 Create image;确认图片模式 pill 与实时 placeholder 后,向保留 pill 的 ProseMirror 追加执行 prompt。runtime_checks.py images --min-width 1000;每轮先检查 snapshot,已出现 Generated image 时立即保存截图并结束检查,不再空等尺寸轮询。随后结合 composer 状态和截图确认。Save/下载按钮;如无按钮,只有当前页能访问的已渲染资源才可经页面内 fetch/canvas 导出。下载完成条件是目标文件已落盘且非空;通用 download 命令返回 canceled、按钮点击成功或浏览器提示都不能单独作为成功证据。用户指定桌面时,先确认下载文件后再移动/命名到桌面。不要用 host curl 直取 ChatGPT CDN(常见 403)。图像导出辅助脚本:
python scripts/image_exporter.py -c <port-or-url> --tab <tab-id> --selector 'img[alt^="Generated image"]' --output 'E:\exports\image.png'
python scripts/image_exporter.py -c <port-or-url> --tab <tab-id> --url 'https://example.com/image.png' --output 'E:\exports\image.png'
--selector 和 --url 都只在当前 Tab 的浏览器上下文读取资源;两者互斥且必须指定 --output。selector 匹配多张图时,先排除已滚出视口的候选,再选择与聊天输入框垂直距离最近的可见图;没有聊天框才回退到最后一个可见候选。脚本校验 image/*、非空响应并原子落盘,不使用宿主机 curl,从而保留当前 Tab 的登录态、Cookie 和 Referer。
优先使用用户手动放入 agents-op 的来源,不爬取历史 chat。上传用当前实时发现的图片控件。可主动改善构图、光线、色彩、材质、清理与整体连贯性,但不得违背需求。涉及身份关键人物、IP 或品牌时,在建档中记录 protected anchors 与允许改动;会明显影响 anchor 的最终 prompt 发送前,先让用户确认。
若页面 HTTPS 阻止 file:// 或 localhost fetch,不把本地路径暴露给页面;使用浏览器原生文件上传能力。若必须 CDP 注入,读取本地文件后以 base64 构造 File、放入 DataTransfer、赋给当前 file input 并分派 change,然后核验 React UI 已接收文件。
默认最多 3 个图片生成/编辑轮次,首张也计入。用户明确给出 N 轮验证/测试预算时,以 N 为硬上限:每次状态改变的 CDP 调用、导航或额外扩展均算一轮;工具/格式失败也消耗预算。预算接近耗尽时停止,汇总已验证证据并交回控制权。
每个候选都检查:主体/关键物体/姿态/风格、构图/裁切/比例/清晰度/伪影/边距、要求显示的文字、以及参考任务的 identity/layout/palette/protected anchors。剩余轮次内自动修复明显失败或重大质量缺口;最终向用户指出推荐候选及依据。
对于 wx-publish-workflow 的微信文章图片,封面与每张内文图是独立图片任务,各自享有 3 轮上限。封面验收以 2.35:1 消息列表显示为准;另查 1:1 分享/头像裁切,若后者丢失主题元素,记录为已知限制,而非在 2.35:1 已通过且用户未要求全端适配时继续生成。
visual-reviewvisual-review 是单图图像识别评价门槛。调用方提供一张通过 ChatGPT Web 附件控件上传的图片、带 S 编号的审查标准文本及期望的完美结果文本;本 skill 不验证上游重试、页面静态门禁或发布策略。完整固定提示词、中文 YAML 契约和状态规则见 references/visual-review.md。
上传前确认当前页面已接收该图片;图片不存在、不可上传、标准为空或期望结果为空时,不发送审查请求并失败关闭。每次操作前后都先取得实时 snapshot。模型只能返回一个中文 yaml 代码块,且只能包含 审查结论、结论依据、标准检查、缺陷和改进建议;代码块外文本、未知字段、重复键、tag、anchor、alias、多文档或类型错误均拒绝。
模型按每个 S 标准输出 达标、不达标或无法可靠判断,缺陷等级只允许 critical、major、minor。模型不能决定最终状态;本地严格计算:
critical 或 major 缺陷:VISUAL_BLOCKED;critical 或 major 缺陷:VISUAL_PASSED;无法可靠判断:VISUAL_PENDING。只有 VISUAL_PASSED 可继续后续流程;minor 缺陷必须保留但不阻断。visual-review 不删除或修改 chat,结束时仅按现有 lease 规则关闭本次创建的 tab。
fetch(img.src) 或 canvas 可能成功,外部 curl 通常被会话认证拦截。canvas.toDataURL() 因跨域失败时,改用可见下载按钮;不得尝试跨域绕过。Project instructions 是用户可见持久化配置,默认先用中文拟稿;将候选文本发给用户确认后才写入。React 受控 textarea 必须通过 prototype descriptor 设置并分派 input 与 change,写入后另做一次新的 evaluate 读回,并向用户报告读回结果。
agents-op 内新建 chat;辅助脚本均已通过 --tab 锁定任务 tab。project_locator.py 的实时 sidebar 行匹配和点击取得浏览器实际 URL;未拼接或缓存 Project URL。browser_task.py 记录 lease;结束时只释放本次创建的 tab,并重新枚举确认。agents-op Project 归属。visual-review 时,仅上传本次指定的一张图片;模型只返回一个中文 YAML 代码块,且每个 S 标准均有有效检查结果。critical、major、minor 和失败关闭规则计算视觉状态;仅 VISUAL_PASSED 可继续后续流程。visual-review 未删除或修改任何 chat、Project 或其他持久设置。/backend-api/* 请求数据。