hanzhcn/laohan-skills

laohan-redian

真人口播①选题决策主写? OpenCLI 的当前信号生成观点/教程候选,核对小白受众承诺、抖音语义对齐和 PRIMARY 原始来源后,只选一个可生产且可复盘的主题。Use when 用户说"抓热点""AI热点""找选题""选题""今天做什么""redian",或 bianpai 路由到①;单独搜抖音时改用 laohan-douyinsousuo。

First seen May 24, 2026

Installation

$ npx skills add hanzhcn/laohan-skills --skill laohan-redian

Summary

真人口播①选题决策主写者;从 AIHOT 与已安装 OpenCLI 的当前信号生成观点/教程候选,核对小白受众承诺、抖音语义对齐和 PRIMARY 原始来源后,只选一个可生产且可复盘的主题。Use when 用户说"抓热点""AI热点""找选题""选题""今天做什么""redian",或 bianpai…

Also in this package

Other skills from hanzhcn/laohan-skills · top by installs.

npx skills add hanzhcn/laohan-skills

Browse all from hanzhcn/laohan-skills

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 11
License LICENSE
Default branch main
Open issues 0
Status Active

Skill metadata

Parsed from SKILL.md frontmatter.

Version3.2.0
Allowed toolsBash(*), Read, Write, Glob, Grep

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 15,843 B
  • docs SUMMARY.md 414 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 152 installs

SKILL.md

①选题决策

热点只用于发现,最终结果是一个可审计的生产决策:为什么现在做、给谁看、论点凭什么成立、抖音上有哪些重复角度、为什么淘汰其他候选,以及发布后如何按固定窗口复盘。

边界

  • 本 skill 是①唯一主写者,写 signals、candidates、source-health 和 00-选题.*
  • laohan-douyinsousuo 只写 00-抖音搜索证据.{json,md};同一 Agent 宿主按 bianpai 路由执行,不做 programmatic skill-to-skill 调用。
  • ②才写口播稿;①不生成正文、大纲段落或封面。
  • ⑤才做完整事实核验;①仍须给最终事实前提找到至少一条 PRIMARY 原始来源。
  • 不安装新浏览器、爬虫、Python runtime 或第三方 skill。抖音平台访问只用已安装 OpenCLI。
  • 同一事件可以形成观点候选和教程候选;受众任务、标题承诺和内容路径真正不同时可分别参加比较。②—④沿用选中 lane,不混写。

输入

Episode 模式必须读取:

  1. 本期 episode-config.json00-编排/ 冻结产物。
  2. 本期已显式登记的反馈快照;没有就记录 NOT_AVAILABLE,不得扫描旧 episode 猜经验。
  3. 本轮真实 signals 与抖音搜索证据。

标准 Episode 固定为 REVIEWGATED:AI自主完成发现与候选,但不得替Jeffrey选中。Jeffrey 明确给题时走 USERSEED,仍须给出至少一个真实替代候选、抖音取证、PRIMARY 证据和测量合同;最终同样经过情绪与表达欲筛选。

Jeffrey给出的是软件、方法或系列方向时,先走USERDIRECTIONRESEARCH:读取项目docs/系列选题研究与分期规格.md,完成四平台定向搜索、内容级拆解、需求判断、系列分期和单期资料包。它不运行与方向无关的9账号泛扫描来凑热度。只有DEMANDVALIDATED可进入三期以上系列,EXPERIMENTALONEOFF只进入单期,DIRECTIONREJECTED停止。正式episode仍须提供替代候选并经过Jeffrey情绪筛选。

工作流

1. 采集当前信号

先写00-选题-signals.json.discoverymode:无方向为AUTONOMOUSSCAN;Jeffrey已给方向为USERDIRECTIONRESEARCH。后者把已通过node scripts/check-series-research.mjsseriesresearchpath与SHA写入directionresearch,并把哔哩哔哩、小红书、抖音、知乎四路结果分别登记为signals来源。DEMANDVALIDATED至少两个平台有真实需求信号;EXPERIMENTALONEOFF只按研究包内已验证的官方新事件、Jeffrey亲历或小众任务依据进入单期,不强制伪造两个平台热度。

Episode 模式执行唯一确定性入口:

node ~/Documents/laohan-skills/laohan-redian/scripts/collect-topic-signals.mjs \
  --episode episodes/<slug>

AUTONOMOUSSCAN候选源固定为三条线:9个登记抖音对标账号逐账号近期扫描、全面热点扫描、script-pool/Jeffrey个人表达池.md。默认发现与展示优先级为BENCHMARKCREATOR(1) > BROADHOTSPOT(2) > PERSONALEXPRESSION(3);这是找题效率顺序,不是自动入选分数,个人题仍可在获得公共兴趣证据后胜出。全面热点默认 route 为 AIHOT、Hacker News、知乎、微博、36kr、B站、抖音热榜、头条、贴吧和虎扑;某一路失败如实记录,其他热点路继续,但9个对标账号任一失败都停止候选生成,正常空结果记EMPTY且算完成。需要缩小热点route时才传 --sources,不能借此跳过对标账号和个人池。

脚本只写:

  • 00-选题-signals.json
  • 初始 00-选题-source-health.json

脚本不选题、不访问旧 episode、不调用 douyin-ai.js

2. 标准化、去重、形成候选

读取 signals,按稳定 signal id 聚类同一事实事件;排除同 URL/同承诺/同路径的重复表达。对标账号只提炼母题、公众需求和异常信号,不复制标题、文案、案例或结论。同一事件只有在“帮观众作判断”和“带观众完成任务”分别成立时才生成两个形态。写 schema 3 00-选题-candidates.json,先用顶层 screeningsummary 留下筛选链路,再写至少两个真正不同的短名单候选。screeningsummary 只包含:

  • rawsignalcount:signals 中实际结果总数;eventclustercount:去重后的事件簇总数。
  • longlist:有效事件足够时记8—12条,不足8条时全部记录。每条含唯一 eventclusteridworkingtitle、非空 signalids、正整数 source_countdisposition: SHORTLISTED|REJECTED 和具体 reason
  • 每个最终候选的 eventclusterid 都必须在 longlist 中标 SHORTLISTED。不新增中间文件、额外节点或第二套打分器。

同一事件的观点/教程变体在受众任务、标题承诺和内容路径不同时可分别计数。每项必须有:

形成候选前恢复原版分析:以“AI/GPT/Claude/大模型/机器人/自动化/编程/副业”等直接词和“教育/职业/消费/创业/职场”等间接词标注相关度,但保留可能产生新角度的边缘信号;统计安装教程/进阶技巧/方法论/对比评测/实战/资源推荐等内容类型;标出多平台共振、单平台独有、已拥挤角度和竞品未覆盖机会。它们用于扩大候选,不替代后面的 PRIMARY 与抖音关键词核验。

  • 唯一 id、稳定非空 eventclusterid、非空 whynowtitlecontentform: opinion-video|tutorial-videoaudiencelevel: BEGINNER|INTERMEDIATE|ADVANCEDaudienceproblemaudience_promisethesis
  • candidateorigin 必须登记 primarylane、对应的 priorityrank、非空 originsignalidscorroboratinglanes。交叉印证可以提高可信度,但不能把个人表达来源伪装成对标爆款来源。
  • tension 必须登记 type: CONFLICT|MISCONCEPTION|COUNTERINTUITIVE|TRADEOFFcommonassumptionjeffreyposition 和一句可由正文兑现的 conflict_statement。只写领域名、产品发布或“值得关注”不算候选。
  • creatorfit 必须写清 basis: FIRSTHANDEXPERIENCE|BUILTORTESTED|OWNEDEVIDENCE|LONGTERMPRACTICE|RESEARCHEDJUDGMENT|NOTESTABLISHEDwhyjeffreydistinctivejudgment。它回答“为什么由 Jeffrey 讲、他的依据是什么、相比通用复述多了什么判断”。SELECTED 不允许 NOTESTABLISHED;没有亲历时可以使用 RESEARCHED_JUDGMENT,但必须形成有证据边界的独立判断,不能把“我也关注了”冒充个人优势。
  • assumedprerequisitesjargontoexplain 字符串数组。BEGINNER 候选必须把标题和论点里的关键工具、命令、迁移/导入概念列入解释清单,不能只提高 audiencefit 分。
  • 非空 signalidsevidenceids
  • 非空 platformqueryintentplatformalignmentstatus: ALIGNED|ADJACENT|CONTRADICTED|UNRESOLVED|UNAVAILABLE、非空 rationaleevidenceids。有平台结果时 evidence ids 必须真实;平台访问失败时写 UNAVAILABLE 和空数组。
  • contentgapstatus: CONFIRMED|NOTCONFIRMED|UNAVAILABLE、非空 rationaleevidence_ids。只有平台直接提供搜索量、供给或缺口证据时才能写前两种;搜索结果条数、互动字段缺失或模型判断一律不能冒充内容缺口。UNAVAILABLE 合法且不参与机械淘汰。
  • 非空 claimevidencemap;每条含唯一 claimid、非空 claimevidenceids。它要把技术事实绑定 PRIMARY;平台证据可用时,把“平台有人关心什么”绑定 PLATFORMSIGNAL,不能让相邻关键词替另一个论点背书。平台 UNAVAILABLE 时不虚构 PLATFORMSIGNAL claim。
  • scorecard 七维整数 1—5:audiencefitevidencestrengthplatformrelevancedifferentiationcreatorfitproductionfeasibilitylearningvalue
  • 非空 rationale。Jeffrey筛选前全部使用 disposition: AWAITING_JEFFREY;AI只展示候选、证据与风险,不得直接SELECTED。

分数是可挑战的候选比较,不是流量预测。热度不能替代受众价值、证据强度、差异化或可拍性。SELECTED 可为 ALIGNED、有明确差异化解释的 ADJACENT,也可在 discovery 与 PRIMARY 充分时为如实说明缺失范围的 UNAVAILABLE;平台缺失降低 platformrelevance 置信度,但不能单独淘汰候选。CONTRADICTED|UNRESOLVED 不得入选。教程候选写成确定步骤前仍必须在 tutorialproof 登记 status: VERIFIED、本期内 evidencepathevidencesha256、非空 version_boundaryrecovery

3. 对短名单做抖音关键词验证

为 1—3 个短名单各设计一个具体查询,交同一宿主执行 laohan-douyinsousuo episode 模式。必须得到 00-抖音搜索证据.json.md 后才继续。

  • OK:引用真实结果 id,写清查询实际证明的观众意图。直接支持候选标题承诺、受众任务和 why_now 时标 ALIGNED;只支持同一产品、迁移热度或相邻概念时标 ADJACENT。优先补充更直接查询,但不因缺少完全同标题内容自动淘汰差异化新角度。
  • EMPTYORFIELD_UNAVAILABLE:只写“平台证据未决”,不得写“无人做/蓝海”。
  • OpenCLI 登录或 adapter 全部失败:保留真实 FAILED 证据,把 platformalignmentcontentgapUNAVAILABLE;只要 discovery 与 PRIMARY 足够,继续比较,不把平台缺失当卡点。

4. 回到 PRIMARY 原始来源

对最终候选的事实前提查找官网、官方公告、论文、产品文档或原始公开记录。平台热榜、搜索结果、媒体转述只能是 PLATFORM_SIGNALSECONDARY

把 PRIMARY 与 PLATFORMSIGNAL evidence 写入候选文件;每条有稳定 idsourcesourcetypeurlretrieved_at。缺 PRIMARY 时缩窄论点为可证范围;仍无法成立就换候选或 BLOCKED。

5. Jeffrey情绪与表达欲筛选

候选完成后进入WAITINGFORJEFFREYEMOTIONSELECTION。一次展示3—5个候选,要求Jeffrey基于真实第一反应选择一个,或明确选择“全部无感”。

  • 选中一个:记录firstreactionchallengeoradditionfirsthanddetailwouldsaywithout_heat=true。先把唯一候选改为SELECTED、其余改为REJECTED,再写schema 1 00-选题-Jeffrey筛选.json绑定当前候选SHA和唯一候选ID。
  • 全部无感:写status=REJECTEDALL,绑定当前候选SHA,并记录rejectionreasonstrongestnearmissrescandirection。进入TOPICRESCANREQUIRED,在同一01任务回到三路扫描;不得勉强SELECTED、生成最终选题或进入②。新一轮候选替换旧候选前,必须把这四项与旧候选SHA原样写入新00-选题-candidates.json.screeningsummary.rejectionhistory[];validator据此从TOPICRESCANREQUIRED切回WAITINGFORJEFFREYEMOTION_SELECTION。最终接受记录可以覆盖筛选文件,但否决历史继续保留在候选文件中。

没有SHA闭合的Jeffrey记录,不得生成最终选题。

6. 写最终决策与 source health

更新 00-选题-source-health.json,每路记录:

  • 唯一 sourceidsourcerole: DISCOVERY|BENCHMARKCREATOR|PERSONALEXPRESSION|DOUYINSEARCH|PRIMARYPROOF。schema 3必须保留后两条本地发现角色;个人表达池允许EMPTY,对标账号只允许完整扫描后的OK|EMPTY
  • 实际 commandorurlattemptedatstatusresultcount
  • 本期相对 resultfile 与真实 resultsha256
  • FAILED 写 error;SKIPPED 写 reason

状态必须一致:OK 条数大于 0,EMPTY/FAILED/SKIPPED 条数为 0。至少一条 DISCOVERY 为 OK、一条 DOUYINSEARCH 有真实尝试记录、一条 PRIMARYPROOF 为 OK;DOUYIN_SEARCH 可以 FAILED,但必须绑定本期抖音证据文件与原始错误。

写 schema 3 00-选题.json,保留原schema 2字段并绑定Jeffrey选中的候选。最后执行:

node ~/Documents/laohan-skills/laohan-redian/scripts/check-topic-contract.mjs --episode episodes/<slug>

只有输出PASS redian topic contract schema=3才算①完成。

  • schemaversion: 2selectedcandidateid、非空 rejectedcandidate_ids
  • 原样复制选中项的 contentformaudiencelevelaudiencepromisecreatorfitassumedprerequisitesjargontoexplainplatformqueryintentplatformalignmentcontentgapclaimevidence_map
  • audiencethesisevidenceselectionrationalenotdo_reason
  • evidence 全部属于选中候选,且至少一条 PRIMARY;平台可用时至少一条 PLATFORMSIGNAL,platformalignment.status=UNAVAILABLE 时可没有。
  • experiment 含唯一主要 intervention、合法 metrickeys、正整数 T+Nobservationwindowunit: DAY 和逐键 metrictargets

每条 metric target:

{
  "key": "avg_duration_sec",
  "direction": "INCREASE",
  "baseline_ref": "recent_5_median",
  "measurement_source": "douyin_creator_center"
}

最后写 00-选题.md,只解释机器合同里的真实决策,不新增未登记事实。

失败处理

触发条件 处理
单一 discovery source 失败 记录 FAILED;其他来源满足角色合同可继续
所有 discovery source 无结果 BLOCKED,不凭模型记忆选题
抖音返回合法空数组 记录 EMPTY;不得推断没有竞争
OpenCLI 登录/adapter 全路径失败 平台证据记 UNAVAILABLE 并继续;不安装替代爬虫,不推断蓝海
最终候选无 PRIMARY 缩窄论点或换候选;仍无则 BLOCKED
Jeffrey对全部候选无感 REJECTEDALL并进入TOPICRESCAN_REQUIRED;按否决原因重新扫描,不进入②
平台结果只支持相邻话题 ADJACENT,补充查询;仍相邻时如实说明差异化与风险,可参加最终比较,不得冒充直接对齐
教程候选没有本机真实执行证据 保持 REJECTED;可保留为待验证候选,不能写成教程已可交付
候选不可在既有⑬指标测量 换 intervention/metric 或换候选

反模式

❌ “三个平台都热,所以就做这个。”

✅ “候选 C02 同时解决目标受众问题,PRIMARY 支持事实前提,抖音证据显示现有内容集中在功能介绍,本期以真实工作流代价形成差异;C01/C03 因证据弱或不可拍被淘汰。”

❌ “抖音有人搜 Claude Code 迁移,所以能证明‘验证闭环’是当前平台需求。”

✅ “该结果只证明迁移/导入需求,标 ADJACENT;继续搜索验证失败、上线回归等直接意图。若仍无直接结果,可把‘验证闭环’作为差异化观点参加比较,但明确平台证据只支持相邻需求。”

❌ “搜索 0 条,所以这是蓝海。”

✅ “搜索执行成功但返回 0 条,记为平台证据未决,不据此判断竞争度。”

非 Episode 模式

用户只要热点简报时,可以执行同一采集脚本到临时目录后返回当前信号摘要;不写 episode 真源。用户只要搜抖音时直接路由 laohan-douyinsousuo