先看几段任务处理样例,再决定是否下载使用。
人物蒸馏摘要
蒸馏出的核心能力
思维模型
这个人物如何抓重点、解释问题和形成结论。
表达风格
这个人物如何组织语言、语气和态度。
可信依据
当前版本尚未发现独立研究摘要,建议作者补充资料来源。
name: idol-skill
description: "将地下偶像的公开内容蒸馏为 AI Skill,支持创建、列出、更新、回滚偶像 Skill。"
argument-hint: "[create | list | update <slug> | rollback <slug> <version>]"
version: "1.1.0"
user-invocable: true
allowed-tools: Read, Write, Edit, Bash根据用户输入匹配对应流程:
| 触发词 | 流程 |
|---|---|
/idol-skill create、"帮我创建一个偶像 skill"、"我想蒸馏一个偶像" | → [创建新偶像 Skill](#主流程创建新偶像-skill) |
/idol-skill list、"列出所有偶像" | → [列出偶像](#流程列出偶像) |
/idol-skill update {slug}、"更新偶像 {slug}" | → [更新偶像](#流程更新偶像) |
/idol-skill rollback {slug} {version}、"回滚偶像 {slug}" | → [回滚偶像](#流程回滚偶像) |
| 任务 | 使用工具 |
|---|---|
| 微博采集 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/weibo_collector.py |
| 评论采集 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/comment_collector.py |
| 数据清洗 | Bash → python3 ${CLAUDE_SKILL_DIR}/tools/data_cleaner.py |
| 文件写入 | Write / Edit 工具 |
| 读取文件 | Read 工具 |
| 列出已有偶像 | Bash → python3 -c "from tools.skill_writer import SkillWriter; ..." |
基础目录:Skill 文件写入 ./idols/{slug}/(相对于本项目目录)。
参考 ${CLAUDE_SKILL_DIR}/prompts/intake.md 的问题序列,依次询问:
1. 偶像艺名 + 英文拼写(必填,示例:小花 hana) 2. 偶像微博 ID(必填,支持多个) 3. 补充信息(可选:团体、应援色、生日等)
每次只问一个问题。收集完后汇总确认再进入下一步。
#### 2pre. Cookie 检查
在开始采集前,先检查是否已设置微博 Cookie:
cd ${CLAUDE_SKILL_DIR}
python3 -c "
import os
cookie = os.environ.get('WEIBO_COOKIE', '')
if cookie:
print('COOKIE_OK')
else:
print('COOKIE_MISSING')
"如果输出 COOKIE_MISSING,必须先向用户索要 Cookie,告知:
微博数据采集需要登录 Cookie。请按以下步骤获取:
1. 在浏览器中打开 m.weibo.cn 并登录
2. 按 F12 打开开发者工具 → Network 标签
3. 刷新页面,点击任意请求
4. 在 Request Headers 中复制 Cookie 字段的完整内容
请把 Cookie 贴给我,或者在终端中输入:
! export WEIBO_COOKIE='你的cookie内容'拿到用户提供的 Cookie 后,通过以下方式设置到环境变量中再继续采集。不要在没有 Cookie 的情况下执行采集步骤。
#### 2a. 微博采集
使用 Python 工具采集微博数据:
cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.weibo_collector import WeiboCollector
from tools.config_manager import IdolConfig
config = IdolConfig(
idol_name='{idol_name}',
slug='{slug}',
idol_weibo_ids=[{idol_ids}],
since_date='{since_date}',
)
config.ensure_dirs()
collector = WeiboCollector(config) # 需要有效 Cookie(WEIBO_COOKIE 环境变量或 config.cookie)
# 采集偶像微博(增量保存,断点续爬)
idol_weibos = collector.collect_all_idol_weibos()
print(f'采集完成:{len(idol_weibos)} 条偶像微博')
"#### 2b. 评论采集
cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.comment_collector import CommentCollector
from tools.config_manager import IdolConfig
import json
config = IdolConfig(
idol_name='{idol_name}',
slug='{slug}',
idol_weibo_ids=[{idol_ids}],
comment_max_count=200,
)
collector = CommentCollector(config)
# 加载之前采集的微博
with open(config.knowledge_dir() + '/weibo/idol_weibos.json', 'r') as f:
idol_weibos = json.load(f)
# 采集评论(增量保存,断点续爬)
idol_comments = collector.collect_comments_for_weibos(idol_weibos, filename='idol_comments.json')
print('评论采集完成')
"cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.data_cleaner import DataCleaner
from tools.style_corpus_builder import StyleCorpusBuilder
from tools.config_manager import IdolConfig
import json, os
config = IdolConfig(
idol_name='{idol_name}',
slug='{slug}',
idol_weibo_ids=[{idol_ids}],
)
cleaner = DataCleaner()
# 加载数据
def load_json(path):
if os.path.exists(path):
with open(path, 'r') as f:
return json.load(f)
return [] if 'weibo' in path else {}
idol_weibos = load_json(config.knowledge_dir() + '/weibo/idol_weibos.json')
idol_comments = load_json(config.knowledge_dir() + '/comments/idol_comments.json')
# 清洗
idol_weibos = cleaner.clean_weibos(idol_weibos)
idol_comments = cleaner.clean_comments(idol_comments)
# 构建风格语料
corpus_builder = StyleCorpusBuilder(config)
style_corpus = corpus_builder.build(idol_weibos, idol_comments)
corpus_builder.save(style_corpus)
# 保存清洗后的完整数据
with open(config.data_dir() + '/raw_weibo.json', 'w', encoding='utf-8') as f:
json.dump(idol_weibos, f, ensure_ascii=False, indent=2)
print(f'风格语料:{len(style_corpus)} 条')
"用 Read 工具读取:
${CLAUDE_SKILL_DIR}/prompts/style_analyzer.md — 分析 promptidols/{slug}/data/style_corpus.json — 风格语料将风格语料(或取样)提供给 LLM,按 style_analyzer.md 的维度进行分析。 分析结果暂存为文本,供下一步使用。
同时,如果用户未提供偶像补充信息,尝试从微博语料中自动提取自我介绍信息(团体名、应援色、生日等)。
用 Read 工具读取:
${CLAUDE_SKILL_DIR}/prompts/style_builder.md — style.md 生成模板根据模板和分析结果生成 style.md(5 层结构)。
生成前向用户展示摘要确认:
风格画像摘要:
- 核心语气:{xxx}
- 表达特征:{xxx}
- 常用 emoji:{xxx}
确认生成?还是需要调整?用户确认后,用 Write 工具写入:
1. idols/{slug}/style.md 2. idols/{slug}/meta.json 3. idols/{slug}/SKILL.md(组合 style + 运行规则)
告知用户:
✅ 偶像 Skill 已创建!
文件位置:idols/{slug}/
触发词:/idol_{slug}
如果觉得语气哪里不对,直接说"她不会这样说",我来调整。当用户说以下内容时启动:
/list-idolscd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.skill_writer import SkillWriter
import json
writer = SkillWriter()
idols = writer.list_idols()
if not idols:
print('目前还没有创建任何偶像 Skill。')
print('使用 /create-idol 开始创建第一个吧!')
else:
print(f'共 {len(idols)} 个偶像 Skill:')
print()
for idol in idols:
group_info = f' ({idol[\"group\"]})' if idol.get('group') else ''
print(f' {idol[\"stage_name\"]}{group_info}')
print(f' slug: {idol[\"slug\"]} | 版本: {idol[\"version\"]} | 更新: {idol[\"updated_at\"][:10] if idol[\"updated_at\"] else \"未知\"}')
print(f' 对话: /idol_{idol[\"slug\"]} | 更新: /update-idol {idol[\"slug\"]}')
print()
"将输出直接展示给用户即可,无需额外处理。
当用户说以下内容时启动:
/update-idol {slug}cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.skill_writer import SkillWriter
import json
writer = SkillWriter()
meta = writer.read_meta('{slug}')
if meta:
print('IDOL_EXISTS')
print(json.dumps(meta, ensure_ascii=False, indent=2))
else:
print('IDOL_NOT_FOUND')
"如果输出 IDOL_NOT_FOUND,告知用户该偶像不存在,建议使用 /list-idols 查看已有偶像或 /create-idol 创建新偶像。流程结束。
向用户询问:
偶像 {stage_name} 当前版本:{version}
请选择更新方式:
1. 追加新微博数据(提供新的微博 ID 或使用已有 ID 增量采集)
2. 仅重新分析现有数据(不采集新数据,重新生成风格画像)
请选择 1 或 2:#### 3a. Cookie 检查
复用创建流程中的 Cookie 检查逻辑(参考 Step 2pre)。
#### 3b. 微博增量采集
cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.weibo_collector import WeiboCollector
from tools.config_manager import IdolConfig
config = IdolConfig(
idol_name='{idol_name}',
slug='{slug}',
idol_weibo_ids=[{idol_ids}],
since_date='{since_date}',
)
collector = WeiboCollector(config)
idol_weibos = collector.collect_all_idol_weibos()
print(f'采集完成:{len(idol_weibos)} 条偶像微博')
"#### 3c. 评论增量采集
cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.comment_collector import CommentCollector
from tools.config_manager import IdolConfig
import json
config = IdolConfig(
idol_name='{idol_name}',
slug='{slug}',
idol_weibo_ids=[{idol_ids}],
comment_max_count=200,
)
collector = CommentCollector(config)
with open(config.knowledge_dir() + '/weibo/idol_weibos.json', 'r') as f:
idol_weibos = json.load(f)
idol_comments = collector.collect_comments_for_weibos(idol_weibos, filename='idol_comments.json')
print('评论采集完成')
"参考 ${CLAUDE_SKILL_DIR}/prompts/merger.md 的合并规则。
cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.data_cleaner import DataCleaner
from tools.style_corpus_builder import StyleCorpusBuilder
from tools.config_manager import IdolConfig
import json, os
config = IdolConfig(
idol_name='{idol_name}',
slug='{slug}',
idol_weibo_ids=[{idol_ids}],
)
cleaner = DataCleaner()
def load_json(path):
if os.path.exists(path):
with open(path, 'r') as f:
return json.load(f)
return [] if 'weibo' in path else {}
idol_weibos = load_json(config.knowledge_dir() + '/weibo/idol_weibos.json')
idol_comments = load_json(config.knowledge_dir() + '/comments/idol_comments.json')
idol_weibos = cleaner.clean_weibos(idol_weibos)
idol_comments = cleaner.clean_comments(idol_comments)
corpus_builder = StyleCorpusBuilder(config)
style_corpus = corpus_builder.build(idol_weibos, idol_comments)
corpus_builder.save(style_corpus)
with open(config.data_dir() + '/raw_weibo.json', 'w', encoding='utf-8') as f:
json.dump(idol_weibos, f, ensure_ascii=False, indent=2)
print(f'风格语料:{len(style_corpus)} 条')
"cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.skill_writer import SkillWriter
writer = SkillWriter()
version = writer.backup_version('{slug}')
print(f'已备份当前版本:{version}')
"用 Read 工具读取:
${CLAUDE_SKILL_DIR}/prompts/style_analyzer.md — 分析 prompt${CLAUDE_SKILL_DIR}/prompts/merger.md — 合并规则idols/{slug}/data/style_corpus.json — 新风格语料idols/{slug}/style.md — 现有风格画像按 merger.md 的规则,将新分析结果与现有 style.md 合并:
用 Read 工具读取 ${CLAUDE_SKILL_DIR}/prompts/style_builder.md,根据合并后的分析结果生成新 style.md。
生成前向用户展示变更摘要:
风格画像更新摘要:
- 新增特征:{xxx}
- 变化特征:{xxx}(需确认)
- 保持不变:{xxx}
确认更新?用户确认后:
1. 用 Write 工具写入新 idols/{slug}/style.md 2. 用 Write 工具写入新 idols/{slug}/SKILL.md 3. 递增版本号:
cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.skill_writer import SkillWriter
writer = SkillWriter()
new_version = writer.increment_version('{slug}')
print(f'版本已更新至:{new_version}')
"告知用户:
✅ 偶像 {stage_name} 已更新至 {new_version}!
变更内容:{变更摘要}
回滚命令:/idol-rollback {slug} {old_version}当用户说以下内容时启动:
/idol-rollback {slug} {version}cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.skill_writer import SkillWriter
import json
writer = SkillWriter()
meta = writer.read_meta('{slug}')
if meta:
print('IDOL_EXISTS')
print(f'当前版本:{meta.get(\"version\", \"v0\")}')
else:
print('IDOL_NOT_FOUND')
"如果输出 IDOL_NOT_FOUND,告知用户该偶像不存在。流程结束。
cd ${CLAUDE_SKILL_DIR}
python3 -c "
import os, json
versions_dir = 'idols/{slug}/versions'
if not os.path.exists(versions_dir):
print('NO_VERSIONS')
else:
versions = sorted(os.listdir(versions_dir))
versions = [v for v in versions if os.path.isdir(os.path.join(versions_dir, v))]
if not versions:
print('NO_VERSIONS')
else:
print(f'可用版本:{len(versions)} 个')
for v in versions:
meta_path = os.path.join(versions_dir, v, 'meta.json')
if os.path.exists(meta_path):
with open(meta_path, 'r') as f:
meta = json.load(f)
updated = meta.get('updated_at', '未知')[:10]
print(f' {v} (更新于 {updated})')
else:
print(f' {v}')
"如果输出 NO_VERSIONS,告知用户没有历史版本可回滚。流程结束。
如果用户未指定 version 参数,展示可用版本列表,让用户选择。
向用户确认:
即将回滚 {stage_name}:{current_version} → {target_version}
当前版本会自动备份,回滚后可再次恢复。
确认回滚?cd ${CLAUDE_SKILL_DIR}
python3 -c "
from tools.skill_writer import SkillWriter
writer = SkillWriter()
success = writer.rollback('{slug}', '{version}')
if success:
meta = writer.read_meta('{slug}')
print(f'ROLLBACK_OK')
print(f'已回滚至:{meta.get(\"version\", \"{version}\")}')
else:
print('ROLLBACK_FAILED')
print('版本 {version} 不存在')
"告知用户:
✅ 已将 {stage_name} 回滚至 {version}!
如需恢复,使用:/idol-rollback {slug} {backup_version}import: github_repo https://github.com/open-source-zjq/idol-skill
当前为只读模式,登录后可评论。
还没有评论。
SAFE-3
80+ 稳定 · 60+ 可用PDS-6
6/6 维已生成看这个人物是谁、身份关系是否足够清楚。
说明
看是否提炼出稳定的思维模型和判断原则。
看语气、措辞和表达节奏是否像这个人。
看事实、推断、未知与专业限制是否分清。
看关键结论能否回溯到研究摘要和资料来源。
看是否能稳定互动,而不只是静态人物介绍。
translator.skill
Verified translation, internet slang decoding, persona voice transfer, and AI-to-AI style conversion. Supports cross-language, same-language, human-to-AI, and AI-to-human expressi…
nuwa skill
女娲造人:输入人名/主题/甚至只是模糊需求,自动深度调研→思维框架提炼→生成可运行的人物Skill。 两种入口:(1)明确人名→直接蒸馏 (2)模糊需求→诊断推荐→再蒸馏。 触发词:「造skill」「蒸馏XX」「女娲」「造人」「XX的思维方式」「做个XX视角」「更新XX的skill」。 模糊需求也触发:「我想提升决策质量」「有没有一种思维方式能帮我...」…
zhuzi skill
Run structured multi-persona debates with automatic persona selection, isolated or inline execution, and multi-round rebuttal/closing synthesis. Use when the user wants contrastin…
yourself skill
Why distill others when you can distill yourself? Deconstruct your chat history, diaries, and photos into a runnable digital self. 与其蒸馏别人,不如蒸馏自己。欢迎加入数字永生!
simp skill
追爱军师 — 帮你用最纯情的话把心上人追到手 Love Strategist — win over your crush with the most sincere words
shuixian skill
Create, update, list, and roll back Codex-compatible self-mirror companion skills from prompts, pasted notes, exported chat logs, screenshots, and other language samples. Use when…