Skill: ahsbnb/live-replay-analyzer (version 1.0.0)

--- name: live-replay-analyzer description: (已验证) 根据客户和场次，自动生成详细的《直播复盘与成长规划报告》。 metadata: version: 1.0.0 source: https://github.com/your-repo/live-replay-analyzer author: an tags: [live-streaming, replay, analysis, report, marketing] license: MIT requirements: - python - "pip:aiohttp" - "pip:requests" --- # SKILL.md for live-replay-analyzer ## Description 这是一个专业的直播复盘工具，它根据指定的客户名称和直播场次，自动读取相关的直播数据、用户画像和直播话术，生成一份详尽的《直播复盘与成长规划报告》。 该技能采用"AI 代理作为总调度 (Agent as Orchestrator)"的模式，由 AI 代理负责数据验证、脚本执行和最终报告交付。 ## Configuration ### 1. API 配置 (必需) 本技能需要配置一个用于生成报告的 API 密钥。请在 `~/.openclaw/config.json` 中添加以下配置： ```json { "review_api_key": "YOUR_API_KEY", "review_api_url": "https://api2.aigcbest.top/v1/chat/completions" } ``` `review_api_url` 是可选的，默认值为 `https://api2.aigcbest.top/v1/chat/completions`。 ### 2. 数据目录结构 本技能期望数据文件按照以下结构存放在 `input/` 目录中： ``` input/ └── {客户名称}/ └── {场次名称}/ ├── data.txt # 直播数据 (必需) ├── profile.txt # 用户画像 (必需，或由 AI 从 profile.png 生成) └── script.txt # 直播话术 (必需) ``` ## How to Use ### Parameters * **`--client`** (必填): 客户名称，对应 `input/{client}/` 目录。 * **`--session`** (必填): 直播场次名称，对应 `input/{client}/{session}/` 目录。 * **`--call-model`** (可选): 添加此参数后，脚本会直接调用模型生成报告并保存到 `output/` 目录；否则只输出提示词。 ### Example Invocation **模式 A：仅生成提示词 (由 AI 代理进行分析和交付)** ```powershell # AI 应动态查找 python 路径 python path/to/analyzer.py --client "客户 A" --session "2026-03-26" ``` **模式 B：直接生成报告文件** ```powershell # AI 应动态查找 python 路径 python path/to/analyzer.py --client "客户 A" --session "2026-03-26" --call-model ``` ## Output 报告文件将保存在 `output/{客户名称}/{场次名称}/` 目录下，文件名格式为：`{客户名称}-{场次名称}_report_{时间戳}.md`。

path: analyzer.py
content: #!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
直播复盘分析器 - V2 (Secure & Portable)
"""

import os
import sys
import json
import time
import argparse
import requests
from pathlib import Path
import asyncio
import aiohttp

# ==================== 路径配置 (V2 - 动态) ====================
SKILL_DIR = Path(__file__).parent
INPUT_DIR = SKILL_DIR / "input"
OUTPUT_DIR = SKILL_DIR / "output"
TEMPLATE_FILE = SKILL_DIR / "prompt_template.txt"

# ==================== 配置读取 ====================
def get_config_value(key: str, default=None):
    """从 ~/.openclaw/config.json 安全地读取配置值"""
    config_path = Path.home() / '.openclaw' / 'config.json'
    if not config_path.exists():
        return default
    try:
        config = json.loads(config_path.read_text(encoding='utf-8'))
        return config.get(key, default)
    except (json.JSONDecodeError, IOError):
        return default

# ==================== 辅助函数 ====================
def read_file(file_path):
    try:
        with open(file_path, 'r', encoding='utf-8') as f:
            return f.read()
    except Exception as e:
        print(f"❌ 读取文件失败 {file_path}: {e}", file=sys.stderr)
        return None

# ==================== 模型调用 ====================
async def model_gpt(message_list, model: str = "gemini-2.5-pro"):
    """调用大模型，返回生成的文本内容"""
    # 从配置中读取 API 信息
    api_url = get_config_value('review_api_url', 'https://api2.aigcbest.top/v1/chat/completions')
    [REDACTED_SECRET]'review_api_key')
    
    if not [REDACTED_SECRET]"❌ 错误：未在 config.json 中配置 'review_api_key'", file=sys.stderr)
        sys.exit(1)
    
    error_msg = ""
    async with aiohttp.ClientSession() as session:
        for i in range(3):  # 最多重试 3 次
            try:
                async with session.post(
                        api_url,
                        headers={
                            'Authorization': f'Bearer {api_key}',
                            'Content-Type': 'application/json'
                        },
                        data=json.dumps({
                            "model": model,
                            "messages": message_list,
                            "max_tokens": 12000,
                            "temperature": 0
                        }),
                        timeout=999
                ) as response:
                    data = await response.json()
                    if content := data.get('choices', [{}])[0].get('message', {}).get('content'):
                        return content
            except Exception as e:
                error_msg = str(e)
                await asyncio.sleep(i * 2)  # 指数退避
    return error_msg

# ==================== 主程序 ====================
def main():
    parser = argparse.ArgumentParser(description="直播复盘分析器 (V2)")
    parser.add_argument("--client", required=True, help="客户名称")
    parser.add_argument("--session", required=True, help="直播场次名称")
    parser.add_argument("--call-model", action="store_true", help="直接调用模型生成复盘，否则只生成提示词文件")
    args = parser.parse_args()

    client = args.client
    session = args.session

    # 构建输入文件路径
    session_dir = INPUT_DIR / client / session
    data_file = session_dir / "data.txt"
    profile_file = session_dir / "profile.txt"
    script_file = session_dir / "script.txt"

    out_dir = OUTPUT_DIR / client / session

    for f in [data_file, profile_file, script_file]:
        if not f.exists():
            print(f"❌ 文件不存在：{f}", file=sys.stderr)
            sys.exit(1)

    # 读取模板
    if not TEMPLATE_FILE.exists():
        print(f"❌ 模板文件不存在：{TEMPLATE_FILE}", file=sys.stderr)
        sys.exit(1)
    template = read_file(TEMPLATE_FILE)
    if template is None:
        sys.exit(1)

    # 读取输入
    data_content = read_file(data_file)
    profile_content = read_file(profile_file)
    script_content = read_file(script_file)
    if None in (data_content, profile_content, script_content):
        sys.exit(1)

    timestamp=time.strftime("%Y%m%d%H%M%S", time.localtime())
    # 填充提示词
    prompt = template.replace("{直播数据}", data_content) \
                     .replace("{用户画像}", profile_content) \
                     .replace("{直播回放文字稿}", script_content)

    if args.call_model:
        # 准备消息列表
        messages = [{"role": "user", "content": prompt}]
        try:
            # 异步调用模型
            generated_scripts = asyncio.run(model_gpt(messages))
        except Exception as e:
            print(f"模型调用失败：{e}")
            return

        # 保存生成的脚本
        out_dir.mkdir(parents=True, exist_ok=True)
        out_filename = f"{client}-{session}_report_{timestamp}.md"
        output_path = out_dir / out_filename
        with open(output_path, 'w', encoding='utf-8') as f:
            f.write(generated_scripts)
        print(f"✅方案已保存至：{output_path}")
    # 输出组装好的提示词
    print(prompt)

if __name__ == "__main__":
    main()


path: prompt_template.txt
content: # 直播复盘报告生成指令

## 1. 角色与目标
你是一位务实的电商直播复盘分析师。你的任务是基于用户提供的三份材料（直播数据、用户画像、直播回放文字稿），生成一份结构清晰、分析有据、建议落地的《直播复盘与成长规划报告》。你的语言要通俗易懂，避免浮夸和AI腔，重在传达有用信息。

## 2. 输入材料
### 【材料一：直播数据】
{直播数据}

### 【材料二：用户画像】
{用户画像}

### 【材料三：直播回放/文字稿】
{直播回放文字稿}

## 3. 数据完整性检查
- 如果上述三份材料中有任何一份缺失，请立即停止分析，并提示用户：“缺少必要数据，请补充【材料一/二/三】后再进行分析。”
- 如果材料提供不全，不要生成报告。

## 4. 报告生成要求
请严格模仿下方【参考案例】的报告结构、分析深度和语言风格，生成一份完整的《直播复盘与成长规划报告》。确保每项分析都有数据或事实支撑，不要空泛。如果某些数据缺失，请明确标注“该项数据未提供，分析可能不完整”。

---

## 【参考案例】

### 直播回放-2026年01月28日-30分8秒-视频号
《直播复盘与成长规划报告》

---

### 第一部分：数据洞察与诊断分析（发现你的闪光点与潜力点）

#### 1.1 核心数据概览

- **量化指标分析**：

  > 由于未提供具体后台数据截图，无法精确提取GMV、观看人次、新进用户占比、平均在线人数、峰值在线人数、平均观看时长、商品点击-成交转化率、整体支付转化率等指标。建议后续补充数据以便更精准分析。

- **指标定性解读**：

  - **潜力资产（你的强势指标）**：

    > 主播以“第五代非遗传承人”身份切入，深度讲述面条的传统工艺和原材料，展现了极强的内容专业度和人设优势。直播中多次强调“非遗证书”、“传统手工艺”、“风吹日晒”等细节，极大提升了产品的信任感和文化价值。这种深度故事化的内容是极具吸引力的潜力资产。

  - **成长警报（你的核心待优化指标）**：

    > 直播节奏较为缓慢，内容重复较多，存在一定的冗长和表达不够紧凑的情况。部分话术略显口语化和碎片化，可能导致观众注意力分散，影响平均观看时长和转化效率。

  - **转化瓶颈（你的核心瓶颈指标）**：

    > 虽然主播多次提及“试吃一斤”、“不满意可退”等保障政策，但缺乏更明确的引导下单话术和紧凑的转化节点，可能导致用户兴趣未能及时转化为购买行为。转化环节的“临门一脚”尚未形成强有力的驱动力。

- **关键洞察**：

  > 主播通过“非遗传承人”身份和“传统手工艺”故事，成功构建了产品的独特价值和信任基础。这是极其宝贵的核心资产。结合直播内容，观众对“面条的品质”和“健康成分”表现出较高关注，说明产品定位精准，契合了对健康和传统食品有需求的用户群体。

  > 直播中多次强调“试吃保障”和“运费险”，体现了主播对用户疑虑的敏感度和解决方案，但转化话术尚需优化以提升成交率。

#### 1.2 核心困惑提炼：我们如何将信任转化为价值？

> 您已经通过“非遗传承人”的真实身份和详实的产品故事，建立了极高的信任感。接下来，核心挑战是如何设计一套更流畅且节奏感强的转化流程，让这份信任在用户心中迅速转化为购买决策，实现“信任到成交”的无缝连接。

#### 1.3 强势指标分析：你真正做对了什么？

- **高光时刻定位**：

  > 直播前10分钟（0-600秒）主播通过细致讲解面条的传统工艺、原材料和非遗证书，成功吸引了观众的注意力，建立了强烈的产品差异化认知。

- **“金句”与行为剖析**：

  > 在 **03分30秒**，主播说：“我们家的面条是在太阳光底下晾晒七个小时，风吹日晒，这样的面条才符合你记忆中的好面条。”这句话精准击中了用户对传统手工面条的情感认同，极大提升了产品的文化价值和信任感。

  > 在 **08分00秒**，主播强调：“我们支持试吃一斤，不满意可以原路返回，七天无理由运费险都安排妥妥的。”这段话极大降低了用户的购买顾虑，体现了主播的诚信和自信，是转化的关键话术。

#### 1.4 弱势指标分析：我们可以优化的机会点

- **平淡时段定位**：

  > 直播中后段（1200秒以后）内容重复较多，主播表达略显拖沓，缺乏新的亮点和互动，可能导致观众流失和注意力下降。

- **诊断与修正建议**：

  > 在 **20分钟左右**，主播多次重复“非遗证书”、“传统工艺”等信息，话术较为口语化且缺乏节奏感，容易让观众感到疲劳。建议优化为更精炼且富有节奏感的表达，例如：

  > 原话：“我们家的面条是用传统老鼠艺制作的，不是机械的，是有匠心和温度的。”

  > 优化话术：“这款面条，采用传统手工‘老鼠艺’，每一根都承载着匠心与温度，远非机械冷制可比。”

- **深层模式升级**：

  > 当前直播更像是一场“传统工艺说明会”，内容丰富但节奏平缓。下一步建议升级为“情感驱动+价值引导”的营销直播，结合故事讲述与用户互动，穿插明确的转化节点，形成“讲故事—激发共鸣—引导下单”的闭环。

---

### 第二部分：下一场直播优化规划方案（释放你的全部潜力）

#### 2.1 核心优化策略与目标

- **策略升级**：

  > 从“单纯讲述产品工艺和故事”升级为“情感共鸣+价值引导”的高信任营销模式。通过强化主播人设的情感连接，结合精准的转化话术和节奏控制，实现“信我、懂我、买我”的转化闭环。

- **核心目标**：

  > 1. 将平均观看时长提升至3分钟以上，确保更多观众完整接收核心价值信息。

  > 2. 提升商品点击-成交转化率至少20%，通过优化转化话术和流程设计，实现更高效的成交闭环。

#### 2.2 【重要】安全合规准则 (Safety & Compliance Guidelines)

- 所有话术严格避免极限词、虚假承诺、诱导性价格、高压逼单及引导至第三方平台。

- 推荐使用“我们品牌里领先的...”、“库存非常紧张/备货不多”、“官方七天无理由/运费险服务”、“今天活动力度较大”等合规表达。

#### 2.3 具体行动方案：你的下一份“成功地图”

- **人设与开场优化 (“黄金三分钟”)**：

  - **策略**：设计开场话术，快速建立信任闭环，包含身份展示、痛点共鸣、价值承诺和行动号召。

  - **话术示例**：

    > “大家好，我是来自湖南湘西的第五代非遗传承人，专注于传承百年手工面条工艺。我们家的面条采用纯天然原料，风吹日晒七小时晾晒，保证每一根都劲道丝滑。今天直播间为大家带来试吃保障，一斤试吃装，不满意七天无理由退货，安心购买。喜欢传统好味道的朋友，赶紧锁定屏幕，跟我一起感受这份匠心吧！”

- **内容流程重构 (“价值模块化”)**：

  - **策略**：将直播内容拆分为独立模块，确保新进用户3分钟内快速理解核心价值。

  - **模块设计示例**：

    1. 【钩子】：“你还记得小时候那种风吹日晒的手工面条吗？今天带你找回那份纯正的味道。”

    2. 【核心内容】：“这款面条采用湖南湘西野生葛根粉，传统‘老鼠艺’手工制作，风吹日晒七小时，保证劲道不糊汤。”

    3. 【转化点】：“现在下单试吃一斤，享受官方七天无理由退货保障，体验真正的传统好面条。”

- **转化环节设计 (“驱动而非催促”)**：

  - **价值锚点话术**：

    > “这款29.9元的面条，不仅是一包面，更是你进入非遗文化体验的第一张门票。每一口都是对传统工艺的尊重和传承。”

  - **成交主张强化**：

    > “我们提供官方七天无理由退货和运费险服务，确保您的购物无忧。今天活动力度较大，备货有限，喜欢的朋友请抓紧机会。”

- **互动与节奏优化**：

  - **引导式互动话术**：

    > “如果你也喜欢这份纯正的传统味道，欢迎在公屏打出‘值得’，让我看到你们的支持和认可。”

  - **节奏掌控建议**：

    > 采用“快-慢-快”的节奏组合：开场快速吸引，内容中段放慢讲解细节，结尾快速引导下单。快节奏逼单时，避免使用高压词汇，保持温和鼓励。

---

### 第三部分：总结：从“分享者”到“价值引领者”

> 于主播，您手握“非遗传承人”和“百年手工艺”这两张极具分量的王牌，已经拥有了直播间最宝贵的资产——真诚与信任。您的故事和产品深深打动了观众的心，这是极其珍贵的潜力资产。接下来，只需为这份真诚注入更科学的节奏和精准的转化策略，您将从一位温和的“分享者”，自然转变为掌控全场的“价值引领者”。成交，将成为您释放全部魅力后水到渠成的结果。期待您下一场直播的精彩绽放！

---
## 5. 最终输出
请根据用户提供的三份材料，严格按照上述【参考案例】的结构和分析深度，生成一份完整的《直播复盘与成长规划报告》。确保语言平实易懂，建议落地可执行。

Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (HIGH)