copy-brain
把用户指定的公众人物复制为一个可调用的思维skill。
核心不是模仿语气,而是复刻“大脑”。 语气、措辞只是表层;真正要捕捉的是这个人如何思考、如何权衡、如何在不确定中做决策。最终的 skill 应当让 agent 在新问题上用这个人的思维方式推理出他可能会给的答案,而不是套用他说过的话。 路径约定:本
SKILL.md所在目录即 skill 根目录(下称<SKILL_DIR>)。 下文所有路径都相对于<SKILL_DIR>。运行任何脚本前,先cd到<SKILL_DIR>(即本 SKILL.md 所在目录)再执行;输出/模板等路径同理相对解析。
工作流程
步骤 0 / 1:检查 output 目录并确定人物
- 列出
<SKILL_DIR>/output/下的.md文件(忽略.gitkeep;忽略误留的.json等中间文件,见步骤 4.1)。 - 若已有 skill 文件:列给用户看,询问「是否复用已有的某个 skill,还是创建新的人物 skill?」。
- 选择复用 → 读取该文件并据此完成用户后续请求,结束本流程。
- 若目录为空:直接询问「你想复制哪个公众人物的思维?」。
拿到人物名后,先做轻量确认:该名字是否唯一(如同名时让用户补充领域/国别),并确定一个用于文件名的 slug(拼音或英文,小写、连字符)。
步骤 2:检查并说明 API Key
本 skill 可用三个数据源(推荐但非必需,缺哪个就跳过哪个)。请用户按下表的变量名在电脑的系统环境变量里配置对应的 API Key:
| 服务 | 环境变量名 | 作用 | 申请 |
|------|-----------|------|------|
| Tavily | TAVILY_API_KEY | 内置搜索不佳时的兜底搜索(结果旧 / 多语言 / 匹配差),擅长非中文/非中国内容 | https://app.tavily.com |
| ScrapeBadger | SCRAPEBADGER_API_KEY | 获取人物在 X(Twitter)的资料与发帖 | https://scrapebadger.com/dashboard |
| RedFox | REDFOX_API_KEY | 获取小红书、微信公众号文章 | https://redfox.hk/dashboard/keys |
向用户说明上表(作用 + 推荐配置)。配置方式(设置后需重开终端 才生效):
# Windows PowerShell(持久化到用户环境变量)
setx TAVILY_API_KEY "你的key"
setx SCRAPEBADGER_API_KEY "你的key"
setx REDFOX_API_KEY "你的key"
# macOS / Linux(加入 ~/.zshrc 或 ~/.bashrc)
export TAVILY_API_KEY="你的key"
export SCRAPEBADGER_API_KEY="你的key"
export REDFOX_API_KEY="你的key"
检测当前配置情况:
python scripts/check_keys.py
若依赖缺失,先安装:
pip install -r requirements.txt(在<SKILL_DIR>下执行)
- 脚本以
EXIT_NO_KEY(退出码 2)+ stderr 提示表示某服务未配置。 - 即使三者都没配,也可仅用 agent 内置的联网搜索 + 网页提取工具继续,只是覆盖面较窄。不要强求用户配置。
- Tavily 脚本只暴露 3 个搜索参数:
query(必填)、--search-depth(可选,basic/advanced/fast/ultra-fast,默认 basic)、--time-range(可选,day/week/month/year)。如需全文,对结果 URL 用内置网页提取工具。
步骤 3:搜背景 → 确定场景
- 先用 agent 内置联网搜索对人物做一次背景速查(身份、领域、代表成就、活跃平台)。若内置结果不佳(偏旧 / 多语言 / 匹配差),再用 Tavily 兜底:
python scripts/tavily_search.py "{人物} 简介 背景"
# 需要更高相关性或限定时间时:
python scripts/tavily_search.py "{人物} 简介 背景" --search-depth advanced --time-range year
- 把速查要点用 2-4 句话讲给用户,然后询问场景:「你想在哪个场景下,用该人物的思维方式来思考/决策?」并给出几个候选示例(结合人物特点),强调思考与判断而非口吻。
用户确定场景后,记录 scenario 与其 slug。
步骤 4:深度搜索 → 初稿 → 确认 → 落盘
4.1 深度而广泛地搜集(多角度多关键词)。优先抓一手平台原文——只要 Key 已配置就尽量用下列脚本,把人物本人的帖子/笔记/文章作为主力语料;通用背景/评价再辅以内置搜索(不佳时 Tavily 兜底):
每个脚本均支持 -h 查看参数。
# ① 一手平台原文(主力)——X 平台(人物在 X 上活跃且配置 ScrapeBadger)
python scripts/scrapebadger.py profile {x_username}
python scripts/scrapebadger.py tweets {x_username} --pages 3
# 也可按主题精确搜其推文(高级算子):
python scripts/scrapebadger.py search "from:{x_username} {场景关键词}" --type Latest --pages 2
# ① 一手平台原文(主力)——小红书 / 公众号(中文人物,配置 RedFox)
python scripts/redfox_xhs.py search "{人物}" --pages 2
python scripts/redfox_gzh.py search "{人物} {场景关键词}" --sort _4 --pages 2
# 命中后用 detail / work 拉单篇全文,获取完整推理过程:
python scripts/redfox_xhs.py detail --id {workId}
python scripts/redfox_gzh.py work {workUuid}
# ② 通用背景、观点、争议、近期动态——内置搜索为主,不佳时 Tavily 兜底
python scripts/tavily_search.py "{人物} {场景关键词}" --search-depth advanced
python scripts/tavily_search.py "{人物} 观点 语录 采访" --time-range year
每条事实/观点/推理都要留下来源链接;尤其要保留能体现“他为什么这么想”的原文片段。
- 看全文:内置搜索或 Tavily 返回的都是摘要/片段;要读全文就对结果 URL 用 agent 内置的网页提取工具。脚本抓到的平台帖子若只有摘要,可用
redfox_*.py detail/work或对原文链接提取拿全文。 - 不要落盘中间 JSON:脚本默认把 JSON 打印到终端 stdout,agent 直接读终端输出即可。不要使用
--out,不要在output/下保存.json或其它采集中间文件。output/只放最终人物 skill 的.md(见 4.3)。若误生成output/下的.json或output/output/子目录,落盘.md后应删除。
4.2 生成初稿:套用 <SKILL_DIR>/templates/persona_skill_template.md 的结构,针对所选场景填充。把初稿呈现给用户预览,说明数据来源与采集时间,并主动指出不确定/缺证据的地方。
4.3 确认后落盘:用户同意后,保存到:
<SKILL_DIR>/output/{people_name_slug}-{scenario_slug}.md
保存后告诉用户文件路径,并提示:该文件本身是一个带 frontmatter 的人物 skill,可被复用。
质量与伦理要求
- 事实主张需有来源;区分「事实」与「风格模拟」。不杜撰引语、不伪造数据。
- 不用于冒充本人进行欺诈、诽谤或误导;不收录隐私/未公开信息。
- 用最严谨的态度进行搜索,如果搜索到的信息不足以复制公众人物的思维,则停止生成初稿并告知用户。
Scan to join WeChat group