The project's README from github.com/StopDisTrain/sdt-skills. As one markdown file: README.md.
一套面向小红书内容研究、创作与质检的开源 Agent Skills 工具箱。
An open-source Agent Skills toolkit for Xiaohongshu content research, creation, and quality control.
SDT 把账号建模、公开内容研究、对标筛选、传播机制拆解、选题生成、内容成稿和发布前质检,拆成 15 个可以独立调用的 Skills。需要稳定执行的指标换算、选题评分、标题检查和 HTML 渲染,则交给 Python 工具完成。
SDT breaks account modeling, public-content research, benchmark filtering, spread analysis, topic generation, drafting, and pre-publish QA into 15 independently callable Skills. Repeatable tasks such as metric normalization, topic scoring, title validation, and HTML rendering are handled by Python tools.
我想解决的不是“让模型一次多写几篇”,而是让一条内容从哪里来、为什么这样写、出了问题应该退回哪一步,都能说清楚。
The goal is not simply to make a model produce more content. It is to make the source, editorial reasoning, and repair path of each piece of content explicit.
15 Skills · 10-stage workflow · 5 Python tools · CI guardrails · MIT License
一个很长的 Prompt 确实可以一次写完研究、选题和成稿。但实际使用时,标题改不好不该重跑研究,资料不足也不该靠模型把空白补齐。更麻烦的是,交付看似完整,出了问题却很难知道该回到哪一步。
A long prompt can produce research, topics, and a draft in one pass. In practice, a weak title should not force the research to run again, and missing information should not be filled with plausible inventions. The output may look complete while giving no clear place to repair a failure.
所以 SDT 把日常工作里反复出现的判断写进模块边界:
SDT therefore turns recurring editorial decisions into module boundaries:
flowchart LR
U["用户任务<br/>User brief"] --> R["任务路由<br/>sdt router"]
subgraph E["证据层 / Evidence"]
A["账号模型<br/>Account model"] --> RS["只读研究<br/>Read-only research"]
RS --> B["对标筛选<br/>Benchmark filter"]
B --> S["传播机制<br/>Spread mechanism"]
end
subgraph P["生产层 / Production"]
T["选题生成与评分<br/>Topic generation and scoring"] --> C["内容成稿<br/>Content draft"]
C --> XT["标题<br/>Title"]
C --> CV["封面<br/>Cover"]
C --> H["开头<br/>Hook"]
end
subgraph Q["质检层 / Quality"]
F["脚本流畅度<br/>Script flow"] --> RE["共鸣检查<br/>Resonance"]
RE --> AI["AI 痕迹与语气<br/>AI trace and voice"]
end
subgraph O["交付层 / Delivery"]
PKG["发布包<br/>Publish-ready package"] --> WX["公众号 HTML<br/>WeChat HTML"]
PKG --> SYS["内容资产库<br/>Content system"]
end
R --> A
S --> T
XT --> F
CV --> F
H --> F
AI --> PKG
图里的箭头是交接关系,不代表每次都必须从头跑到尾。用户只问一个步骤时,路由器会直接进入对应模块。
The arrows show handoffs, not a mandatory sequence for every request. A single-step request is routed directly to the relevant module.
| 层级 / Layer | Skill | 职责 / Responsibility | 常见输出 / Typical output |
|---|---|---|---|
| 路由 / Router | sdt |
选择单个模块,或在明确要求时组织完整流程 / Select one module or coordinate the full workflow when requested | 执行路线、生产简报 / Route, production brief |
| 上下文 / Context | sdt-account |
整理事实、受众、产品、语气和表达边界 / Model facts, audience, product, voice, and boundaries | 账号档案 / Account profile |
| 证据 / Evidence | sdt-research |
只读收集小红书公开信息,并记录来源和限制 / Collect public Xiaohongshu evidence read-only, with sources and limitations | 证据表、限制说明 / Evidence table, limitations |
| 证据 / Evidence | sdt-benchmark |
排除名人效应、粉丝体量和独特资源,筛出可学样本 / Filter celebrity effects, audience size, and unique resources to find learnable samples | 对标样本集 / Qualified sample set |
| 策略 / Strategy | sdt-spread |
拆解情绪、分享动机、有效立场和可迁移机制 / Decode emotion, sharing motives, effective positioning, and transferable mechanisms | 传播机制卡 / Mechanism card |
| 策略 / Strategy | sdt-topic |
生成、迁移、评分并筛选选题 / Generate, adapt, score, and filter topics | 候选池、Top 5 / Topic pool, Top 5 |
| 生产 / Production | sdt-content |
把确认过的选题写成可拍或可发布内容 / Turn an approved topic into shoot-ready or publish-ready content | 逐字稿、图文稿 / Script, post draft |
| 包装 / Packaging | sdt-xhs-title |
生成并检查标题,确认正文能兑现承诺 / Generate and validate titles against the body promise | 标题排序、A/B 方案 / Ranked titles, A/B options |
| 包装 / Packaging | sdt-cover |
设计封面文案、构图和测试方案 / Design cover copy, composition, and test variants | 封面简报 / Cover brief |
| 包装 / Packaging | sdt-hook |
检查并改写短视频前五秒 / Diagnose and write the first five seconds | Hook 方案、嵌入版脚本 / Hook options, embedded script |
| 质检 / QA | sdt-script-flow |
检查衔接、信息密度、口播节奏和流失风险 / Check transitions, density, spoken rhythm, and drop-off risk | 流畅度诊断、改稿 / Flow diagnosis, revision |
| 质检 / QA | sdt-resonate |
检查受众张力、立场和分享动机 / Check audience tension, positioning, and sharing motive | 共鸣诊断 / Resonance diagnosis |
| 质检 / QA | sdt-ai-check |
识别 AI 写作痕迹和账号语气偏差 / Detect AI-writing signals and account-voice mismatch | AI 痕迹报告 / AI trace report |
| 交付 / Delivery | sdt-wechat-html |
把通过质检的 Markdown 转成公众号兼容 HTML / Convert approved Markdown into WeChat-compatible HTML | 可发布 HTML / Publishable HTML |
| 学习 / Learning | sdt-content-system |
归档证据、成稿、发布数据和复盘结论 / Archive evidence, drafts, publishing data, and reviews | 可复用内容资产 / Reusable content assets |
完整流程只在用户明确要求“一站式生产”时运行。平时改标题、查对标或检查脚本,都可以从对应阶段开始。
The full workflow runs only for an explicit end-to-end request. Title revisions, benchmark research, and script checks can start at the relevant stage.
flowchart TD
S0["0 · 定义任务 / Define task<br/>平台、目标、验收物"] --> S1["1 · 建立账号模型 / Model account<br/>事实、受众、产品、边界"]
S1 --> S2["2 · 收集证据 / Collect evidence<br/>来源、时间、公开指标"]
S2 --> S3["3 · 筛选对标 / Filter benchmarks<br/>垂直、邻近、跨域"]
S3 --> S4["4 · 拆传播机制 / Decode mechanisms<br/>承重杠杆、不可迁移表面"]
S4 --> S5["5 · 迁移选题 / Transfer topics<br/>20 个候选、评分、Top 5"]
S5 --> S6["6 · 生产内容 / Produce content<br/>核心命题、自然产品落点"]
S6 --> S7["7 · 内容包装 / Package<br/>标题、封面、开头"]
S7 --> S8["8 · 质量门槛 / Quality gates<br/>流畅度、共鸣、AI 痕迹"]
S8 --> S9["9 · 归档复盘 / Archive and learn<br/>版本、假设、表现、结论"]
S8 -. "事实或来源问题 / fact or source issue" .-> S2
S8 -. "机制不匹配 / mechanism mismatch" .-> S5
S8 -. "主张或立场问题 / claim or positioning issue" .-> S6
各阶段的输入、输出和停止条件见 pipeline.md。
See pipeline.md for stage inputs, outputs, and stop conditions.
| 工具 / Tool | 用途 / Role | 代码保证什么 / Deterministic value | 测试 / Tests |
|---|---|---|---|
normalize_metrics.py |
解析 3.2万 等可见指标 / Parse visible metrics such as 3.2万 |
把混合格式统一成可比较数字 / Normalize mixed human-readable numbers | 内置自测 / Built-in self-test |
redbook_readonly.py |
封装小红书公开研究命令 / Wrap public Xiaohongshu research commands | 命令白名单、凭证参数拦截、超时、验证后不自动重试 / Allow-list, credential blocking, timeout, and no automatic retry after verification | 仓库安全测试 / Guardrail tests in the repository validator |
score_topics.py |
给选题卡评分和排序 / Score and rank topic cards | 分数有边界,硬性风险可直接淘汰 / Bounded scoring with hard-rejection rules | 内置自测 / Built-in self-test |
validate_titles.py |
检查标题长度和基础风险信号 / Inspect title length and basic risk signals | 同一标准可以重复执行 / Repeatable title checks | 内置自测 / Built-in self-test |
render_wechat_html.py |
把 Markdown 转成内联样式 HTML / Convert Markdown to inline-style HTML | 不同样式预设下稳定渲染 / Reproducible rendering across style presets | 内置自测 / Built-in self-test |
每次 push 和 pull request 都会执行:
Every push and pull request runs:
python tools/validate_repo.py
验证器会检查 15 个 Skill 的元数据、Agent UI 元数据、4 个工具自测、小红书只读边界,以及公开仓库是否混入敏感文件。
The validator checks metadata for all 15 Skills, Agent UI metadata, four tool self-tests, Xiaohongshu read-only guardrails, and whether private artifacts have entered the public repository.
运行时还守住几条底线:
The runtime keeps a few non-negotiable boundaries:
完整测试矩阵见 docs/testing-and-guardrails.md。
See docs/testing-and-guardrails.md for the full test matrix.
把本仓库链接发给 Codex,然后说:
Share this repository with Codex and say:
请使用 skill-installer,从 https://github.com/StopDisTrain/sdt-skills 安装
skills/下所有以sdt开头的 Skill。
English prompt:
Use skill-installer to install every Skill whose folder name starts with
sdtunderskills/from https://github.com/StopDisTrain/sdt-skills.
安装后的 Skills 会在下一轮对话中生效。
The installed Skills become available on the next turn.
把需要的 Skill 文件夹复制到 ~/.codex/skills/。每个 Skill 保留独立目录和自己的 SKILL.md,然后重新加载 Codex。
Copy the desired Skill folders into ~/.codex/skills/. Keep each Skill in its own directory with its SKILL.md, then reload Codex.
.
├── skills/ # 15 个可复用 Skills / 15 reusable Skills
├── docs/ # 脱敏案例与测试说明 / Sanitized cases and test notes
├── tools/ # 零依赖仓库校验 / Zero-dependency repository validation
├── .github/workflows/ # CI 自动校验 / CI validation
├── README.md
└── LICENSE
仓库只放可以公开复用的方法、代码和脱敏证据。原始账号链接、截图、研究导出、未发布报告、生成文档和 QA 渲染留在本地。
The repository contains reusable methods, code, and sanitized evidence only. Raw account links, screenshots, research exports, unpublished reports, generated documents, and QA renders remain local.
SDT 使用 MIT License 开源。保留原始版权和许可证声明后,可以使用、复制、修改和分发。
SDT is open-sourced under the MIT License. You may use, copy, modify, and distribute it while retaining the original copyright and license notice.