prompt-analyzer について
prompt-analyzer は、生成済みプロンプトと要素ライブラリを分析する Skill です。詳細表示、比較、類似候補の推薦、統計、スタイル別の要素提案に対応し、新しいプロンプトの生成は行いません。
主な機能
- 01プロンプト詳細の確認
- 022件のプロンプト比較
- 03類似プロンプトの推薦
- 04要素ライブラリ統計の照会
- 05スタイル別の要素提案
活用シーン
- 01プロンプトで使われた要素の確認
- 022件のプロンプトのスタイルや差異の比較
- 03既存プロンプトに似た記録の検索
- 04スタイルに応じた要素の組み合わせの照会
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ huangserva/ skill-prompt-generator --skill prompt-analyzerインストール後、Claude Code で/prompt-analyzerを入力して読み込まれたか確認します。
詳細
Prompt Analyzer - プロンプト分析ツール
🎯 主な役割
生成済みプロンプトの分析と洞察に特化しており、新しいプロンプトの生成は担当しません。
以下の5つの機能を提供します:
- 詳細の確認 - プロンプトで使用されている要素を分析します
- 比較分析 - 2つのプロンプトの違いを比較します
- 類似プロンプトの推薦 - 類似したプロンプトを推薦します
- 要素の統計 - 要素ライブラリの統計情報を照会します
- スタイル別の推薦 - スタイルに応じて最適な要素の組み合わせを推薦します
📋 機能1:プロンプトの詳細を確認
トリガーとなる場面
ユーザーの発言:
- 「Prompt #5の詳細を確認して」
- 「Prompt #5でどのような要素が使われているか分析して」
- 「Prompt #5の完全な情報を表示して」
- 「Prompt #5には何が含まれている?」
SKILLの処理フロー
ステップ1:意図の特定
ユーザーの入力からPrompt IDを抽出します:
# 示例:用户说 "查看Prompt #5的详情"
prompt_id = 5
ステップ2:実行レイヤーの呼び出し
from prompt_analyzer import analyze_prompt_detail
result = analyze_prompt_detail(prompt_id=5)
ステップ3:結果の確認
Promptが存在しない場合:
if 'error' in result:
print(f"❌ {result['error']}")
# 提示用户:该Prompt不存在,可能还没生成过任何Prompt
ステップ4:表示形式の整形
📸 Prompt #5 详情
**用户需求**: {result['user_intent']}
**生成时间**: {result['generation_date']}
**质量评分**: {result['quality_score']}/10
**风格标签**: {result['style_tag']}
**使用的元素** ({len(result['elements'])}个):
1. [{field_name}] {chinese_name} (复用度: {reusability})
- 类别: {category}
- 模板: {template}
2. ...
**完整Prompt**:
────────────────────────────────────────────────────────
{result['prompt_text']}
────────────────────────────────────────────────────────
📋 機能2:2つのプロンプトを比較
トリガーとなる場面
ユーザーの発言:
- 「Prompt #5と#17を比較して」
- 「#5と#17にはどんな違いがある?」
- 「Prompt #5と#17を比較して」
SKILLの処理フロー
ステップ1:意図の特定
ユーザーの入力から2つのPrompt IDを抽出します:
# 示例:用户说 "对比Prompt #5和#17"
prompt_id1 = 5
prompt_id2 = 17
ステップ2:実行レイヤーの呼び出し
from prompt_analyzer import compare_prompts
result = compare_prompts(prompt_id1=5, prompt_id2=17)
ステップ3:差異の分析
SKILLは返されたデータを分析し、比較表を作成します:
⚖️ Prompt对比:#5 vs #17
### 基本信息对比
| 维度 | Prompt #5 | Prompt #17 |
|------|-----------|-----------|
| 用户需求 | {p1['user_intent']} | {p2['user_intent']} |
| 风格标签 | {p1['style_tag']} | {p2['style_tag']} |
| 质量评分 | {p1['quality_score']}/10 | {p2['quality_score']}/10 |
| 元素总数 | {len(p1['elements'])}个 | {len(p2['elements'])}个 |
| 生成时间 | {p1['generation_date']} | {p2['generation_date']} |
### 元素差异分析
**相似度**: {result['similarity_score']*100:.1f}%
**共同元素** ({len(result['common_elements'])}个):
- {common_element['chinese_name']} ({common_element['category']})
- ...
**Prompt #5 独有** ({len(result['unique_to_p1'])}个):
- {element['chinese_name']} ({element['category']})
关键词: {element['template'][:50]}...
- ...
**Prompt #17 独有** ({len(result['unique_to_p2'])}个):
- {element['chinese_name']} ({element['category']})
关键词: {element['template'][:50]}...
- ...
ステップ4:分析結果
SKILLは類似度に基づいて結論を示します:
if result['similarity_score'] > 0.7:
print("💡 这两个Prompt非常相似,风格接近")
elif result['similarity_score'] > 0.4:
print("💡 这两个Prompt有一定相似性,但风格有明显差异")
else:
print("💡 这两个Prompt完全不同,属于不同风格")
📋 機能3:類似したプロンプトを推薦
トリガーとなる場面
ユーザーの発言:
- 「#5に似たPromptを推薦して」
- 「#5のようなものはある?」
- 「似たようなプロンプトを探して」
- 「Prompt #5をもとに類似したものを推薦して」
SKILLの処理フロー
ステップ1:意図の特定
# 示例:用户说 "推荐与#5相似的Prompt"
prompt_id = 5
top_n = 3 # 默认推荐3个
ステップ2:実行レイヤーの呼び出し
from prompt_analyzer import recommend_similar_prompts
result = recommend_similar_prompts(prompt_id=5, top_n=3)
ステップ3:推薦理由の分析
SKILLは類似度の理由を解釈し、推薦する各Promptの理由を生成します:
# 分析共同元素,找出相似的原因
def analyze_similarity_reason(common_element_ids, target_prompt, candidate_prompt):
"""
分析两个Prompt为什么相似
返回:
- 共同的风格标签
- 共同的元素类别
- 推荐理由列表
"""
reasons = []
# 检查风格标签
if target_prompt['style_tag'] == candidate_prompt['style_tag']:
reasons.append(f"✓ 同为{candidate_prompt['style_tag']}风格")
# 按类别统计共同元素
category_count = {}
for elem_id in common_element_ids:
# 查询元素详情获取category
# ... (执行层已返回)
category = ...
category_count[category] = category_count.get(category, 0) + 1
# 列出重要的共同类别
for category, count in category_count.items():
if count >= 2:
reasons.append(f"✓ {count}个共同的{category}元素")
return reasons
ステップ4:表示形式の整形
🔍 为Prompt #5推荐相似提示词
[1] Prompt #{recommendation['prompt_id']} - {recommendation['user_intent']}
相似度: {recommendation['similarity']*100:.1f}%
共同元素: {recommendation['common_count']}个
质量评分: {recommendation['quality_score']}/10
理由:
- ✓ 同为{style_tag}风格
- ✓ 共用3个makeup元素
- ✓ 共用2个lighting元素
[2] ...
[3] ...
📋 機能4:要素ライブラリの統計
トリガーとなる場面
ユーザーの発言:
- 「要素ライブラリにはどのようなカテゴリがある?」
- 「makeupカテゴリには要素がいくつある?」
- 「最もよく使われている要素は?」
- 「要素ライブラリの統計を確認して」
- 「makeup_stylesの詳細情報を教えて」
SKILLの処理フロー
ステップ1:意図の特定
# 场景A:用户说 "元素库有哪些类别?"
category = None # 查询整体统计
# 场景B:用户说 "makeup类别有多少个元素?"
category = 'makeup_styles' # 查询特定类别
ステップ2:実行レイヤーの呼び出し
from prompt_analyzer import get_library_statistics
# 整体统计
result = get_library_statistics()
# 或者特定类别
result = get_library_statistics(category='makeup_styles')
ステップ3:表示形式の整形
場面A:全体統計
📊 元素库统计
**总计**: {result['total_elements']} 个元素
**按类别分布**:
- makeup_styles: {count}个
- clothing_styles: {count}个
- hair_styles: {count}个
- lighting_techniques: {count}个
- facial_features: {count}个
- ...
💡 使用 "查看makeup_styles详情" 查看具体元素列表
場面B:カテゴリの詳細
📊 元素库统计 - {category}
**类别**: {result['category_details']['category']}
**总数**: {result['category_details']['total_count']} 个元素
**最常用元素** (Top 10):
| 排名 | 元素名称 | 复用度 | 使用次数 | 平均质量 |
|------|---------|--------|---------|---------|
| 1 | {chinese_name} | {reusability} | {usage_count}次 | {avg_quality}/10 |
| 2 | ... | ... | ... | ... |
| ... |
**最高质量元素** (Top 5):
[按avg_quality排序]
**从未使用的元素** ({count}个):
[usage_count = 0的元素]
📋 機能5:スタイルに応じた要素の組み合わせを推薦
トリガーとなる場面
ユーザーの発言:
- 「時代劇風にはどのような要素を使うべき?」
- 「SF風の最適な要素の組み合わせは?」
- 「西部世界風の要素を推薦して」
- 「ancient_chinese風にはどの要素がいい?」
SKILLの処理フロー
ステップ1:意図の特定
# 示例:用户说 "古装风格应该用什么元素?"
# 映射用户描述到style_tag
style_mapping = {
'古装': 'ancient_chinese',
'古装中式': 'ancient_chinese',
'仙剑奇侠传': 'ancient_chinese',
'科幻': 'modern_sci_fi',
'西部世界': 'westworld_android',
'赛博朋克': 'cyberpunk',
'奇幻': 'fantasy'
}
style = style_mapping.get('古装', 'ancient_chinese')
ステップ2:実行レイヤーの呼び出し
from prompt_analyzer import recommend_elements_by_style
result = recommend_elements_by_style(style='ancient_chinese')
ステップ3:カテゴリ別に推薦を整理
SKILLは返された要素をカテゴリ別にグループ化し、表示しやすくします:
# 按category分组
elements_by_category = {}
for element in result['recommended_elements']:
category = element['category']
if category not in elements_by_category:
elements_by_category[category] = []
elements_by_category[category].append(element)
# 按类别的最高使用频率排序
sorted_categories = sorted(
elements_by_category.items(),
key=lambda x: max(e['usage_frequency'] for e in x[1]),
reverse=True
)
ステップ4:表示形式の整形
🎨 风格推荐:{result['style']}
**数据来源**: 基于{result['total_prompts']}个历史Prompt分析
**推荐元素组合** (按类别):
### 1. {category_name}
[{field_name}] {chinese_name}
- 使用频率: {usage_frequency*100:.0f}% ({usage_count}/{total_prompts}个Prompt使用)
- 复用度: {reusability}/10
- 平均质量: {avg_quality}/10
- 关键词: {template[:80]}...
### 2. {category_name}
...
**使用建议**:
- ✓ 这个组合在{style}风格中最常用,质量稳定
- ✓ 推荐搭配:{推荐的基础属性,如"东亚女性"}
- ⚠️ 避免搭配:{冲突的元素}
🔧 実行レイヤーの関数一覧
SKILLは以下の実行関数を呼び出します(コードレイヤーは実行のみを行い、判断はしません):
# 所有函数在 prompt_analyzer.py 中
def analyze_prompt_detail(prompt_id: int) -> dict:
"""查询Prompt完整信息"""
def compare_prompts(prompt_id1: int, prompt_id2: int) -> dict:
"""对比两个Prompt差异"""
def recommend_similar_prompts(prompt_id: int, top_n: int = 3) -> list:
"""推荐相似Prompts"""
def get_library_statistics(category: str = None) -> dict:
"""查询元素库统计"""
def recommend_elements_by_style(style: str) -> dict:
"""按风格推荐元素组合"""
📁 データ依存関係
elements.db
├── elements # 元素库(由universal-learner维护)
├── generated_prompts # 生成历史(由intelligent-prompt-generator写入)
├── prompt_elements # Prompt-元素关联
└── element_usage_stats # 元素使用统计
重要:prompt-analyzerはintelligent-prompt-generatorが生成した履歴データに依存します。データベースにgenerated_promptsレコードがない場合、分析機能は動作しません。
⚙️ アーキテクチャの原則
✅ SKILL = 脳(判断レイヤー)
- ユーザーの意図を特定する
- 返されたデータを分析する
- 結果の表示形式を整える
- 推薦理由を生成する
✅ コード = 手足(実行レイヤー)
- データベースを照会する
- 類似度を計算する
- 生データを返す
❌ コードは判断しません
- 「どちらがよいか」は判断しません
- 「何を表示するか」は決定しません
- 「データの取得」だけを担当します
使用例
例1:詳細の確認
ユーザー:「Prompt #1の詳細を確認して」
SKILLの処理:
from prompt_analyzer import analyze_prompt_detail
result = analyze_prompt_detail(prompt_id=1)
# 展示格式化结果
print(f"📸 Prompt #{result['prompt_id']} 详情\n")
print(f"**用户需求**: {result['user_intent']}")
print(f"**生成时间**: {result['generation_date']}")
# ...
例2:プロンプトの比較
ユーザー:「Prompt #1と#2を比較して」
SKILLの処理:
from prompt_analyzer import compare_prompts
result = compare_prompts(prompt_id1=1, prompt_id2=2)
# 分析相似度
similarity = result['similarity_score']
if similarity > 0.7:
conclusion = "非常相似"
elif similarity > 0.4:
conclusion = "有一定相似性"
else:
conclusion = "完全不同"
# 展示对比表格和结论
# ...
例3:類似したプロンプトの推薦
ユーザー:「#1に似たPromptを推薦して」
SKILLの処理:
from prompt_analyzer import recommend_similar_prompts
recommendations = recommend_similar_prompts(prompt_id=1, top_n=3)
# 为每个推荐分析理由
for rec in recommendations:
reasons = analyze_similarity_reason(
rec['common_element_ids'],
target_prompt_id=1,
candidate_prompt_id=rec['prompt_id']
)
# 展示推荐和理由
# ...
例4:要素ライブラリの統計
ユーザー:「makeup_stylesカテゴリの詳細を確認して」
SKILLの処理:
from prompt_analyzer import get_library_statistics
result = get_library_statistics(category='makeup_styles')
# 展示统计表格
details = result['category_details']
print(f"📊 {details['category']} - {details['total_count']}个元素\n")
# 按使用次数排序展示
# ...
例5:スタイル別の推薦
ユーザー:「時代劇風にはどのような要素を使うべき?」
SKILLの処理:
from prompt_analyzer import recommend_elements_by_style
result = recommend_elements_by_style(style='ancient_chinese')
# 按类别组织展示
elements_by_category = group_by_category(result['recommended_elements'])
# 展示每个类别的推荐
for category, elements in elements_by_category.items():
print(f"### {category}")
for elem in elements:
print(f" - {elem['chinese_name']} (使用频率: {elem['usage_frequency']*100:.0f}%)")
# ...
⚠️ 重要な注意事項
-
データの前提条件:分析するには、生成履歴が必要です
- ユーザーが「Prompt #5を確認して」と言っても、データベースにPromptが1つもない場合は、次のように案内してください:
❌ データベースに生成履歴がまだありません。 💡 まず intelligent-prompt-generator を使用してPromptを生成してください。
- ユーザーが「Prompt #5を確認して」と言っても、データベースにPromptが1つもない場合は、次のように案内してください:
-
Prompt IDの範囲:存在するPrompt IDのみ照会できます
- ユーザーが入力したIDが存在しない場合があるため、errorフィールドを確認する必要があります
-
スタイルタグの一貫性:スタイル別の推薦はstyle_tagに依存します
- style_tagはintelligent-prompt-generatorが保存時に設定します
- よく使われるタグ:ancient_chinese、modern_sci_fi、cyberpunk、fantasy、westworld_android
-
要素カテゴリ名:統計を照会する際は、正しいcategory名を使用してください
- makeup_styles(makeupではありません)
- lighting_techniques(lightingではありません)
- clothing_styles、hair_styles、facial_featuresなど
プロンプトを分析する準備ができました!分析のリクエストをお待ちしています。