Summary
分析番茄等网文平台的长篇小说与短故事后台数据,校验统计口径和刷新状态,拆解分发、点击、阅读、前三章/分段留存、回访与追更漏斗,识别真实异动并下钻到具体章节或段落,形成可验证的改文实验。用于 story-data-analyze、数据分析、后台数据、推荐数据、在读人数、跟读率、读完率、短故事点击率/15秒/30秒/60秒…
qin1473692580-ux/oh-story-claudecode
分析番茄等网文平台的长篇小说与短?
npx skills add qin1473692580-ux/oh-story-claudecode --skill story-data-analyze
分析番茄等网文平台的长篇小说与短故事后台数据,校验统计口径和刷新状态,拆解分发、点击、阅读、前三章/分段留存、回访与追更漏斗,识别真实异动并下钻到具体章节或段落,形成可验证的改文实验。用于 story-data-analyze、数据分析、后台数据、推荐数据、在读人数、跟读率、读完率、短故事点击率/15秒/30秒/60秒…
Related neighbors and high-traction skills in the same topics — useful to compare before installing.
Guidance for distinctive, intentional visual design when building new UI or reshaping an existi…
866.4K installsBrowser automation CLI for AI agents. Use when the user needs to interact with websites, includ…
810.4K installsReview UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "chec…
617.3K installsBuild, deploy, evaluate, optimize, fine-tune, and manage Microsoft Foundry agents, models, and …
576.5K installsDebug Azure production issues on Azure using AppLens, Azure Monitor, resource health, and safe …
568.9K installsOther skills from qin1473692580-ux/oh-story-claudecode · top by installs.
npx skills add qin1473692580-ux/oh-story-claudecode
Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.
main
Parsed from SKILL.md frontmatter.
Files included with this skill beyond the listing page.
SKILL.md
34,812 B
SUMMARY.md
548 B
Spawn 版本提示(不阻断 spawn):先读取项目根
.story-deployed的agentsversion。与本版agentsversion: 39不一致时(标记缺失、字段缺失/非整数、小于或大于 39)照常按文件存在性检查并 spawn,同时报告Notice: agents bundle 版本不匹配(项目 {N},本版 39)并提示重新运行/story-setup后新开会话;大于 39 时额外提示先更新 oh-story-claudecode,不要用本地旧版 setup 降级覆盖。只有 agent 文件缺失、或运行时不暴露 custom agent 时才降级 solo/direct,报告Fallback: ... -> solo。本 Skill 的具体落点仍按 lane 降级矩阵映射为degraded/solo;当前运行时定义 malformed 与 registry 缺失同样视为 agent 不可用。
本 Skill 是多 Agent 工作流的唯一入口,不是一份逐项看数清单。它以机器可读指标目录、指标树和诊断路由为共同语义层,完成以下闭环,不要停在“数字总结”或“样本不足”:
数据可信 → 漏斗定位 → 异动定级 → 阅读对应文本 → 提出因果闭合的修改 → 发布后验证
指标体系固定分为五类,不得把它们平铺成互不相干的单点指标:
长篇的各层通常来自不同窗口或 cohort,不能把整棵树伪造成一个精确乘法公式;短故事同一快照的展示→阅读→15秒→30秒→60秒→触底在口径一致时可以严格分解。
每次至少回答六个问题:
把“方向”和“结论强度”分开。小样本也要如实报告绝对增量和上升/下降方向,但不得伪装成因果结论。
处理番茄数据时按任务读取以下文件:
dictionary/metrics.v1.json、dictionary/metric-tree.v1.json 与 dictionary/diagnostic-routes.v1.json;它们分别是指标语义、上下游关系和异动下钻的机器权威。需要复用方法或案例时,先读 数据追踪/knowledge/index.json,再读 数据追踪/knowledge/methods/index.json 或 数据追踪/knowledge/cases/index.json,最后只加载命中的条目。知识条目是辅助证据,不能覆盖当前官方口径或当前 run 的事实。
指标定义与后台当前 tooltip 不一致时,以后台当前官方定义为准,并把差异记录到报告和参考文件;不要凭指标名猜口径。
minimum-compatible-lower-bound/display_only/non-authoritative/not-an-estimate:真实 cohort 可为任意更大的兼容解,不得跨快照相减成新增人数,也不能复用滞后的 follow 字段作同一分母。- 该下界不是人数估算,不得进入样本门槛、显著性检验、置信区间、MDE、绝对损失或“可挽回人数”计算。 - 找不到与本次问题同 cohort、同口径且权威的样本分母时,必须登记 samplesizequalified=false、samplesize=0、samplesizeauthoritative=false、sampleaggregation=unavailable 和非空 sampleunavailabilityreasons;analysis 使用 samplemetricid=UNAVAILABLE。这里的 0 是“合格样本不可得”的状态编码,不是“真实读者为 0”,禁止拿别的计数或兼容下界代替。
UNATTESTED_PROCEDURAL 记录、没有宿主签名,即使用户在会话中明确同意也只形成可审计交接,不能由本 run 自动落文或发布。full:五角色均可用,执行完整工作流。degraded:某一 lane 不可用,按 workflow contract 的降级矩阵执行并在报告中列出缺失能力。solo:runtime 无 custom agents 时由主 Agent 严格分阶段执行,但不得声称做过独立复算或监督;结论强度按缺失 gate 下调。支持 custom agents 的运行时优先使用以下逻辑角色。先识别当前运行时,只检查对应目录:TRAE Code 为 .trae/agents/{agent}.md,Codex 为 .codex/agents/{agent}.toml;其他运行时只有部署了等价定义且暴露子 Agent 工具时才能进入 full。TRAE Code 的 .md 必须含合法 YAML frontmatter(name、description 必填,tools / disallowedTools 为逗号字符串),并通过内置 Agent 智能体选择同名 subagent;不要把 Claude 的 subagenttype 参数原样传给 TRAE。Codex 使用同名 agenttype。当前运行时对应目录或 registry 不完整时,按 [references/workflow-contract.md](references/workflow-contract.md) 的 lane 降级矩阵进入 degraded / solo,不得拿磁盘上其他端残留定义冒充已注册 Agent。项目中仅并存 .zcode/ 不是当前运行时降级的依据。
WorkBuddy 使用有上限的物理 Agent 池,不再把五个逻辑角色全部注册为同名物理卡。WorkBuddy 物理注册只检查 story-data-fetcher 与 story-data-readonly-runner:前者保留 Bash 拉取能力,后者仅有 Read, Glob, Grep,承载其余四个只读逻辑角色。项目模式要求 .codebuddy/agents/ registry 真实列出这两个原始名称;plugin-only 模式只在当前 registry 真实列出时使用 oh-story:story-data-fetcher 与 oh-story:story-data-readonly-runner,不从 manifest 或磁盘文件推测注册成功。
五个逻辑角色为:
story-data-fetcherstory-data-metrics-analyststory-data-method-validatorstory-data-text-improvement-plannerstory-data-supervisor主 Agent 是唯一编排器和最终报告写入者。所有子 Agent 的 prompt 必须自包含 run_id、作品身份、冻结输入及 hash、截止日、改动事件、允许输出和禁区;子 Agent 不得递归 spawn。TRAE Code 每次调用都在内置 Agent 中明确选择上表的精确名称,并把完整自包含合同作为任务正文;若 Agent 工具未列出该名称,立即按 lane 降级,不通过普通对话假装完成独立角色复算。
WorkBuddy 的 story-data-fetcher 仍把完整 raw_capture 合同直接放进物理 fetcher 的 prompt。调用其余四个逻辑角色时,主 Agent 必须调用物理 story-data-readonly-runner,且 prompt 只能用以下封装:
{
"logical_role": "<story-data-metrics-analyst|story-data-method-validator|story-data-text-improvement-planner|story-data-supervisor>",
"logical_role_card_path": "<已解析的真实绝对路径>",
"project_abs_path": "<当前作品项目真实绝对路径>",
"task_contract": {"role": "<与 logical_role 相同>", "run_id": "<run_id>", "lane": "<该角色 lane>", "project_abs_path": "<与顶层字节一致>", "...": "<该逻辑角色的其余完整合同>"}
}
logicalrolecardpath 项目模式只能解析到 <项目根>/.codebuddy/skills/story-data-analyze/references/workbuddy-role-cards/<logicalrole>.md;plugin-only 模式只能解析到 CodeBuddy 已内联替换后的 <CODEBUDDYPLUGINROOT>/skills/story-data-analyze/references/workbuddy-role-cards/<logicalrole>.md。传入 Runner 前必须取真实绝对路径,确认文件存在、直接父目录为该模式的固定 role-card 根、文件名与 logicalrole 精确对应,且不含未解析占位符。Runner 或对应角色卡缺失、frontmatter 不合同、逻辑映射不唯一,均立即按该 lane 降级;不得改用旧的同名物理卡,不得把磁盘卡片存在冒充 registry 可用。
INIT → RAW_CAPTURED → DATA_QUALIFIED → WINDOW_BOUND → METRICS_READY
→ ANALYZED → ANALYSIS_VERIFIED → TEXT_DIAGNOSED → SUPERVISED → REPORT_COMPLETE
每一步通过 scripts/data_workflow.py 记录不可变 artifact 和 hash;禁止手改 analysis-runs 的 manifest。validator 或 supervisor 退回时,从最早错误阶段新建 attempt,最多三轮,之后标 BLOCKED。
三次是整个 run 共享的全局 RETURN 上限,不是“每个 Agent 三次”或“每种根因三次”。validator 与 supervisor 合计最多接受 3 次 RETURN,第 4 次 RETURN 请求直接把 run 标为 BLOCKED;根因计数只用于诊断,不能扩大总额度。
固定顺序:抓取 → 确定性标准化与质量门 → 指标分析 → 独立方法校验 → 文本诊断 → 看守 → 主 Agent 渲染日报。文本 Agent 的输入合同要求 validator PASS,因此不得提前读取正文;最多只能并行预载不含正文的公开方法,不能记录为有效 text artifact。
validator 的“独立复算”不是复述 metrics artifact:必须对每条 fact 重新打开冻结 raw/normalized/window 源,按其 JSON Pointer 读取 observation,并按记录的 calculation expression 复算;事实选择器、source refs、observations、formula、calculation 和结果全部一致且无遗漏时才可 PASS。
各 Agent 返回统一 envelope,工作流 CLI 记录的是角色专属 lane payload。主 Agent 必须先做确定性 adapter:验证 envelope 的 runid/role/status/inputhashes,再只提取 schema 规定的 rawcapture/dataquality/analysis/validation/text_diagnosis/supervision 对象;禁止把整个自然语言响应或整个 envelope 原样塞进 record --payload。
先确定:
若同时分析长篇和短故事,分别建立漏斗和结论,不合并样本。
用户要求最新数据或例行监控时,对本项目执行:
cd "<项目根>"
for PYBIN in python3 python py; do "$PYBIN" -c "" 2>/dev/null && break; done
"$PYBIN" "数据追踪/拉取番茄数据.py"
用户明确指定本地历史快照、上传数据或只询问分析方法时,不擅自拉取新数据;先核验给定数据的截止日和作品 ID。
随后完成五项检查:
LOGIN_INVALID 时停止,不使用旧数据冒充最新数据;通知用户重新登录。date 为运行日、data_until 为前一日;平台中午更新前抓到的占位数据标记“平台尚未更新”。null、空字符串、缺字段和真实 0;不得自动把前三者转成 0。若当前问题所需样本分母不可从冻结源权威复算,不要拿日阅读人数、14 日在读、兼容整数下界或别的资格人群替代。按“样本不可用”编码继续生成事实与缺失节点,最终只能给 样本不足/SAMPLE_INSUFFICIENT,但仍可如实报告不依赖伪分母的原始观测。
若 raw 的 shortquery.scopeverifiedagainstui=false,短故事 yesterdaysum*字段只能称“该快照接口原值”;打开后台核验当前周期后,才能称累计或单日口径。
输出数据质量标签:可分析 / 部分字段滞后 / 平台未更新 / 登录失效 / 口径未知。只有可用字段可以进入后续判断。
读取 数据追踪/番茄数据日志.md 的改动登记,为每项改动建立实验卡:
| 字段 | 必填内容 |
|---|---|
| 改动 | 书名/封面/简介/具体章节与段落/更新恢复等 |
| 上线时间 | 精确到分钟,区分保存与实际发布 |
| 目标人群 | 上线后实际接触新版的读者 |
| 主指标 | 该改动最直接影响的一个指标 |
| 护栏指标 | 不应因改动而下降的上游或下游指标 |
| 修改前基线 | 优先取 3–7 个可比完整数据日,至少保留最后一个改前快照 |
| 最小有意义变化 | 预先写明数值及来源:本书历史、业务目标或可检测效应;不得看完结果后倒定 |
| 首个覆盖窗口 | 上线后真实读者开始看到新版的窗口 |
| 首个完整自然日 | 用于更稳定比较,不等同于“首次覆盖” |
| 干扰项 | 渠道、断更/复更、发新章、节假日、自访、同时改包装等 |
若用户确认某数据日的所有实际访问都发生在改动后,该日可视为已覆盖新版;完整自然日只提高可比性,不能机械地把前一窗口判成未覆盖。
工作流的机械日期绑定统一使用 Asia/Shanghai:先把带时区的 publishedat 转为上海时间;firstcovereddatadate 等于该本地日,只有恰好在本地 00:00:00 发布时 firstfulldatadate 才等于同一天,否则为下一天。再用最新快照的 datauntil 唯一推导三种覆盖状态:
data_until < first_covered_data_date
→ NOT_COVERED
first_covered_data_date ≤ data_until < first_full_data_date
→ PARTIAL_DAY_COVERED
data_until ≥ first_full_data_date
→ FULL_DAY_COVERED
这三个状态描述“按统计日是否可能覆盖版本”,不证明当天每个访问者都看到新版;线上版本仍须单独给 version_evidence。不得手选更有利的覆盖状态,也不得把部分日覆盖写成完整日证据。
每次同时比较:
按以下顺序查看,但每层都保留事实表:
R1/R2/R3/R4;只有存在权威 cohort 基数或接口绝对人数时才还原 A1/A2/A3/A4。R4/A4 用于判断第3章是否把人带入第4章。有权威人数时固定计算:
F1→2 = A2 / A1;L1→2 = A1 - A2
F2→3 = A3 / A2;L2→3 = A2 - A3
F3→4 = A4 / A3;L3→4 = A3 - A4
只有绝对人数来源权威、版本与口径可比时,才计算修改窗口增量 ΔA1/ΔA2/ΔA3/ΔA4。当 ΔA1 > 0 时可报告 ΔA2/ΔA1,但必须命名为“窗口增量到达比”,不得称为严格的新读者跟读率。若只有展示到达率,则直接计算 R2/R1、R3/R2、R4/R3;最小兼容下界只能做单快照一致性检查,禁止计算 Δ下界。
按以下顺序查看:
展示 → 阅读 → 15秒 → 30秒 → 60秒 → 触底 → 互动/转化
固定计算:
点击率 = 阅读 / 展示
15秒留存 = 15秒人数 / 阅读人数
15→30承接率 = 30秒人数 / 15秒人数
30→60承接率 = 60秒人数 / 30秒人数
60秒后触底率 = 触底人数 / 60秒人数
整体触底率 = 触底人数 / 阅读人数
同时报告每段损失人数,例如 阅读人数 - 15秒人数。累计口径与按日求和口径分开;同一读者跨日可能在区间数据中重复,不能和全周期去重累计直接比较。
严格按 [references/anomaly-rules.md](references/anomaly-rules.md) 执行,先把变化分成:
异动识别后不得直接跳到正文。对每个命中节点执行 dictionary/diagnostic-routes.v1.json 中的固定路线:
每条异动必须保存 metric_id、当前值、基线、绝对变化、相对变化/百分点、分子分母、历史噪声、MDE、样本状态、必查邻接节点结果、替代解释和证据等级。若目录未给出万能阈值,就使用本书同口径历史基线;不得临时创造“平台及格线”。
异动的基线和当前值不得手抄。baselinefact 与 currentfact 必须分别用 metricid + 完整 dimensions 唯一命中冻结事实表中的一行;baseline/current 必须等于所选事实值,delta = current - baseline,effectsize 使用同一带符号、保单位的差值,direction 由差值机械推导。selector 命中 0 行或多行、事实非数值、delta 无法复算时,该异动不能通过分析门。
给关键判断标注证据性质:原始观测 OBSERVED、可复算派生 DERIVED、相关 ASSOCIATION、待验证假设 HYPOTHESIS;只有随机实验或可信准实验才使用 CAUSAL。
优先级不要只看最大百分点,依次考虑:
只有节点进入人数为权威绝对人数时,才可计算“可挽回人数”辅助排序:
可挽回人数 ≈ 该节点进入人数 ×(合理目标转化率 - 当前转化率)
“合理目标”优先取作品自身稳定历史、同渠道改前基线或预先设定的最小有意义变化,不使用未经证实的平台万能及格线。
最终状态与方向分开写:
样本不足;方向上行/下行/持平改善/恶化(方向性,未达强结论)改善/恶化(较强证据)无明显变化数据未覆盖改动样本受自访污染结论必须逐项绑定改动,不得只给整本书一个状态。analysis.changeassessments[] 必须与 windowbound.changes[] 的 changeid 一一对应,同时保留覆盖状态、线上版本状态、实际评估的目标指标、证据和理由。改善/恶化不是简单的“数值向上/向下”:必须根据 metrics.v1.json 中该指标的 preferreddirectionbymetric 解读;例如流失人数下降才是改善。未覆盖的改动必须使用“数据未覆盖改动 + UNKNOWN”;样本不合格时不得用单个比例方向把改动升格为改善或恶化。
不要强行只选一个瓶颈。输出“首要约束、次要风险、暂不可判定项”;优先解决最上游且可挽回人数最多的有效异常。
只有完成漏斗定位后才读正文,但一旦提出改文建议,必须真的读取数据指向的文本。不得只凭指标给“加强钩子、加快节奏”之类空话。
执行顺序:
具体映射和检查表见 [references/text-drilldown.md](references/text-drilldown.md)。
每项建议必须使用以下结构:
数据证据:哪个分子/分母在什么窗口异常
文本证据:具体章节/段落存在什么可观察问题
流失机制:该问题为什么会让这一节点的读者离开
修改动作:删/移/压缩/前置/补偿/升级/重写哪些内容
因果链:修改如何改变读者当下判断,从而影响哪个主指标
护栏:哪些上游承诺、人物逻辑、后续伏笔和指标不能受损
验证:何时、用什么基线和样本判断成功或失败
提交建议前做“逻辑闭环检查”:
若可用子 Agent,修改方案至少经过一次结构/读者体验审查;涉及设定或跨章因果时,再经过一致性检查。审查目标是验证因果链和副作用,不是追求辞藻。
若未来运行宿主提供 HOST_ATTESTED 授权并允许“本次数据分析 run”执行修改或发布,执行命令还必须携带并与授权 artifact 精确匹配:
--analysis-run <run_id>
--analysis-proposal <proposal_id>
--analysis-action modify_text|modify_packaging|publish
--analysis-target <exact_target>
--analysis-target-sha256 <remote_payload_sha256,仅远端目标必需>
textdiagnosis.proposals[] 必须先登记相同的 proposalid/action/target/targetsha256before。hook 会核验 supervisor PASS、完整 hash 链、authorization 状态以及 proposal/action/target/hash 四方一致;这些只是未来受信执行器的附加条件,不是当前的执行许可。普通日更不携带这些参数,不受数据分析门禁影响。
当前运行时只能记录 attestationstatus=UNATTESTEDPROCEDURAL:它把用户消息 hash、事件 ID、run、chain head、proposal、action、target 与改前 hash 绑定成可审计记录,但没有宿主提供的不可伪造用户事件签名。自动执行门要求 HOSTATTESTED,而当前运行时不能生成该状态。因此即使写入了 APPROVED 程序性记录,也禁止由本工作流自动改正文、改包装或发布;只能把方案交给用户人工执行,或由将来能提供宿主签名的受信执行器重新授权。命令参数和 hook 命中都不能把 UNATTESTEDPROCEDURAL 升格成可执行授权。
发布前记录:原文位置、修改摘要、发布时间、主指标、护栏指标、预期方向、最小有意义变化和干扰项。
发布后:
以下为内部分析准则,不是番茄官方阈值:
< 30:状态写“样本不足”;仍报告原始观测、展示率方向和已有的权威绝对变化,不把兼容下界当样本或人数,不做因果归因。30–99:只下方向性结论;要求绝对人数与比率同向、可比窗口至少两次同向或聚合窗口超出自身基线噪声。≥ 100:结合置信区间、预设最小有意义变化和护栏指标,才可给较强结论。这里的“有效样本”仅指 samplesizequalified=true 且全部样本证据权威、可从冻结源复算的分母。样本不可用时按 samplesize=0 + samplemetric_id=UNAVAILABLE 进入“样本不足”,不能把这个状态编码解释为实际零读者。
样本量不是唯一条件。即使人数足够,只要渠道、版本、统计口径或推荐阶段不可比,也要降级。
先给一句不回避方向的结论,再给证据:
# 一句话结论
数据截至 YYYY-MM-DD;[改动]当前状态为[状态],方向[上行/下行/持平];主要瓶颈在[漏斗节点]。
## 1. 数据质量与覆盖
- 更新时间/截止日:
- 可用与滞后字段:
- 改动覆盖窗口:
- 样本与污染风险:
- 指标目录/方法/运行 ID:
## 2. 漏斗对比
| 节点 | 修改前基线 | 前一快照 | 最新 | 绝对变化 | 转化变化 | 状态 |
## 3. 异动与问题定位
- 最大有效异动:
- 受影响绝对人数(仅权威来源;否则写不可得):
- 首要约束 / 次要风险 / 暂不可判定项:
- 已完成的上游/同层/下游/护栏联查:
- 排除的替代解释:
## 4. 文本下钻证据
- 位置:第N章第X段 / 第X–Y字
- 原文现象:
- 读者心理与流失机制:
## 5. 修改实验卡
- 具体修改:
- 逻辑因果链:
- 主指标:
- 护栏指标:
- 最小有意义变化及来源:
- 风险与一致性检查:
## 6. 验证计划
- 首个覆盖窗口:
- 主要复盘窗口:
- 成功/失败判据:
- 下一步:
## 7. 工作流验收
- Requested / Effective Mode:
- Validator:PASS / REWORK / NOT_RUN
- Supervisor:PASS / RETURN / BLOCKED / NOT_RUN
- 证据强度上限与未过门禁:
日报可以压缩,但必须保留:数据截止日、数据是否正常、当前方向、绝对增量、前三章或短故事分段漏斗、瓶颈位置、具体修改/观察动作、下一验证时间。
知识层只维护两类内容:
methods/:指标口径、计算方法、异动检测、归因边界、文本映射、实验与复盘方法;更新时记录来源、适用范围、版本和反例。cases/:经完整门禁复核的分析案例;必须保存数据上下文、指标版本、异常与联查、文本证据、修改假设、替代解释、结果状态和适用边界。案例分开标记“分析质量已验证”和“改动效果已验证”。没有发布后合格窗口的数据,只能是 outcomeunverified;无效果、回退和无法判断的高质量案例同样值得保留,不得只沉淀成功故事。任何晋升都通过 workflow CLI 的 promote-case 或 promote-method,并由 REPORTCOMPLETE + validator PASS + supervisor PASS + 完整 hash 链 背书;方法修订必须创建新版本并声明 supersedes,不得覆盖旧版本。
verifiedimprovement / verifiedregression / verifiednoeffect 还必须由至少两个不同冻结最新快照窗口的完整验证 run 支持;run ID 不同但 latestsnapshot.sourcesha256 + datauntil 相同仍算同一个窗口,禁止复制同一快照制造“复现”。每个验证 run 还须完整日覆盖、线上版本已验证、权威合格样本不少于 100、validator/supervisor 通过,并与同一 changeid 和结果方向一致。
晋升采用事务式写入:promotion artifact 内嵌待晋升知识文档并进入 hash 链,随后创建知识文件。崩溃留下的未提交 .attempt-.json 或已提交但缺失的知识文件,只能运行 scripts/dataworkflow.py recover --run-id <runid> 恢复;recover 会把孤儿 attempt 移入该 run 的 recovery/<timestamp>/ 隔离目录(不删除),并且只从已提交、hash 匹配的内嵌文档重建缺失知识。recover 不推断业务事实、不推进状态,也不能修复无有效证据链的产物。
把这些句子改写成有口径、有绝对人数、有方向、有不确定性和可验证动作的结论。