mcpField
C
csp

csp

github.com/qian-gugugagaクリエイティブ・メディア31341 回インストール21 週間前に更新
リポジトリ

csp について

CSP(Character Skill Producer)は、公開情報やユーザー提供資料からキャラクターの行動を抽出し、実行可能なエージェントスキルを生成します。二次創作の制作者向けに、台詞の整理ではなく、根拠の追跡、矛盾の保持、調査時点の明記を重視します。

主な機能

  1. 01複数情報源の検索と記録
  2. 02状況に応じた行動規則の抽出
  3. 03自己完結型キャラクタースキルの生成
  4. 04調査日と知識範囲の記録
  5. 05品質チェックとレポート作成
  6. 06既存キャラクタースキルの更新

活用シーン

  1. 01チャット用キャラクタースキルの作成
  2. 02二次創作の台詞や物語の支援
  3. 03新しい状況でのキャラクターの反応推測
  4. 04新作公開後のキャラクター情報の更新

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/qian-gugugaga/character_skill_producer --skill csp

インストール後、Claude Code で/cspを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
CLAUDE.md
README_EN.md
README_ES.md
LICENSE
README_KO.md
README_JA.md
README.md
examples/chihaya-anon/references/research/
01-setting.md
03-expression.md
04-relationships.md
05-key-scenes.md
02-personality.md
examples/csp/references/
source-output-schema.md
distillation-framework.md
skill-template.md
examples/csp/scripts/
generate_manifest.py
merge_research.py
moegirl_api.py
bwiki_api.py
source_search.py
source_registry.py
quality_check.py
examples/kaname-rana/references/research/
04-relationships.md
03-expression.md
02-personality.md
05-key-scenes.md
01-setting.md
examples/mutsumi-wakaba/references/research/
03-expression.md
04-relationships.md

詳細

CSP · キャラクター・スキル・プロデューサー

二次元キャラクターを、実行可能なエージェント行動パッケージに変えます。キャラクターカードでも設定集でもなく、実行可能な行動プログラムです。

コア理念

CSP が行うのは、キャラクターの台詞を再現することではなく、キャラクターの行動オペレーティングシステムを蒸留することです。

優れたキャラクター Skill は、次の問いに答えられる必要があります。

  • 彼女はさまざまな状況でどのように反応するのか?
  • 彼女はどのように話すのか?
  • 他人の意図をどのように理解するのか?
  • 価値観が衝突したとき、何を守り、何を犠牲にするのか?
  • 彼女が決してしないことは何か?
  • 資料はいつまでの内容をカバーしているのか。その後の新しいストーリーはどう更新するのか?

重要な区別:捉えるのは HOW she behaves であり、WHAT she said ではありません。ラベルは人が見るためのもの、行動ルールは AI が実行するためのものです。

プロダクト哲学:キャラクターは資料ページではなく、実行可能な反応システムです

CSP の目標は、Wiki を書き直すことでも、キャラクターの台詞を prompt にまとめることでもありません。Wiki がユーザーに「何が起きたか」を伝えるのに対し、CSP はエージェントに「新しい状況で、このキャラクターがどのように生きるか」を伝えます。

高品質なキャラクター Skill には、少なくとも次の 6 つの実行可能なレイヤーが含まれます。

レイヤー問い失敗したときの状態
行動のレンズ彼女はまず何に注目し、何を無視するのか?設定を繰り返すだけ
反応ルールどのような状況で近づき、逃げ、攻撃し、沈黙するのか?どの質問にも同じ口調で答える
表現の DNA文の長さ、間、敬語、一人称、感情の漏れをどう組み合わせるのか?口癖を貼り付けるだけ
関係性のアルゴリズム善意、裏切り、親密さ、利用をどう判断するのか?すべてのユーザーに同じように親しく接する
意思決定の一線価値観が衝突したとき、何を守り、何を犠牲にするのか?ユーザーに簡単に説得される
誠実さの境界何を知らず、何が古く、何が推測にすぎないのか?新しいストーリーをでっち上げる

重要な原則:書き込めるものは行動プログラムにし、書き込めないものだけを境界として残します。 キャラクターの神秘性は曖昧さで作るのではなく、資料、視点、推論能力の限界を認めることで生まれます。

将来の利用シーン

CSP は二次元クリエイター向けに、共有可能なキャラクター行動インフラを提供し、キャラクター Skill をチャット、二次創作、インタラクティブシステムが共通で呼び出せる行動レイヤーにすることを目指します。

現在、最も直接的な利用シーンは次のとおりです。

  • チャット:ユーザーとキャラクターの継続的な対話を可能にし、口調、関係性の距離、知識の境界を安定して保ちます。
  • 二次創作:台詞、内面描写、断片、短編の執筆を支援し、キャラクターが「話し方が似ている」だけでなく、「行動も似ている」状態を実現します。
  • ストーリーの試作:原作にない新しい状況にキャラクターを置き、行動パターンから反応を推測します。
  • キャラクター研究:親密さ、プレッシャー、裏切り、選択、沈黙への対処をキャラクター間で比較します。

将来的には、次の用途に拡張できます。

  • AI インタラクティブ小説:固定台詞集から文章を選ぶのではなく、プレイヤーの行動に一貫した反応を返します。
  • AI ビジュアルノベル/ギャルゲームのプロトタイプ:キャラクター Skill を使って、分岐する台詞、関係性の変化、対立の激化を動かします。
  • 複数キャラクターによる物語実験:複数のキャラクター Skill が同じ出来事の中でぶつかり合い、群像劇を生み出します。
  • クリエイター向けワークベンチ:作者が CSP でシーンを試作し、台詞を書き換え、OOC を確認し、長編の二次創作でキャラクターの一貫性を保てます。
  • 更新可能なキャラクタープロフィール:作品の更新に合わせて、資料の日付と出典の連鎖を保ちながら Skill も成長します。

CSP が築こうとしているのは、「資料」から「行動」、さらに「インタラクティブな物語」へとつながる道筋です。現在はユーザーとのチャットや二次創作を支援し、将来的には AI インタラクティブ小説ゲームや、キャラクター主導の創作ツールチェーンの一部となることを目指します。


デフォルトモード:最高品質の生成

CSP はデフォルトで Highest Fidelity Mode のみを採用します。

現時点では、クイック、トークン節約、軽量モードは提供しません。生成時は、公開資料をできる限り網羅的に検索し、重要な結論を相互検証し、出典と資料の日付を記録し、制約を Skill に明記してください。薄いキャラクターカードを生成してコンテキストを節約するより、トークンを多く使って高忠実度のキャラクターを作ることを優先します。

将来、軽量モードを実装する場合は、明示的なオプションとして提供し、デフォルトの品質基準を変えてはなりません。


前提条件とローカル検索優先の原則

CSP は Python に依存します。ローカルスクリプトが主要サイトの検索、出典の正規化、品質チェック、metadata の生成を担います。ウェブ検索 skill/MCP/WebFetch は任意の補助としてのみ使用します。

検索の優先順位:

  1. ユーザーが提供する公式資料:設定集、インタビュー、BD 特典、字幕、スクリーンショット、ゲームのストーリーテキスト。
  2. CSP のローカルスクリプトで主要サイトを検索。
  3. ウェブ検索 skill/MCP/WebFetch で不足分を補完。
  4. ユーザーが手動で資料を追加。

検索 skill を最初の手順として使用してはなりません。ローカルスクリプトがそのサイトに対応していない場合、またはローカルスクリプトが失敗し、その理由を記録した場合に限ります。

情報源の優先順位
優先度情報源例
最高ユーザー提供の公式資料設定集、インタビュー原文、BD 特典、公式字幕、スクリーンショット
高公式サイト、公式キャラクター紹介、公式ストーリーテキストfranchise official sites、game story text
高萌娘百科、Wikipedia、作品の Fandom Wikizh.moegirl.org.cn、wikipedia.org、fandom.com
中Bangumi、AniDB、ゲームデータベース、Bilibili の高品質コラム、Anime News Networkbgm.tv、anidb.net、Bestdori、BWIKI
低ファンの議論、コミュニティの解釈推測として必ず明記
除外知乎、WeChat 公式アカウント、百度百科情報源として使用不可

重要な結論には、少なくとも 2 つの独立した情報源が必要です。情報源同士に矛盾がある場合は、その矛盾を残し、無理に整合させないでください。

ローカル検索の主要な入口

統一された入口を優先して使用します。

python scripts/source_search.py "角色名" --work "作品名" --mode discover
python scripts/source_search.py "角色名" --work "作品名" --sources moegirl,mediawiki

萌娘百科には専用スクリプトを直接使用できます。

python scripts/moegirl_api.py "角色名" --intro
python scripts/moegirl_api.py "角色名" --full
python scripts/moegirl_api.py "角色名" --search
python scripts/moegirl_api.py "角色名" --wikitext

Windows では python を使用し、Linux/macOS のユーザーは python3 を試してください。

検索失敗時のルール

重要なウェブサイトで一度失敗しただけで「情報不足」と記録してはなりません。次の項目を記録してください。

  • 試したコマンド。
  • 検索語と resolved title。
  • URL。
  • エラーメッセージ。
  • 代替情報源。
  • 信頼度への影響。

最終的に失敗した場合も、references/sources.json と該当する調査ファイルに失敗項目を記録してください。


生成ディレクトリ構造

キャラクターを確認したら、まずディレクトリを作成し、その後に調査を開始します。

<character-slug>/
├── SKILL.md
├── manifest.json
└── references/
    ├── sources.json
    ├── distillation.md
    ├── quality-report.json
    └── research/
        ├── 01-setting.md
        ├── 02-personality.md
        ├── 03-expression.md
        ├── 04-relationships.md
        ├── 05-key-scenes.md
        └── 06-media-coverage.md

Skill は自己完結している必要があります。ディレクトリ全体をコピーすれば、単独で使用できるようにしてください。調査ファイルが不完全な状態で、生成が完了したと称してはなりません。


必須 metadata と資料の対象時点

作品に続編が出たり、ゲームのバージョンが更新されたり、新しいイベントが開催されたりした後に内容が食い違わないよう、生成する各 Skill は資料の検索日を記録する必要があります。

manifest.json の必須フィールド
{
  "schema_version": "1.0",
  "name": "character-slug",
  "character": "角色名",
  "work": "作品名",
  "aliases": [],
  "generated_at": "YYYY-MM-DD",
  "research_started_at": "YYYY-MM-DD",
  "research_completed_at": "YYYY-MM-DD",
  "latest_source_checked_at": "YYYY-MM-DD",
  "covered_until": {
    "date": "YYYY-MM-DD",
    "description": "截至该日期可检索到的公开资料和用户提供材料"
  },
  "covered_media": [],
  "not_covered": ["YYYY-MM-DD 后发布的新剧情、新活动、新访谈、新设定修订"],
  "source_count": 0,
  "source_tiers": {},
  "quality_score": null,
  "honesty_boundary": "",
  "csp_version": "unknown"
}
references/sources.json の要件

各情報源について、次の項目を記録してください。

  • id
  • source
  • title
  • url
  • source_tier
  • officiality
  • media_type
  • retrieved_at
  • content_hash。計算可能な場合は計算してください。
  • status
  • warnings

失敗した情報源も記録し、status には failed と記入してください。

最終版の SKILL.md に必ず含める資料の対象時点

キャラクター Skill には、次の内容を明記する必要があります。

本 Skill 的资料检索完成于:YYYY-MM-DD。
行为蒸馏基于截至该日期可检索到的公开资料和用户提供材料。
如果作品在此日期后发布新剧情、新活动、新台词、访谈或设定修订,本 Skill 可能无法反映最新内容。

ユーザーから「最新のストーリーはそうではない」と指摘された場合、キャラクター Skill は強引に反論せず、次のように応答しなければなりません。

我的资料更新至 YYYY-MM-DD,可能没有覆盖之后发布的内容。如果你有最新版 CSP,或可以提供新剧情 / 新资料链接,我可以帮你更新这个 Skill;这可能会消耗一些 Token。

実行手順

Phase 0:要件の確認

次の事項を確認します。

  1. キャラクター名:中国語/日本語/英語のいずれでも可。
  2. 作品名:シリーズの正式名称。どの作品または時間軸なのかを明確にします。
  3. 生成範囲:デフォルトは包括的なプロフィールで、軽量版は作成しません。
  4. ユーザーが公式資料を持っているか:ある場合は最優先します。
  5. メディアミックス作品のキャラクターか:BanG Dream!、Love Live!、Project Sekai、少女☆歌劇などは、デフォルトでメディアミックス用ルールを適用します。

ユーザーが「XX で」とだけ伝えた場合は、包括的なプロフィールをデフォルトとして生成を進めます。同名の候補が複数ある場合は、必ずユーザーに確認してください。

Phase 1:情報源の調査

まず、ローカル検索を実行します。

python scripts/source_search.py "<角色名>" --work "<作品名>" --mode discover

目標:

  • 候補となる項目を見つける。
  • 別名を収集する。
  • メディアミックス作品かどうかを判断する。
  • references/sources.json の初期版を生成する。
  • 失敗した情報源を記録する。

候補が明確な場合は自動で次に進み、候補が複数ある場合はユーザーに選択を求めます。

Phase 2:ディレクトリと情報源インデックスの作成

対象の構造を作成し、空の次のファイルを書き込みます。

  • references/sources.json
  • references/distillation.md
  • references/research/06-media-coverage.md

あわせて research_started_at を記録します。

Phase 3:多源信息采集(5 Agent 并行)

启动 5 个并行子 agent,但它们不再盲搜。每个 agent 必须先读取 references/sources.json 和本地检索结果,只在维度缺口明确时再外部补搜。

Agent重点输出文件
1 设定基本信息、世界观、身份、时间线、媒体覆盖01-setting.md
2 性格行为模式、压力反应、内在矛盾、成长弧02-personality.md
3 表达句式、词汇、自称、敬语、口癖、台词语境03-expression.md
4 关系重要关系、社会认知、跨作品互动04-relationships.md
5 名场面至少 8 个关键场景、决策逻辑、压力行为05-key-scenes.md

每个研究文件必须写:

  • 使用的 source id 或 URL;
  • 可信度;
  • 官方设定 / Wiki 汇总 / 用户材料 / 粉丝推测的区分;
  • 冲突点;
  • 检索失败与降级情况。
Phase 4:跨媒体覆盖记录

对跨媒体角色必须写 06-media-coverage.md:

  • 已覆盖媒体;
  • 未覆盖媒体;
  • 主线和衍生材料的权重;
  • 不同媒体冲突;
  • 本 Skill 采用的时间线;
  • 截至哪个日期。

游戏活动、卡面故事、区域对话可作为日常行为和关系补充,但不能覆盖主线设定,除非官方明确更新。

Phase 5:调研质量检查点

运行:

python scripts/merge_research.py <skill_directory>

检查:

  • 每个维度来源数;
  • 总来源数;
  • 黑名单来源;
  • 失败来源;
  • 重要结论是否交叉验证;
  • 跨媒体覆盖;
  • 资料日期是否记录。

展示摘要给用户确认。调研质量决定最终 Skill 上限,缺口明显时补充研究后再蒸馏。

Phase 6:行为蒸馏

读取 references/distillation-framework.md,写入 references/distillation.md。

核心行为模式必须回答:

在什么情况下 → 做什么 → 为什么这样

筛选标准:

  • 跨场景复现:至少两个不同场景;
  • 可执行性:能推断新情境中的反应;
  • 证据链:能追溯到 research 文件或 sources;
  • 矛盾保留:发展性矛盾和情境性矛盾不抹平。

目标提炼 3-7 个核心行为模式。只通过一重验证的行为降级为低置信度,不写成核心。

Phase 7:蒸馏确认检查点

向用户展示:

  • 核心行为模式;
  • 表达质感;
  • 核心动机;
  • 内在矛盾;
  • 知识边界;
  • 资料覆盖日期;
  • 未覆盖媒体。

用户确认后再组装最终 Skill。

Phase 8:构建 Skill 与 manifest

读取 references/skill-template.md 组装 SKILL.md。

同时生成:

python scripts/generate_manifest.py <skill_directory>

最终 Skill 必须包含:

  • 角色扮演规则;
  • 运行核心;
  • 资料时间边界;
  • 行为动态;
  • 表达质感;
  • 社会认知;
  • 决策逻辑;
  • 知识边界;
  • 面对资料更新或用户纠错的规则;
  • 诚实边界;
  • 调研来源。
Phase 9:质量验证

运行:

python scripts/quality_check.py <skill_directory>

必须检查:

  • 行为模式数量;
  • 表达质感;
  • 矛盾保留;
  • 角色扮演规则;
  • 行为示例;
  • 诚实边界;
  • 来源标注;
  • manifest.json;
  • sources.json;
  • latest_source_checked_at;
  • 每条来源 retrieved_at;
  • SKILL.md 资料时间边界;
  • 用户指出最新剧情时的更新回应规则。

验证结果写入 references/quality-report.json。验证结果展示给用户后才算完成。


更新已有 Skill

触发语:

  • 「更新这个 skill」
  • 「最新剧情不是这样」
  • 「XX 出新作了」
  • 「用新版本剧情更新她」
  • 「这个设定过时了」

更新流程:

  1. 读取旧 manifest.json,确认 latest_source_checked_at。
  2. 告知用户旧资料日期和可能 token 消耗。
  3. 询问用户是否有新官方材料。
  4. 重新运行本地 source discovery。
  5. 对比旧 sources.json 与新检索结果。
  6. 只重蒸馏受影响维度。
  7. 更新 references/distillation.md。
  8. 更新 SKILL.md。
  9. 更新 manifest.json 的资料日期。
  10. 重新运行 quality_check.py。

更新时不得:

  • 直接覆盖旧行为模式;
  • 把用户印象当官方设定;
  • 删除旧冲突记录;
  • 假设新剧情一定推翻旧剧情;
  • 混淆不同时间线。

可辩证吸收的竞品能力

产品表达:采纳

README 和交付说明可以更直观地展示生成前/生成后、角色 replay、CSP 与角色卡的差异。但不照搬“夺舍”路线。CSP 的定位是高保真行为蒸馏。

工具链:采纳

优先加入:

  • source_search.py
  • source_registry.py
  • generate_manifest.py
  • file_manager.py(用于备份和更新)

batch_distill.py 暂缓,因为当前默认追求单个角色最高质量,不追求批量低成本生产。

提示词提炼:调整采纳

可提供:

python scripts/distill_prompt.py <skill_dir>

输出适合普通 ChatGPT / Claude / SillyTavern / OpenClaw 的 prompt.md。但这只是便携导出,不替代原生 Agent Skill,也不包含完整研究链。

记忆协议:谨慎采纳

近期只吸收「修订记录」和「用户纠错记录」,暂不做自动长期记忆。CSP 的核心是角色行为蒸馏,不是陪伴机器人运行时。


品味守则

原则一句话
行为 > 形容词描述「做什么」而非「是什么」
证据 > 印象重要结论必须可追溯
矛盾 > 一致保留矛盾,这是深度的来源
语境 > 台词每句经典台词必须说明场景
时间边界 > 硬拗资料过期时承认边界并进入更新
口语 > 文章Skill 输出的是角色说话,不是论文
人味 > 完美角色可以不确定、前后矛盾、沉默

绝不做:

  • 用萌属性标签取代行为描述;
  • 编造角色在原作中没说过的话;
  • 把角色写成完美人设;
  • 在信息不足时强行生成;
  • 用知乎、微信公众号、百度百科做来源;
  • 忽略资料检索日期;
  • 用户指出新剧情时硬拗旧设定。

部署与同步

生成完成后可复制整个角色目录到 .claude/skills/<name>/。修改根目录 CSP 时,必须同步 examples/csp/ 中的:

  • SKILL.md
  • references/
  • scripts/

避免源码版和可安装版分叉。


致谢

CSP 的多 Agent 调研、阶段检查点和质量验证借鉴了 nuwa-skill。CSP 将这种蒸馏方式适配到二次元角色行为系统:不是复刻设定,而是让角色在新情境里可信地活着。

コメント