Skill: freedompixels/cn-social-reply (version 1.2.5)

--- slug: cn-social-reply name: 社交媒体回复助手 version: "1.0.0" author: 千策 --- # 社交媒体智能回复助手 为内容创作者智能生成评论回复，提升互动率、维护粉丝关系。 ## 🎯 核心能力 | 功能 | 说明 | |------|------| | **单条回复** | 输入评论 + 上下文，生成精准回复 | | **批量回复** | 一次处理多条评论，统一风格 | | **风格切换** | 幽默 / 专业 / 温暖 / 高情商 / 互动引导 / 毒舌俏皮 | | **平台适配** | 自动匹配平台调性（小红书emoji风 / 抖音口语化 / 知乎理性风等） | | **风格模板** | 保存/加载个人回复风格偏好 | ## 📋 使用方式 ### 方式一：直接给出评论 ``` 用户：帮我回这条评论 "你皮肤真好，用的什么护肤品？" ``` Agent 会分析评论意图，直接生成合适回复。 ### 方式二：指定平台+风格 ``` 用户：小红书评论回复，幽默风格： 1. "姐妹你这个妆也太好看了吧！" 2. "求教程！急！" 3. "口红什么色号啊" ``` Agent 会按指定平台风格批量生成回复。 ### 方式三：附带帖子上下文 ``` 用户：我刚发了一篇测评iPhone 16的文章，这几条评论帮我回一下： 1. "电池续航真的提升了吗？" 2. "对比安卓优势在哪？" 3. "值不值得从14升级？" ``` ### 方式四：管理风格模板 ``` 用户：保存我的回复风格 - 偏专业但不枯燥，偶尔抛梗，字数控制在20字以内 用户：加载我的回复风格 ``` ## 🧠 回复策略详解 ### 1. 幽默风格 😄 - 适度玩梗，自嘲/调侃，拉近距离 - 例：评论"太厉害了吧" → "主要是脸皮够厚😂 试试你也行" ### 2. 专业风格 🧐 - 认真回答，展现专业度，适当科普 - 例：评论"这个真的有用吗" → "从成分角度看，XX确实有XX临床数据支撑，但效果因人而异" ### 3. 温暖风格 🥰 - 走心回应，表达感谢，建立情感连接 - 例：评论"好喜欢你的内容" → "这句话是我今天收到最好的礼物，谢谢你在❤️" ### 4. 高情商风格 🎯 - 巧妙化解尴尬，照顾多方感受，格局打开 - 例：评论"我觉得你这个不如XX" → "XX确实很棒！我也要多学习，各有各的好✨" ### 5. 互动引导风格 🚀 - 回复同时引导更多互动（提问、投票、@好友） - 例：评论"这也太好看了" → "你更喜欢A还是B？评论区告诉我～" ### 6. 毒舌俏皮风格 😏 - 带点小刺但有趣，适合个人风格鲜明的博主 - 例：评论"你怎么什么都会" → "会的多是因为……选择困难症😂" ## 📱 平台风格适配 | 平台 | 调性特征 | emoji使用 | 字数建议 | |------|----------|-----------|----------| | 小红书 | 闺蜜感、热情、emoji丰富 | 多，姐妹/宝/亲 | 15-40字 | | 抖音 | 口语化、接地气、网感 | 中等，哈哈/笑死 | 10-30字 | | 微博 | 简洁犀利、时事感 | 少，偶尔一个 | 10-25字 | | B站 | 二次元、梗多、真诚 | 中等，awsl/草 | 15-35字 | | 知乎 | 理性、有逻辑、深度 | 极少 | 30-80字 | ## 🔄 工作流程 Agent 收到回复请求后，按以下步骤执行： 1. **分析评论**：识别评论类型（提问/夸赞/吐槽/质疑/无关） 2. **确定平台**：用户指定或从上下文推断，默认小红书 3. **选择风格**：用户指定或从已保存模板加载，默认温暖风格 4. **生成回复**：按平台+风格生成 1-3 个候选回复 5. **展示结果**：带编号列出，用户可要求调整 ## 📁 数据存储 使用 `scripts/style_manager.py` 管理风格模板： ```bash # 保存风格 python3 {SKILL_DIR}/scripts/style_manager.py save --name "我的风格" --style "幽默" --extra "字数20字以内，偶尔抛梗，喜欢用[doge]表情" # 列出已保存的风格 python3 {SKILL_DIR}/scripts/style_manager.py list # 加载风格 python3 {SKILL_DIR}/scripts/style_manager.py load --name "我的风格" # 删除风格 python3 {SKILL_DIR}/scripts/style_manager.py delete --name "我的风格" ``` 风格数据存储在 `~/.qclaw/workspace/cn-social-reply/styles.json` ## ⚡ 快速开始示例 **最简用法：** ``` 帮我回这条评论："写得真好！关注了！" ``` **进阶用法：** ``` 小红书风格，帮我批量回复： 1. "姐妹你也太会穿了吧" 2. "链接链接链接！" 3. "这是P过的吧" 4. "请问多高呀" ``` **人设锁定：** ``` 我是一个科技博主，风格偏专业但轻松，帮我回： "这篇文章不太客观吧，感觉在给苹果洗地" ``` ## ⚠️ 注意事项 - 回复应该像真人，避免机器人感（不要每次都"谢谢您的关注"） - 遇到恶意评论/杠精，建议高情商化解而非对骂 - 不确定回复是否合适时，给用户多个选项让其选择 - 尊重用户人设，不要生成与博主风格冲突的回复

path: scripts/style_manager.py
content: #!/usr/bin/env python3
"""cn-social-reply 风格模板管理器"""
import argparse
import json
import os
import sys

STYLES_DIR = os.path.expanduser("~/.qclaw/workspace/cn-social-reply")
STYLES_FILE = os.path.join(STYLES_DIR, "styles.json")


def _ensure_dir():
    os.makedirs(STYLES_DIR, exist_ok=True)


def _load() -> dict:
    _ensure_dir()
    if os.path.exists(STYLES_FILE):
        with open(STYLES_FILE, "r", encoding="utf-8") as f:
            return json.load(f)
    return {"styles": {}}


def _save(data: dict):
    _ensure_dir()
    with open(STYLES_FILE, "w", encoding="utf-8") as f:
        json.dump(data, f, ensure_ascii=False, indent=2)


def cmd_save(args):
    data = _load()
    name = args.name
    data["styles"][name] = {
        "style": args.style,
        "extra": args.extra or "",
        "platform": args.platform or "通用",
        "created": args.created,
    }
    _save(data)
    print(f"✅ 风格模板「{name}」已保存")
    print(f"   策略: {args.style} | 平台: {args.platform or '通用'}")
    if args.extra:
        print(f"   备注: {args.extra}")


def cmd_list(args):
    data = _load()
    styles = data.get("styles", {})
    if not styles:
        print("📭 还没有保存任何风格模板")
        print("   用 save 命令创建：python3 style_manager.py save --name \"我的风格\" --style 温暖")
        return
    print(f"📋 已保存 {len(styles)} 个风格模板：\n")
    for i, (name, info) in enumerate(styles.items(), 1):
        print(f"  {i}. {name}")
        print(f"     策略: {info.get('style', '未设置')} | 平台: {info.get('platform', '通用')}")
        if info.get("extra"):
            print(f"     备注: {info['extra']}")
        print(f"     创建: {info.get('created', '未知')}")
        print()


def cmd_load(args):
    data = _load()
    styles = data.get("styles", {})
    name = args.name
    if name not in styles:
        available = ", ".join(styles.keys()) if styles else "无"
        print(f"❌ 未找到风格模板「{name}」")
        print(f"   已有模板: {available}")
        sys.exit(1)
    info = styles[name]
    print(f"✅ 已加载风格模板「{name}」")
    print(json.dumps(info, ensure_ascii=False, indent=2))


def cmd_delete(args):
    data = _load()
    styles = data.get("styles", {})
    name = args.name
    if name not in styles:
        print(f"❌ 未找到风格模板「{name}」")
        sys.exit(1)
    del styles[name]
    _save(data)
    print(f"🗑️ 风格模板「{name}」已删除")


def main():
    from datetime import datetime

    parser = argparse.ArgumentParser(description="cn-social-reply 风格模板管理")
    sub = parser.add_subparsers(dest="command")

    # save
    p_save = sub.add_parser("save", help="保存风格模板")
    p_save.add_argument("--name", required=True, help="模板名称")
    p_save.add_argument("--style", required=True, help="回复策略（幽默/专业/温暖/高情商/互动引导/毒舌俏皮）")
    p_save.add_argument("--extra", default="", help="额外备注（字数限制、口头禅等）")
    p_save.add_argument("--platform", default="", help="目标平台（小红书/抖音/微博/B站/知乎）")
    p_save.add_argument("--created", default=datetime.now().strftime("%Y-%m-%d %H:%M"))

    # list
    sub.add_parser("list", help="列出所有风格模板")

    # load
    p_load = sub.add_parser("load", help="加载风格模板详情")
    p_load.add_argument("--name", required=True, help="模板名称")

    # delete
    p_del = sub.add_parser("delete", help="删除风格模板")
    p_del.add_argument("--name", required=True, help="模板名称")

    args = parser.parse_args()
    if not args.command:
        parser.print_help()
        return

    cmds = {"save": cmd_save, "list": cmd_list, "load": cmd_load, "delete": cmd_delete}
    cmds[args.command](args)


if __name__ == "__main__":
    main()


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