Skill flagged — suspicious patterns detected

ClawHub Security flagged this skill as suspicious. Review the scan results before using.

odd-articles

v1.0.0

内容生产和分发统一管线。素材收集→出稿→排版→封面→朋友圈文案→多平台转换→一键分发。涵盖公众号写作、微贴图轮播图、博客园文案、微博文案、品牌视频、Chrome CDP 自动发布。

0· 62·0 current·0 all-time
byJacky Wei@jackyhwei

Install

OpenClaw Prompt Flow

Install with OpenClaw

Best for remote or guided setup. Copy the exact prompt, then paste it into OpenClaw for jackyhwei/odd-articles.

Previewing Install & Setup.
Prompt PreviewInstall & Setup
Install the skill "odd-articles" (jackyhwei/odd-articles) from ClawHub.
Skill page: https://clawhub.ai/jackyhwei/odd-articles
Keep the work scoped to this skill only.
After install, inspect the skill metadata and help me finish setup.
Use only the metadata you can verify from ClawHub; do not invent missing requirements.
Ask before making any broader environment changes.

Command Line

CLI Commands

Use the direct CLI path if you want to install manually and keep every step visible.

OpenClaw CLI

Bare skill slug

openclaw skills install odd-articles

ClawHub CLI

Package manager switcher

npx clawhub@latest install odd-articles
Security Scan
Capability signals
CryptoRequires OAuth token
These labels describe what authority the skill may exercise. They are separate from suspicious or malicious moderation verdicts.
VirusTotalVirusTotal
Suspicious
View report →
OpenClawOpenClaw
Suspicious
high confidence
!
Purpose & Capability
The README/SKILL.md describe an end‑to‑end article pipeline and multi‑platform publishing (WeChat, CNBlogs, Weibo, Douyin, Xiaohongshu, etc.), which is consistent with the included scripts. However the registry metadata claims no required env variables or credentials while SKILL.md and the code require many credentials (WECHAT_APPID/WECHAT_APPSECRET, CNBLOGS_TOKEN, paths for MD formatter, etc.). That mismatch between declared requirements (none) and the actual code/instructions is a coherence concern.
!
Instruction Scope
Runtime instructions and scripts instruct the agent to read and write local files (OUTPUT_DIR drafts/current.json, references/, local/.env), to fetch external URLs (Wechat article fetching, ModelScope image API), and to publish to external platform APIs. SKILL.md also describes '自动记录/自动识别' of conversational material (auto-recording items from conversation), which broadens data collection. The instructions access environment variables and local config paths that were not declared in registry metadata.
Install Mechanism
There is no formal install spec (instruction‑only from registry), but the package includes many runnable scripts (Python/TypeScript/Bun). No remote downloads are performed by an install step, which lowers supply‑chain risk, but the code will be present on disk and is intended to be executed locally — review before running.
!
Credentials
The skill expects multiple credentials and local paths (WeChat app id/secret, CNBlogs token, MD formatter paths, etc.) even though the registry declares none. Additional concerns: generate_img.py includes a hardcoded ModelScope API key (embedded in the script), and wechat-api.ts reads/writes config and a token cache under the user's home (~/.config/wechat-api). These are reasonable for a publisher tool in principle, but the undeclared credential requirements and embedded key are disproportionate and risky.
Persistence & Privilege
The skill does not set always:true. It does create and use local persistent artifacts: browser profile directories for Chrome CDP, a token cache (~/.config/wechat-api/token-cache.json), and may create config files. It does not appear to modify other skills or system agent configuration, but it will store credentials/config in the user's home.
Scan Findings in Context
[hardcoded-api-key] unexpected: scripts/generate_img.py contains a hardcoded ModelScope API key (ms-c5105352-22dd-4be1-8e2d-e057ae27df8d). Embedding third‑party API keys in distributed code is unsafe and unexpected; this key may be leaked or abused and should be removed.
[tls-disable] unexpected: scripts/distribute/wechat-api.ts sets BUN_FETCH_OPTS = { tls: { rejectUnauthorized: false } }, disabling TLS certificate verification for WeChat API calls. This weakens transport security and can expose requests to man‑in‑the‑middle attacks — not appropriate for production credential uploads.
[reads-writes-user-config] expected: wechat-api.ts reads credentials from environment variables and a config file (~/.config/wechat-api/config.json) and writes a token cache under ~/.config. Persisting tokens locally is expected for an authed publisher, but users should be aware the skill will create/modify files in their home directory.
[launches-chrome-remote-debugging] expected: distribute CDP utilities spawn Chrome with --remote-debugging-port and create browser profile dirs. Using CDP to automate web publishing is consistent with the stated purpose, but it grants the skill the ability to control a local browser profile and interact with web content.
[exec-spawn-and-shell] expected: The code uses child process exec/spawn (spawnSync, execSync, npx/bun invocations) to run markdown conversion and start Chrome. This is expected for the tool's workflow but means scripts will execute subprocesses on the host — review before running.
What to consider before installing
What to consider before installing/running this skill: - The skill’s description matches the code (it will fetch WeChat articles, convert Markdown, generate images, and publish to multiple platforms), but the registry wrongly lists no required credentials. Expect to provide real platform tokens (WeChat AppID/Secret, CNBlogs PAT, etc.) in local/.env. - Review and remove the hardcoded ModelScope API key in scripts/generate_img.py; do not use the embedded key. Treat it as compromised and rotate/revoke if it's yours. - The wechat-api implementation disables TLS verification for fetch calls — this is insecure. Do not run in production without fixing that (remove rejectUnauthorized:false). - The skill will create and use local files under your home (~/.config/*), and will launch Chrome with a custom profile and remote debugging. If you run it, consider using an isolated environment (container, dedicated user account, or VM) rather than your primary workstation. - Audit local/.env and any config files before running. Only provide credentials you intend to allow this tool to use, and prefer platform tokens with minimal scope. If possible, test in preview/dry‑run modes first. - If you are not comfortable reviewing or modifying the code, do not run the publishing scripts with real credentials. If you proceed, remove the TLS bypass and the embedded API key first.
scripts/distribute/cdp-utils.ts:285
Shell command execution detected (child_process).
scripts/distribute/distribute.ts:130
Shell command execution detected (child_process).
scripts/distribute/platforms/wechat.ts:56
Shell command execution detected (child_process).
scripts/distribute/wechat-api.ts:188
Shell command execution detected (child_process).
scripts/distribute/cdp-utils.ts:50
Environment variable access combined with network send.
scripts/distribute/wechat-api.ts:27
Environment variable access combined with network send.
!
scripts/distribute/cdp-utils.ts:487
File read combined with network send (possible exfiltration).
!
scripts/distribute/wechat-api.ts:83
File read combined with network send (possible exfiltration).
Patterns worth reviewing
These patterns may indicate risky behavior. Check the VirusTotal and OpenClaw results above for context-aware analysis before installing.

Like a lobster shell, security has layers — review code before you run it.

latestvk972v72news75b8q8ze5hncra584seha
62downloads
0stars
1versions
Updated 2w ago
v1.0.0
MIT-0

OddMeta文章生成技能 Article Generation Skill

本技能默认使用 oddmeta 品牌色作为示例。你可以在 references/ 目录下修改为自己的品牌色,或在 local/SKILL.local.md 中覆盖路径和个人设定。

一条龙:素材收集 → 写文章 → 排版 → 多平台内容 → 一键分发。


环境变量配置

本技能所使用到的环境变量在 local/.env 中配置。

支持的环境变量如下:

  • OUTPUT_DIR:输出目录,用于放置收集到的素材、生成的文章、排版预览、封面图、微贴图轮播图等文件。
  • ARCHIVE_DIR:存档目录,用于归档历史文档文件。
  • BRAND_NAME:品牌名称,用于在生成的文章中显示品牌名称。
  • BRAND_LOGO_DARK:品牌logo(深色),用于在生成的文章中显示品牌logo。
  • BRAND_LOGO_LIGHT:品牌logo(浅色),用于在生成的文章中显示品牌logo。
  • WECHAT_ID:微信公众号ID,用于发布文章。
  • WECHAT_SLOGON:微信公众号标语,用于在文章中显示。
  • WECHAT_APPID:微信公众号AppID,用于发布文章时的认证。
  • WECHAT_APPSECRET:微信公众号AppSecret,用于发布文章时的认证。
  • CNBLOGS_TOKEN:博客园Token,用于发布博客园文章时的认证。
  • MD_FORMATTER_DIR:Markdown格式化工具目录,用于格式化Markdown文章。
  • BAOYU_WECHAT_SKILL_DIR: 奥德元微信技能目录,用于发布文章。
  • MD_TO_WECHAT_SCRIPT: Markdown文章转微信文章脚本,用于将Markdown文章转换为微信文章。

输出目录 OUTPUT_DIR 示例

[输出目录]/
├── drafts/
│   └── current.json          # 当前素材列表
├── [文章标题].md              # 产出的文章
├── [文章标题]_preview.html    # 排版预览
├── [文章标题]_cover.html      # 封面图
└── [主题]-chartlet.html       # 微贴图轮播图

存档目录 ARCHIVE_DIR 示例

[存档目录]/
├── 20260321/                  # 按日期归档(YYYYMMDD)
│   ├── Fish-Audio-S2-Tutorial-v2/    # 文章标题目录
│   │   ├── Fish-Audio-S2-Tutorial-v2.md
│   │   ├── Fish-Audio-S2-Tutorial-v2_preview.html
│   │   ├── Fish-Audio-S2-Tutorial-v2_cover.html
│   │   └── manifest.json
│   └── OpenClaw-Memory-Deep-Article/  # 另一篇文章
│       ├── OpenClaw-Memory-Deep-Article.md
│       ├── OpenClaw-Memory-Deep-Article_preview.html
│       └── manifest.json
└── 20260320/
    └── ...

触发词

素材收集(Path A)

触发词说明
/story查看当前素材状态
"看看素材"查看已记录的素材
"出稿"生成文章 + 排版 + 封面图
"清空素材"清空当前素材
"记一笔:xxx"手动添加素材
"素材+1:xxx"手动添加素材
"写个朋友圈"根据素材/文章生成朋友圈文案

内容生成(Path B)

触发词说明
/chartlet + 微信链接微信文章转微贴图轮播图
"转微贴图" + 微信链接同上
"做成微贴图" + 微信链接同上
"转微博" + 微信链接生成微博文案
"转博客园" + 微信链接生成博客园文案
"做视频" + 微信链接触发品牌视频管线
"做视频画布" + 任意素材生成可录制的 Prezi 风格视频画布(微信链接/md/pdf/html/文本均可)
"录屏画布" + 任意素材同上
"手账视频" + 任意素材同上
"多平台分发" + 微信链接一次生成所有平台内容
"转微贴图并发布" + 微信链接生成 + 自动触发分发

文章阅读

触发词说明
/read-gzh + 微信链接抓取并总结公众号文章
"帮我读一下这篇公众号"同上
"总结一下这篇文章"同上

排版与配图

触发词说明
"排版"用 oddmeta 主题排版 Markdown → 公众号 HTML
"做头图" / "封面图"生成公众号头图 HTML(浏览器下载 PNG)
"做竖版封面" / "竖版头图"从公众号封面 → 生成 3:4 竖版封面(1080×1440),适合微贴图/视频号
"做配图" / "准备配图"生成文章配图 HTML(浏览器下载 PNG)
"排版+配图" / "全套排版"排版 + 头图 + 配图一起生成

分发

触发词说明
/distribute读取 manifest 一键发布
"发布到博客园"将 Markdown 文件发布到博客园(→ 详细说明
"一键发布"全平台发布
"全平台发布"同上
"发布到微博"单平台发布
"发布到微贴图"单平台发布
"发布到博客园"单平台发布

存档

触发词说明
"/archive"将 OUTPUT_DIR 下的历史文档归档到 ARCHIVE_DIR
"存档"同上
"归档"同上

博客园发布(独立工具)

不依赖 manifest,可直接发布 Markdown 文件到博客园。具体请参考:references/publishing_to_cnblogs.md


存档功能(独立工具)

OUTPUT_DIR 目录下的历史文档文件(.md, .html, .png, manifest.json)移动到 ARCHIVE_DIR 目录下,按日期归档。具体请参考:references/archive_outputs.md


两条输入路径

Path A:日常素材收集 → 出稿

边干活边记录 → 说"出稿" → 写文章 → 排版 → 封面图 → 朋友圈文案 → manifest

适用场景:日常和 cc 协作时,自动积累素材,攒够了一键出稿。

Path B:微信链接 → 多平台内容

微信链接 → 抓取文章 → 分析结构 → 生成微贴图/博客园/微博/视频 → manifest → 分发

适用场景:已有公众号文章,一键转为多平台内容并发布。


Path A 流程:素材收集 → 出稿

自动记录(默认开启)

cc 在对话中主动识别有料瞬间并自动记录,无需手动触发。

识别信号:

类型识别信号示例
踩坑翻车预期≠结果、报错、折腾半天"试了三种方案都不行"
意外发现"没想到"、"原来可以"、意外有效"居然这样就解决了"
迭代打磨改了多版、从复杂到简洁"200行改成20行还能跑"
搞笑时刻对话金句、AI抽风、神奇bug"它认真地给我写了一堆错的"
突破时刻卡了很久终于通"困扰一周的bug终于找到了"
方法沉淀可复用的技巧、心得"以后遇到这种情况就这么办"

自动记录时:不打断对话,段落结尾标记 (✓ 素材+1)

手动记录

用户说"记一笔:xxx"或"素材+1:xxx"时记录。

current.json 格式

{
  "topic": "主题(可选,出稿时自动提取)",
  "materials": [
    {
      "time": "2026-01-30 14:30",
      "content": "素材内容",
      "type": "搞笑时刻",
      "context": "可选的上下文备注",
      "auto": true
    }
  ],
  "created": "2026-01-30"
}

出稿步骤

STEP 1: 读取素材**

  1. 读取素材 — 读取输出目录下 drafts/current.json
  2. 分析提炼 — 提炼主题和故事线

STEP 2: 确定写作框架

  1. 判断内容类型 → 选择写作框架
内容类型判断信号使用框架参考文件
教程类教人安装/使用/配置工具、Skill 介绍、技术实战、"怎么做 xxx"六段式教程框架references/framework_tutorial_articles.md
深度长文行业分析、人物故事、趋势判断、观点输出、"为什么 xxx"四幕式深度框架references/framework_in_depth_articles.md
其他描述、分享、建议、建议、建议、建议纯文本references/frameworks.md

STEP 3: 写作

读取: `references/writing-guide.md`
读取: `playbook.md`(如果存在,按 confidence 分级执行)
读取: `history.yaml`(最近 3 篇的 dimensions + closing_type 字段)
读取: `references/exemplars/index.yaml`(如果存在)
  1. 写文章 — 按对应框架写文章
  2. 保存 — 保存 Markdown 文件,文件名格式为 {{date}}-{{title}}.md{{title}} 为文章标题的拼音,保存到 OUTPUT_DIR 目录下。
  3. 排版 — 调用排版工具生成 HTML 预览(oddmeta 主题)
  4. 头图 + 配图 — 生成可下载的 HTML 文件(→ 读 references/cover_template.md
    • 竖版封面(可选):用户说"做竖版封面"时,从已生成的公众号头图 HTML 转换 → 读 references/cover_vertical_spec.md
  5. 朋友圈文案 — 生成朋友圈推广文案(→ 读 references/platform_copy.md

STEP 4: 推广文案

  1. manifest — 生成 manifest.json,供 /distribute 使用。wechat 部分必须包含:
  • wechat.markdown:文章 Markdown 路径
  • wechat.html:排版后的 _preview.html 路径
  • wechat.cover_image:封面 PNG 路径(用户需先从浏览器下载)
  • wechat.title:文章标题
  • wechat.author:作者名(默认 曹操同学
  • wechat.digest:文章摘要(120 字内)
  • wechat.images:配图 PNG 路径列表(如有)
  1. 询问 — 是否存档并清空当前素材

排版命令

cd "$MD_FORMATTER_DIR"
python3 md2wechat.py [文章路径] --theme [主题]

$MD_FORMATTER_DIR 需在 local/.env 或环境变量中配置。

推荐主题:default(oddmeta 品牌色,默认)、chinese(中国风)、apple(极简优雅) 推荐字号:medium(15px 默认)、large(16px 长文推荐)

oddmeta 主题说明:基于 chinese 主题,使用 oddmeta 品牌色(墨绿 #1A3328 + 鱼红 #C44536 + 宣纸底 #F2EDE3) 执行排版命令报错说明:请参考 references/running_python_script_guide.md


Path B 流程:微信链接 → 多平台内容

第 1 步:抓取文章

使用 Python 抓取脚本(微信有反爬验证,WebFetch 会被拦):

python3 "${SKILL_DIR}/scripts/wechat_download.py" "<URL>" --json

超时 30 秒。失败则提示用户手动复制文章正文。

如果用户只是说"帮我读一下这篇公众号"(/read-gzh 触发),执行抓取后直接生成结构化总结,不进入后续内容生成流程。总结格式:

# 文章总结
## 基本信息(标题/作者/类型/配图数)
## 核心观点(3条)
## 关键信息
## 金句摘录
## 图片内容(下载并识别配图中的文字)
## 思考/迭代点

第 2 步:分析文章结构

提取:标题、副标题/金句、核心概念、关键数据、步骤/流程、亮点/特色、方法论/金句、行动召唤。

第 3 步:拆分为卡片

8-10 张卡片,遵循chartlet阅读节奏(→ 读 references/generate_chartlet.md):

位置卡片类型内容
第 1 张封面大标题 + hook + 迷你视觉元素
第 2 张先看结果成品展示 + 核心数据
第 3-4 张概念解释核心概念拆解
第 5-7 张流程/实战步骤、对比、流程图
第 8 张亮点/特色产品/作品亮点卡片
第 9 张方法论一句话金句提炼
第 10 张行动召唤链接 + 社区引导

第 4 步:生成图片 HTML

输出路径:文章同目录下 [简短主题]-chartlet.html,未指定目录放 /tmp/。浏览器自动打开预览。

最后一张行动召唤页必须包含:微信号 [你的微信号](强调色大字)、备注关键词、核心链接。

local/SKILL.local.md 中配置你的实际微信号。

📚 重要:生成前必读范例

参考 references/examples-chartlet/example-chartlet.html 的质量标准:

卡片设计要求

  • 纯信息图设计,无文章截图
  • 像素风/游戏化界面展示(适用时)
  • 流程图、卡片网格、编号列表等丰富视觉元素
  • 品牌色克制使用(墨绿85% + 鱼红5%)

文案质量要求

  • 真人分享感,有真实场景和个人感受
  • 口语化表达:"玩疯了"、"上头了"、"然后我就..."
  • 298-350字 + 8-12个标签

生成的内容应达到范例的专业水准。

第 5 步:生成微贴图发布文案

根据内容类型选择风格:

  • 个人 IP 风格(真人分享、产品开发、踩坑记录)

    • → 读 local/SKILL.local.md 中指定的个人品牌风格文件(如有)
    • 流水账式真实感 + 具体时间细节 + 口语化表达
    • 300-350字,8-12个标签
    • 人设:在 local/SKILL.local.md 中自定义
  • oddmeta风格(方法论总结、深度分析)

    • → 读 references/platform_copy.md 的微贴图部分
    • 结构化拆解 + 干货密度高
    • 适合转载公众号文章

第 6 步:生成博客园发布文案

→ 读 references/platform_copy.md 的博客园部分。

第 7 步:生成播客脚本

→ 读 references/platform_copy.md 的播客部分。

第 7.5 步:生成微博文案

→ 读 references/platform_copy.md 的微博部分。

第 8 步:AI 语音生成

使用 Fish Audio TTS 将播客脚本转为 MP3(→ 读 references/tts_config.md)。

文件命名:[播客标题].mp3 + [播客标题]-播客脚本.txt

第 8.5 步:输出 manifest.json

所有内容生成完毕后,自动输出 manifest.json 到输出目录。格式:

{
  "version": "1.0",
  "created": "<ISO时间戳>",
  "source": "<微信链接>",
  "title": "<文章标题>",
  "outputs": {
    "chartlet": { "html": "...", "copy": { "title": "...", "body": "...", "tags": [...] } },
    "cnblogs": { "copy": { "body": "...", "circles": [...] } },
    "xiaoyuzhou": { "audio": "...", "script": "...", "copy": { "title": "...", "description": "...", "show_notes": "..." } },
    "video_canvas": { "html": "...", "teleprompter_md": "...", "cover_html": "..." },
    "weibo": { "copy": { "title": "...", "body": "...", "tags": [...] } }
  }
}

如果用户说"转微贴图并发布",生成 manifest 后自动执行 /distribute

第 9 步:品牌视频生成(可选)

仅当用户提到"视频"、"抖音"、"视频号"或"品牌视频"时执行:

A. Remotion 品牌片头片尾

cd "$REMOTION_DIR"
npx remotion render src/index.ts Intro --output /tmp/brand-intro.mp4
npx remotion render src/index.ts Outro --output /tmp/brand-outro.mp4

$REMOTION_DIR 需在 local/.env 或环境变量中配置。

B. AI 视频 Prompt — 为 Seedance 2.0 或 Google Veo 生成 4 段视频 prompt

C. ffmpeg 拼接指令 — 生成拼接命令供用户手动执行

第 9B 步:视频画布生成(可选)

仅当用户说"做视频画布"、"录屏画布"、"手账视频"时执行。接受任意素材输入:微信链接、Markdown 文件、PDF、HTML 文件、纯文本、用户口述内容均可。

  1. 获取内容 — 根据输入类型自动处理:
    • 微信链接:调用 scripts/wechat_download.py 抓取
    • 文件路径(md/pdf/html/txt):直接读取
    • 用户粘贴的文本:直接使用
  2. 分析结构 — 提取标题、核心数据、痛点、步骤、原理、对比、金句、亮点
  3. 拆分为 9 张卡片 — 读取 references/video_canvas_template.md 获取完整 CSS+JS 模板和卡片规范
  4. 生成 9 段提词器脚本 — 口语化,每段 80-150 字,含 [提示] cue 标记
  5. 输出提词器脚本 md[简短主题]-提词器脚本.md,用户可直接编辑
  6. 组装 HTML — CSS 框架 + HTML 骨架 + 填充内容 + JS 框架(SCRIPTS 与 md 一致)
  7. 输出文件[简短主题]-视频画布.html,保存到文章同目录或 /tmp/
  8. 生成封面图[简短主题]-封面.html,手账风格 + 人像圆框,浏览器下载 PNG
  9. 提示用户 — 先检查提词器脚本 md,再在浏览器中打开 HTML 录制。16:9 固定比例,各平台直接上传

第 10 步:用户微调

告知用户所有产出物路径,提示可调整,输入 /distribute 可一键发布。

公众号同步提示:封面 PNG 从浏览器下载后,直接 /distribute --platforms wechat 即可同步到草稿箱(API 模式,无需打开 Chrome)。

一次性产出五样东西,不需要额外要求:

  1. 微贴图图片 HTML(含一键下载工具栏)
  2. 微贴图发布文案(标题 + 正文 + 标签)
  3. 博客园发布文案(正文 + 圈子标签)
  4. 微博发布文案(录制脚本 + AI 语音 MP3)
  5. manifest.json(供 /distribute 一键发布)

第 9B 步可选追加(说"视频画布"时): 6. 视频画布 HTML(含录制 + 提词器 + 美颜,16:9 固定) 7. 提词器脚本 md(可编辑,修改后说"更新提词器"同步到 HTML) 8. 封面图 HTML(手账风格 + 人像圆框,浏览器下载 PNG)


分发流程(/distribute)

读取 manifest.json,通过 Chrome CDP 自动化发布到各平台(→ 读 references/distribute-platforms.md)。

用法

# 全平台发布
npx -y bun "${SKILL_DIR}/scripts/distribute/distribute.ts" --manifest /path/to/manifest.json

# 选择平台
npx -y bun "${SKILL_DIR}/scripts/distribute/distribute.ts" --manifest /path/to/manifest.json --platforms chartlet,weibo

# 预览模式(不提交,只预填内容)
npx -y bun "${SKILL_DIR}/scripts/distribute/distribute.ts" --manifest /path/to/manifest.json --platforms chartlet --preview

平台缩写

缩写平台状态
wechat公众号可用
chartlet贴图可用
cnblogs博客园可用
weibo微博实验性
douyin抖音实验性
shipinhao视频号待开发

执行顺序

公众号 → 微贴图 → 博客园 → 微博 → 抖音 → 视频号 → 微博(顺序执行,避免 Chrome 端口冲突)

四级降级

级别模式触发条件
L0API 直推公众号 API 直接推草稿箱,无需 Chrome
L1自动发布CDP 完全自动化
L2辅助发布登录态失效/选择器失效/--preview
L3手动模式CDP 连接失败

公众号优先 L0(API),凭证缺失或失败时自动降级 L1(CDP)。


品牌设计规范

两套品牌色体系:

  • oddmeta:专业内容品牌(公众号、深度文章、方法论)
  • OPEN365:真人IP品牌(微贴图、微博、博客园、日常分享)

单一真相源:在 local/SKILL.local.md 中指定你的品牌色文档路径。 如果色值冲突,以品牌文档为准。以下色板作为默认示例。

oddmeta 色板(墨绿体系)

比例法则:墨绿 85% : 鱼红 5% : 其余 10%

名称色值用途
墨绿主色#1A3328暗底卡片背景
宣纸底#F2EDE3浅底卡片背景
鱼红#C44536强调色、数字、标签(仅点睛)
半透白rgba(255,255,255,0.5)暗底上的品牌名
半透墨绿rgba(26,51,40,0.4)浅底上的品牌名
苔灰#7A8C80次要文字
深墨#0F1F18更深背景
淡青#D4DDD7分割线、边框

OPEN365 色板(桃粉体系)

比例法则:桃气粉 15% : 奶油黄 40% : 暮光紫 10% : 灰色 35%

名称色值用途
桃气粉#FF6B9D主强调色、标题、关键数据
奶油黄底#FFF9E6浅底背景、卡片底色
暮光紫#9D7BA8辅助色、次要信息、品牌名
温灰#6B6B6B正文文字
浅灰底#F5F5F5现代感背景
深夜蓝#2D3047暗底背景(少用)

品牌选择规则

内容类型使用品牌原因
公众号深度文章oddmeta专业、权威、内容品牌
行业分析报告oddmeta冷静客观
微贴图真人分享oddmeta温暖、真实、真人IP
博客园日常动态oddmeta活泼、亲和
微博日常动态oddmeta真实过程展示
产品开发记录oddmeta真实过程展示
B端产品介绍oddmeta专业可信赖

双品牌联动:同一篇内容,公众号用oddmeta色,微贴图转发用奥德元色

字体

font-family: -apple-system, 'PingFang SC', 'Microsoft YaHei', sans-serif;

品牌角标

每页左上角 oddmeta logo + 文字,暗底页用 .light,浅底页用 .dark

页码

右下角 1/N,暗底页 rgba(255,255,255,0.2),浅底页 rgba(26,51,40,0.2)


内容改写原则

微信 → 微贴图不是照搬,需适配:

维度微信微贴图
篇幅2000-3000 字每页 50-80 字
结构线性阅读卡片式跳读
语气技术向、深度简洁、直观、有冲击力
视觉文字为主视觉为主、文字点缀

改写要点:标题要炸、数字要大、一页一个点、视觉替代文字、保留核心链接。


完整模板参考

首次生成微贴图图片时,参考 references/examples-chartlet/exampe.html 范例文件获取完整 CSS + JS。

如果有额外的本地模板参考,在 local/SKILL.local.md 中指定路径,格式为 extra_examples: ["references/examples-chartlet/exampe-chartlet.html"]

生成新内容时复用范例文件的 CSS + JS 部分,只替换卡片内容。


Script Directory

Agent Execution: Determine this SKILL.md directory as SKILL_DIR, then use ${SKILL_DIR}/scripts/<name>.

ScriptPurpose
scripts/distribute/distribute.ts分发主编排器
scripts/distribute/cdp-utils.ts共享 CDP 工具
scripts/distribute/platforms/*.ts各平台发布模块
scripts/archive_outputs.py存档历史文档(Python)(按日期归档)(可选)(默认不执行)
scripts/md2wechat.py将Markdown转换为微信文章格式(Python,根据范例)
scripts/publish_to_cnblogs.py博客园发布(Python)
scripts/wechat_download.py微信文章抓取(Python,模拟微信 UA)

Reference 文件索引

cc 按需读取,不要一次性加载所有 reference。

场景读取文件
存档历史文档references/archive_outputs.md — 存档历史文档(按日期归档)(可选)(默认不执行)
生成头图/配图references/cover_template.md — oddmeta 风格排版规范(头图 + 配图 + 视觉组件)
横版→竖版封面references/cover_vertical_spec.md — 公众号封面转竖版的 CSS 转换规范
生成微贴图卡片references/generate_chartlet.md — 微贴图轮播图设计规范
生成各平台文案references/platform_copy.md — 微贴图/微博/博客园/朋友圈文案规范
生成视频画布references/video_canvas_template.md — 手账拼贴视频画布模板(CSS+JS+卡片规范)
出稿写深度长文references/framework_in_depth_articles.md — 人设 + 写作规范 + 格式(四幕式,8000-12000 字)
出稿写教程类文章references/framework_tutorial_articles.md — 六段式教程框架(先看结果→概念→操作→实战→拿走即用,2000-4000 字)
出稿其它类型文章references/frameworks.md — 人设 + 写作规范 + 格式(四幕式)
生成播客音频references/tts_config.md — Fish Audio 配置 + 生成脚本
分发到各平台references/distribute_platforms.md — 平台配置 + manifest 格式 + 降级策略
生成微贴图轮播图references/xiaohongshu-format.md — HTML 模板 + 视觉组件库

故障处理

问题处理
运行Python报错优先参考 references/running_python_script_guide.md
微信抓取失败提示用户手动复制文章正文
文章太短(<500字)压缩为 5-6 张卡片
文章太长(>5000字)精选核心,控制 10 张以内
导出图片模糊检查 SCALE=2,浏览器缩放 100%
manifest 不存在提示先运行内容生成
Chrome 启动失败降级 L3(手动模式)
TTS 402 余额不足提示去 fish.audio 充值
TTS 生成失败只输出脚本文本,提示手动录制
代码块在公众号编辑器中无换行修改 md2wechat.py 脚本,用 <br/> 替换换行符

Comments

Loading comments...