Skip to content

glanderness/everything-mimic-skill

Repository files navigation

Everything Mimic Skill

主流程:参考样本 → 风格拆解 → 图文关系抽象 → 模板保存 → 新内容结构化 → 图文排版生成 → 平台兼容交付 → 自检

一个用于拆解、对比、抽象和模仿任意优秀内容的 Codex Skill。

这个 Skill 的长期目标不是只做公众号排版,而是建立一套通用的“内容模仿系统”:面对一篇文章、一套页面、一个视频脚本、一份产品文档或任意可观察样本,先提取其结构、节奏、表达方式、视觉语言和关键约束,再沉淀成可复用模板,最后迁移到新的内容任务中。

当前版本先从“公众号图文排版”这个具体场景切入。原因是公众号文章同时包含文本结构、视觉排版、图文节奏、平台兼容和发布交付等问题,非常适合作为 Everything Mimic Skill 的第一个 MVP 场景。

它的目标不是机械复制某个公众号,而是从 PDF 样本中抽取可复用的风格原则,再将这些原则应用到新的中文文章中,生成更适合粘贴到微信公众号编辑器的 HTML。

整体框架

Everything Mimic Skill 可以理解为一个通用模仿系统。它不直接复制某个样式,而是把优秀样本拆成可复用的结构、节奏、视觉和交付规则,再迁移到新的内容里。

当前 MVP 先服务公众号图文排版。完整流程包括:

  1. 输入参考样本和目标内容
    参考样本可以是公众号 PDF、公众号链接、截图、网页、文章样本等;目标内容是用户希望重新组织、排版或表达的新文章。

  2. 提取风格模板
    从参考样本中观察标题、正文、图片、图注、引用、卡片、分隔线、字体、颜色、间距和组件规则,并保存为 style-profile.jsonstyle-brief.md

  3. 区分正文与平台信息
    PDF 或截图里的文章标题、作者、日期、账号信息等属于发布平台字段或页面 chrome,默认只作为元数据分析,不进入最终正文 HTML。

  4. 分析图文关系
    不只看图片长什么样,还要判断图片为什么放在这里、是否每个板块都有图、图片在标题前还是标题后、是否有图注,以及图片承担解释、转场、证明还是总结功能。

  5. 生成原创适配图片
    如果参考风格依赖配图,就使用 Image2 或可用的图片生成工具,为新文章生成原创图片,并保存到 assets/,再插入 article.wechat.html

  6. 结构化新内容并套用风格
    先识别新文章的开头、主要章节、转折、案例、总结和行动入口,再套用段落节奏、标题样式、强调方式、图片位置、图注样式和结尾方式。

  7. 生成平台兼容交付物
    默认输出公众号正文 HTML、本地预览 preview.html、图片文件夹、图片上传对照表和交付说明。HTML 要优先保证能粘贴进公众号编辑器。

  8. 运行自检
    检查是否误把标题/作者放进正文、图片数量是否匹配章节节奏、图片是否保存并插入、是否提供上传对照表,以及是否使用了公众号编辑器不稳定支持的富网页布局。

核心能力

  • 对任意参考内容进行拆解:识别结构、节奏、表达、视觉、媒介和平台约束。
  • 对新内容与参考样本进行对比:找出应该保留、迁移、舍弃或改造的部分。
  • 将可复用规律模板化,形成之后可以反复调用的风格或方法档案。
  • 从公众号 PDF 样本中提取排版风格。
  • 将字体、间距、色彩、段落节奏、标题层级、组件样式保存成风格模板。
  • 分析整篇文章的图文关系,而不是只孤立模仿某一张图。
  • 当参考文章依赖配图、图解、截图或封面/板块卡片时,使用 Image2 或可用的图片生成工具为新文章生成原创适配图片,并保存到输出项目的 assets/
  • 根据模板为新文章生成正文排版 HTML。
  • 输出本地预览文件、公众号正文 HTML、图片素材文件夹和上传对照表。
  • 默认只输出公众号正文区域,不把文章标题、作者、日期、账号信息等公众号后台字段放进正文 HTML。
  • 尽量使用公众号编辑器兼容的简单 HTML/CSS,避免富网页端布局导致粘贴后格式丢失。

推荐目录结构

wechat-style-runs/
├── 输入/
│   └── 具体日期_文章核心内容/
│       ├── source.pdf
│       ├── source.html
│       ├── fullpage.png
│       └── capture-report.json
├── 输出/
│   └── 具体日期_文章核心内容_风格名/
│       ├── article.wechat.html
│       ├── preview.html
│       ├── assets/
│       ├── wechat-image-upload-map.md
│       ├── layout-notes.md
│       ├── self-check.md
│       └── DELIVERY.md
├── 风格/
│   └── style-id_中文风格名/
│       ├── style-profile.json
│       ├── style-brief.md
│       ├── inspection.json
│       ├── pages/
│       └── self-check.md
└── README.md

工作流

0. 公众号链接直接进入风格提取

如果用户只提供公众号文章链接,不需要再要求用户手动打印 PDF。默认流程是:先用脚本自动捕获公众号页面,生成 PDF/HTML/长图/诊断报告,然后直接进入风格提取。

/Users/lucas/.cache/codex-runtimes/codex-primary-runtime/dependencies/node/bin/node \
  scripts/wechat_url_to_pdf.mjs "https://mp.weixin.qq.com/s/..." \
  --out-dir "wechat-style-runs/输入/2026-06-27_文章核心内容"

输出:

  • source.pdf:后续风格提取使用的 PDF。
  • source.html:渲染后的页面 HTML,便于排查。
  • fullpage.png:整页截图,便于视觉检查。
  • capture-report.json:标题、账号、发布时间、图片数量、图片加载失败数等诊断信息。

脚本会使用本机 Chrome 打开真实页面,修复常见公众号懒加载图片属性,自动滚动到底部等待图片加载,再打印 PDF。

如果 capture-report.jsonfailedImageCount 不为 0,应先检查截图和 HTML,不要直接把该 PDF 当作完整风格样本。

链接输入的交付要求:

  • 读取并反馈文章标题、公众号、发布时间。
  • 反馈 PDF 页数、正文图片数、失败图片数。
  • 如果图片全部成功加载,直接基于 source.pdf 提取风格。
  • 最终反馈风格名称、style_id、核心图文风格摘要,以及输入捕获目录和风格目录。

1. 风格提取

用户提供公众号文章 PDF 后:

  1. 渲染 PDF 页面,抽样检查首页、中间页、标题页、图文页、组件页。
  2. 判断正文标题和公众号页面标题的边界。
  3. 提取段落、标题、强调、引用、卡片、分隔、图片、图注等规则。
  4. 为风格命名,例如 暖米课程图解体蓝标访谈体
  5. 保存 style-profile.jsonstyle-brief.md

2. 图文关系理解

必须从全局判断图片节奏:

  • 是否每个主要板块都有图片?
  • 图片在标题前还是标题后?
  • 图片与正文之间是否有图注?
  • 图片是课程图解、访谈照片、截图、流程图、概念卡片,还是封面图?
  • 多久出现一张图?
  • 图片承担解释、转场、总结,还是情绪渲染?

如果原模板依赖“每个板块一张图”,新文章也应该默认补齐这个节奏。

3. 自动排版

用户提供新文章和目标风格后:

  1. 先做文章结构化:引入、主要板块、转折、案例、总结、行动入口。
  2. 再做风格映射:段落长度、标题样式、强调方式、图片位置、图注样式。
  3. 输出正文 HTML,默认不包含公众号标题、作者、日期等后台字段。
  4. 输出本地图片素材和上传对照表。
  5. 生成 preview.html 供用户直接预览。

微信公众号兼容原则

公众号后台粘贴 HTML 时,会清理很多富网页端能力。为了提高复制粘贴成功率:

  • 优先使用 sectionpspanimg 等简单标签。
  • 尽量使用内联 CSS。
  • 避免依赖 flexgrid、复杂选择器、伪元素、脚本、动画、canvas。
  • 不要把关键内容做成只在网页端渲染的复杂组件。
  • 图片不要指望随本地 HTML 自动粘贴进公众号,默认交付本地图片文件夹和上传对照表。

图片自动进入公众号的高级路线

如果普通 HTTPS 图床测试失败,可以使用微信官方 media/uploadimg 路线:

  1. 将正文里的本地图片压缩到微信接口限制以内。
  2. 使用公众号 WECHAT_APP_ID / WECHAT_APP_SECRET 获取 access_token
  3. 调用微信图文正文图片上传接口,获得微信托管的图片 URL。
  4. article.wechat.html 中的 assets/... 图片路径替换为微信返回的 URL。
  5. 生成 article.wechat-uploadimg.html 后再复制到公众号编辑器。

本仓库提供脚本:

python3 scripts/wechat_uploadimg.py article.wechat.html \
  --project-dir path/to/output-project \
  --out article.wechat-uploadimg.html \
  --map wechat-uploadimg-map.json

真实上传前先运行 --dry-run 检查图片路径和压缩结果。不要把 AppSecret 写入文章文件或提交到仓库,统一通过环境变量传入。

草稿与发布自动化

图片上传跑通后,可以继续用公众号 API 创建草稿箱文章,再由人工检查草稿。

发布也可以自动化,但必须加安全闸门:

  • 默认只创建草稿,不发布。
  • 发布前必须明确确认标题、账号、草稿、发布时间。
  • 发布脚本默认 dry-run,只有带 --execute 才会真正调用微信发布接口。
  • 微信 freepublish/submit 是立即发布接口;如果需要定时发布,应由本地或服务器调度器在指定时间调用发布脚本。

本仓库提供:

# 创建草稿
python3 scripts/wechat_create_draft.py article.wechat-uploadimg.html \
  --title "文章标题" \
  --author "作者" \
  --digest "摘要" \
  --cover assets/cover.png \
  --out-report wechat-draft-report.json

# 发布 dry-run,不会发布
python3 scripts/wechat_publish.py \
  --draft-media-id wechat-draft-report.json

# 真实发布,必须显式 --execute
python3 scripts/wechat_publish.py \
  --draft-media-id wechat-draft-report.json \
  --execute \
  --out-report wechat-publish-report.json

定时发布的推荐方式是:先创建草稿和发布命令,再由 launchdcron、GitHub Actions 或服务器任务队列在指定时间执行真实发布命令。

图片生成策略

当风格依赖配图时:

  1. 先提取参考图的整体风格和内容逻辑。
  2. 使用 Image2 或当前可用的最佳图片生成工具,生成适配新文章主题的原创配图。
  3. 将图片保存进当前输出项目的 assets/
  4. 在 HTML 中引用本地图片。
  5. 给用户提供 wechat-image-upload-map.md,提示实际发布时手动上传到对应位置。

不要把必要图片留成文字占位符,也不要只生成一张外部预览图而不保存到项目文件夹。

在 Codex Desktop 中,内置图片生成结果可能不会直接出现在普通图片目录,而是保存在会话 JSONL 中。可以使用 scripts/extract_session_images.py~/.codex/sessions/.../rollout-*.jsonl 解码图片。

参考文档

核心规则拆在 references/ 目录中,调用 Skill 时不应该只看 SKILL.md

  • core-principles.md:文字排版、图文节奏、正文边界、自检系统。
  • style-extraction.md:如何从 PDF 或参考样本提取可复用风格。
  • style-replication-policy.md:复刻边界,避免复制品牌标识和专有资产。
  • image-style-generation.md:如何分析图片逻辑、用 Image2/图片生成工具生成原创配图,并整合进 HTML。
  • wechat-rendering-rules.md:公众号编辑器兼容、复制粘贴稳定性和 HTML/CSS 限制。
  • wechat-image-transfer.md:本地图片、托管图片、第三方编辑器和微信 API 草稿同步的取舍。

正文输出边界

公众号后台已经单独提供标题、作者、封面、摘要等字段。因此默认交付的 article.wechat.html 只包含正文内容:

  • 包含:正文段落、正文内部小标题、引用、卡片、列表、图片、图注、分隔和结尾说明。
  • 不包含:文章标题、副标题、作者、账号名、日期、地点、阅读/收听数量、平台头部和分享尾部。

如果用户提供的新文章里带有标题,默认只用它判断主题和输出文件夹命名,不把它作为正文块放进 HTML。

安装

将本仓库复制到 Codex Skill 目录:

git clone https://github.com/glanderness/everything-mimic-skill.git
mkdir -p ~/.codex/skills
cp -R everything-mimic-skill ~/.codex/skills/everything-mimic-skill

然后在 Codex 中直接描述任务,例如:

用 Everything Mimic Skill 帮我从这篇 PDF 提取公众号图文风格。

或:

用暖米课程图解体给下面这篇文章排版。

复刻边界

本 Skill 只提取可复用的结构、节奏、方法和风格原则,不应复制他人的 logo、二维码、固定品牌标识、专有插画、独特文案或可识别的原创图形资产。发布版本应当是“方法相通、风格相近、表达原创”的适配结果。

About

A Codex skill for analyzing, comparing, abstracting, and mimicking excellent content. MVP starts with WeChat article layout.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages