Skip to content

FuDujilm/NerkoAgent-QzoneSender

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QQ空间自动发布插件

完全独立的QQ空间自动发布插件,包含完整的QQ空间API实现、自动Cookie获取和评论监听功能。

✨ 特性

核心功能

  • 完全独立:内置完整QQ空间API实现,无需依赖其他插件
  • 自动Cookie管理:智能Cookie获取系统
    • 自动从Napcat获取Cookie
    • Napcat失败自动切换到二维码扫码模式
    • Cookie自动保存和重用
  • 智能内容生成:基于LLM的自然内容生成
    • 从群聊上下文自动生成贴近生活的说说
    • 可配置生成提示词
    • 支持自定义上下文消息数量
    • 内置内容安全清洗机制
  • 灵活定时发布
    • 使用CRON表达式精确控制发布时间
    • 支持随机延迟功能,让发布时间更自然
    • 可配置随机延迟时间范围(分钟级)
  • 评论智能监听
    • 自动定时检查说说评论
    • LLM生成智能回复
    • 评论去重防止重复回复
    • 可配置监听间隔

高级特性

  • 多模型备份机制
    • 主模型+备用模型双保险
    • 主模型失败自动切换到备用模型
    • 详细模型使用日志
  • 智能重试机制
    • 可配置重试次数(默认3次)
    • 可配置重试延迟(默认5秒)
    • 详细的重试日志记录
  • 手动控制方法
    • 手动发布说说(支持自定义内容)
    • 强制Cookie刷新
    • 手动评论检查
    • 手动生成内容预览
  • 安全测试模式
    • dry_run模式安全测试所有功能
    • 生成内容但不实际发布
    • 完整模拟运行流程
  • 动态依赖管理
    • 自动安装所需依赖(httpx, croniter)
    • 无需手动配置环境
  • 详细日志系统
    • Cookie获取状态
    • 内容生成过程
    • 发布结果反馈
    • 评论监听活动
    • 模型使用和重试记录

📦 开发安装

qzone_auto 目录放到NekroAgent插件目录:

nekro_agent/plugins/workdir/qzone_auto/

重启NekroAgent即可。

⚙️ 配置

方式一:Napcat自动获取Cookie(推荐)

进入Docker管理面板(这里用的1Panel),获取Napcat的局域网地址。 ![alt text](image.png)

进入Napcat管理面板,新建HTTP服务器 alt text 保持如下配置 alt text 来到NA的插件管理器(插件管理->Qzone Sender)填入配置。 alt text 修改完配置后建议重启NA!

# 基础配置
qq_account: "你的QQ号"

# Cookie自动获取(推荐)
enable_auto_cookie: true    # 启用自动获取
napcat_host: "127.0.0.1"    # Napcat地址
napcat_port: "9999"          # Napcat端口
napcat_token: ""             # Napcat token(如果有)

# 源群聊
source_chat_key: "onebot11_group_群号"
model_group: "default-chat"

# 定时发布
enable_auto_post: true
cron_expression: "0 9,21 * * *"

# 随机延迟(可选,让发布时间更自然)
enable_random_delay: true       # 启用随机延迟
random_delay_min: 0             # 最小延迟(分钟)
random_delay_max: 60            # 最大延迟(分钟)

# 评论监听
enable_comment_monitor: true    # 启用评论监听
monitor_interval_minutes: 5     # 每5分钟检查一次

# LLM配置
max_retries: 3                  # LLM调用重试次数
retry_delay_seconds: 5          # 重试延迟(秒)

dry_run: true  # 先测试

工作原理

  1. 首先尝试从Napcat获取Cookie
  2. 如果失败,自动生成二维码让你扫码登录
  3. Cookie会自动保存,下次直接使用

方式二:手动配置Cookie

如果不想自动获取,也可以手动配置:

qq_account: "你的QQ号"

# 关闭自动获取
enable_auto_cookie: false

# 手动填写Cookie
cookie_skey: "从浏览器复制"
cookie_p_skey: "从浏览器复制"
cookie_uin: "从浏览器复制"

# 其他配置同上...

获取Cookie步骤

  1. 浏览器登录QQ空间
  2. F12打开开发者工具
  3. Application → Cookies → https://qzone.qq.com
  4. 复制 skey, p_skey, uin 的值

🚀 快速开始

第一步:配置Napcat(如果使用自动获取)

确保Napcat正常运行并配置了 /get_cookies 接口。

第二步:配置插件

在NekroAgent配置界面填写:

  • QQ账号
  • Napcat信息(如果自动获取)
  • 源群聊chat_key
  • 模型组
  • 开启测试模式

第三步:重启测试

重启NekroAgent,查看日志:

  • 如果配置了Napcat,会自动从Napcat获取Cookie
  • 如果Napcat失败,会生成二维码,使用手机QQ扫描即可
  • 测试模式下会生成内容但不实际发布

第四步:正式运行

确认测试无误后,关闭 dry_run 即可正式运行。

📋 Cookie获取流程

启用自动获取Cookie
    ↓
尝试从Napcat获取
    ↓
成功? → 使用Cookie发布
    ↓ 否
生成二维码
    ↓
手机QQ扫码登录
    ↓
成功? → 保存Cookie → 发布
    ↓ 否
报错:无法获取Cookie

📝 功能说明

自动发布

  • 根据CRON表达式定时发布
  • 从群聊上下文生成内容
  • 自然贴近生活的动态

随机延迟发布

  • 在CRON触发时间基础上添加随机延迟
  • 让发布时间更加自然,不会每次都是固定时间
  • 例如:CRON设置为 0 9 * * *(每天9点),启用随机延迟 0-60 分钟
    • 实际发布时间会在 9:00-10:00 之间随机选择
  • 配置示例:
    enable_random_delay: true
    random_delay_min: 0      # 最少延迟0分钟
    random_delay_max: 120    # 最多延迟120分钟

评论监听

  • 定时检查说说评论
  • 自动识别新评论
  • LLM生成智能回复
  • 跳过已回复的评论

多模型备份

  • 配置主模型和备用模型
  • 主模型失败自动切换到备用模型
  • 支持多次重试机制
  • 详细的模型使用日志

🔧 常见问题

Napcat获取Cookie失败?

  1. 检查Napcat是否正常运行
  2. 检查端口和token是否正确
  3. 检查Napcat是否配置了 /get_cookies 接口

如果Napcat失败,插件会自动切换到扫码模式。

二维码在哪里?

二维码会保存在插件数据目录:

nekro_agent/data/plugins/qzone_auto/qrcode.png

日志会显示完整路径,使用手机QQ扫描即可。

Cookie会过期吗?

会的。Cookie过期后:

  • 如果配置了Napcat,会自动重新获取
  • 如果是扫码模式,需要重新扫码

找不到chat_key?

在群里发消息,查看NekroAgent日志即可看到chat_key。

生成内容不满意?

调整 generation_prompt 提示词或 context_message_count 数量。

📝 CRON示例

0 9 * * *        # 每天9点
0 9,21 * * *     # 每天9点和21点
0 */6 * * *      # 每6小时
0 12 * * 1-5     # 周一到周五12点

🎯 技术实现

Cookie管理系统

  • CookieManager: 自动Cookie管理(Napcat + 扫码)
    • 优先从Napcat获取Cookie
    • 失败自动降级到二维码扫码
    • Cookie自动保存和验证

QQ空间API客户端

  • QzoneAPI: 完整的QQ空间API实现
    • 发布说说(支持自定义内容)
    • 获取说说列表
    • 回复评论
    • 完整的签名和加密实现

智能调度系统

  • 定时任务: 基于croniter的精确调度
    • CRON表达式解析
    • 随机延迟注入
    • 自动计算下次执行时间
  • 评论监听: 异步协程后台监听
    • 定时轮询评论
    • 评论去重机制
    • 自动生成回复

LLM集成系统

  • 多模型支持: OpenAI兼容API
    • 主模型+备用模型
    • 自动模型切换
    • 可配置重试机制
  • 内容生成: 基于上下文的智能生成
    • 群聊历史分析
    • 内容安全清洗
    • 自然语言风格

插件架构

  • 动态依赖: 使用 dynamic_import_pkg 自动管理依赖
  • 异步协程: 后台任务不阻塞主程序
  • 数据库集成: 直接读取NekroAgent消息数据库
  • 沙盒方法: 4个手动控制工具
    • 手动发布说说
    • 强制刷新Cookie
    • 手动检查评论
    • 预览生成内容

可靠性保障

  • 重试机制: 可配置的重试次数和延迟
  • 错误处理: 完善的异常捕获和日志
  • 状态管理: 全局任务状态追踪
  • 评论去重: 内存中维护已处理评论ID集合

📄 文件说明

qzone_auto/
├── __init__.py    # 包初始化(5行)
├── plugin.py      # 完整实现(1092行)
│                  # - Cookie自动获取
│                  # - QQ空间API(发布/获取/回复)
│                  # - 定时发布任务
│                  # - 评论监听任务
│                  # - LLM调用
└── README.md      # 本文档

🔐 安全说明

  • Cookie会在内存中临时使用,不会被保存到配置文件
  • 扫码登录的二维码在登录成功后会自动删除
  • 建议使用Napcat模式,更加安全便捷
  • 评论ID去重防止重复回复

版本: 2.3.0 | 完全独立 | 自动Cookie | 评论监听 | 随机延迟 | 多模型备份 | 智能重试

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages