sky-renwu-weibo,获取微博博主 @今天游离翻车了吗 的光遇国服每日任务,支持文字、图片、Puppeteer 卡片图和 QQ Markdown ✨

koishi-plugin-sky-renwu-weibo

koishi-plugin-sky-renwu-weibo

npm
npm-download

GitHub
Gitee

Koishi Forum
awa群-zyu建的qq群
光遇Bot群

💬 交流反馈

🐛 Bug 反馈 / 💡 建议 / 👨‍💻 插件开发交流,欢迎加群:

💬 插件使用问题 / 🐛 Bug反馈 / 👨‍💻 插件开发交流,欢迎加入QQ群:259248174 🎉(这个群G了)

💬 插件使用问题 / 🐛 Bug反馈 / 👨‍💻 插件开发交流,欢迎加入 awa群-zyu建的qq群:1085190201 🎉

🤖 光遇 Bot / QQ 官方 Bot / Koishi 相关交流,也欢迎加入光遇 Bot QQ 群:475328908

💡 在群里直接艾特我,回复的更快哦~ ✨

:date::white_check_mark: 获取微博博主 @今天游离翻车了吗 的光遇国服每日任务,支持文字、图片、Puppeteer 卡片图和 QQ Markdown :sparkles:

[!IMPORTANT]

:pray: 特别感谢微博博主 @今天游离翻车了吗 多年来稳定更新光遇每日任务内容。

这个插件只是做自动化获取和转发,真正持续维护每日攻略内容的是博主本人。

[!IMPORTANT]

:pray: 特别感谢 github.com/Kaguya233qwq/nonebot_plugin_sky 仓库提供的微博爬虫思路参考。

本插件在 TypeScript + Koishi 环境中重新实现相关流程。

[!TIP]

puppeteerassets 都是可选服务,不启用对应功能时不需要安装。

  • 启用 puppeteer-image 卡片图发送形式时,需要启用 Koishi 的 puppeteer 服务。
  • 启用 append-puppeteer-image QQ Markdown 按钮行为时,需要启用 Koishi 的 assets 服务,并确保 assetsselfUrl 公网可访问,否则 QQ 官方 Bot 无法访问图片 URL。

:pushpin: 指令

今日国服

命令名称可以在配置项 commandName 中修改。

:closed_lock_with_key: 微博 Cookie

微博接口通常需要登录 Cookie。可以运行仓库内的辅助脚本打开有头浏览器,手动登录微博后导出 weibo.com Cookie。

由于安全原因,插件不会内置任何微博登录 Cookie,也不建议把 Cookie 写进源码、README、issue 或聊天记录中。请自行登录微博并获取自己的 Cookie。

由于浏览器安全策略和跨域限制,Koishi Console 页面暂时无法直接读取 weibo.com 的登录 Cookie,因此获取 Cookie 的流程目前没有内置到浏览器 WebUI 中。后续如果找到更稳定、安全的实现方式,可能会在新版本中提供更方便的获取流程。

脚本说明见:scripts/readme.md

脚本会优先使用 --browser 传入的浏览器路径;如果没有传入,会依次尝试寻找下面这些默认路径:

C:\Program Files\Google\Chrome\Application\chrome.exe
C:\Program Files (x86)\Google\Chrome\Application\chrome.exe
C:\Program Files\Microsoft\Edge\Application\msedge.exe
/usr/bin/google-chrome
/usr/bin/chromium

你也可以使用 --browser 参数指定浏览器路径。

# 🪟 on Windows:使用默认路径自动查找
python scripts\20260630\weibo_cookie.py
# 🪟 on Windows:也可以使用 --browser 指定浏览器路径
python scripts\20260630\weibo_cookie.py --browser "C:\Program Files\Google\Chrome\Application\chrome.exe"
# 🐧 on Linux:使用默认路径自动查找
python scripts/20260630/weibo_cookie.py
# 🐧 on Linux:也可以使用 --browser 指定浏览器路径
python scripts/20260630/weibo_cookie.py --browser "/usr/bin/google-chrome"

运行后目录大致如下:

scripts/
└── 20260630/
├── weibo_cookie.py # 🌐 打开有头浏览器,登录微博并导出 Cookie
├── latest.debug.log # 🧾 调试日志,包含本地运行信息
├── weibo_cookie.private.txt # 🔐 需要填入配置项 weiboCookie 的值
└── .browser-profile/ # 🗂️ 隔离浏览器用户数据目录,可能包含登录态

weibo_cookie.private.txt 的内容填入 Koishi 插件配置项 weiboCookie

weibo_cookie.private.txtlatest.debug.log.browser-profile 都包含隐私信息,不要发给别人,也不要提交到 Git。

微博 Cookie 脚本示例

:speech_balloon: 输出方式

插件配置项 msgFormArr 是表格形式:每一行选择一种发送形式,并通过 enabled 控制是否启用。可以调整行顺序,插件会按表格顺序发送;strictOrderMode=false 时会并行发送,发送顺序不保证。

  • :page_facing_up::heavy_plus_sign::framed_picture: text-with-image:先文后图,一条消息内先发送微博长文本,再发送全部图片
  • :framed_picture::heavy_plus_sign::page_facing_up: image-with-text:先图后文,一条消息内先发送全部图片,再发送微博长文本
  • :page_facing_up: text:纯文字,只发送微博长文本、数据来源和原文链接
  • :package: forward:图文合并转发,把文字和图片打包进 OneBot 合并转发
  • :framed_picture: puppeteer-image:Puppeteer 卡片图,把文字和微博图片排版成一张圆角卡片图
  • :robot: qq-markdown:QQ 官方 Bot Markdown 正文消息,只有 QQ 官方 Bot 平台能用;操作按钮行为由 qqMarkdownButtonMode 控制

默认启用 forwardpuppeteer-image

puppeteer-image 模式需要启用 Koishi 的 puppeteer 服务;未启用时插件会跳过该发送形式。append-puppeteer-image 按钮行为还需要启用 Koishi assets 服务,并确保 assetsselfUrl 公网可访问,否则 QQ 官方 Bot 无法访问图片 URL。

:framed_picture: 效果预览

Puppeteer 卡片图预览

QQ Markdown 按钮预览

:wrench: 配置项

:key: 微博来源配置

配置项 类型 默认值 说明
commandName string "今日国服" 触发命令名称
uid string "7360748659" 微博用户 UID,默认是 @今天游离翻车了吗
authorName string "今天游离翻车了吗" 来源作者显示名,会展示在数据来源署名里
weiboCookie string "" 微博登录 Cookie,必填;可用 scripts/20260630/weibo_cookie.py 导出
matchPattern string 默认正则 筛选每日任务微博的正则表达式,微博文案格式变化时可调整

:globe_with_meridians: 请求与缓存配置

配置项 类型 默认值 说明
cacheMinutes number 20 内存缓存分钟数;0 表示不缓存
requestTimeout number 10000 微博请求超时时间,单位毫秒
userAgent string Edge/Chrome UA 请求微博使用的 User-Agent,通常保持默认即可

:speech_balloon: 消息发送形式配置

配置项 类型 默认值 说明
enableQuote boolean true bot 发送普通消息时是否引用触发指令;forward 合并转发模式不会附带引用
enableWaitingHint boolean true 是否显示“获取并生成中… 请耐心等待”等待提示;所有发送形式完成后会尝试撤回
msgFormArr { mode, enabled }[] 见默认表格 每日任务发送形式表格,可调整顺序,可启用 / 禁用;默认启用 forwardpuppeteer-image
strictOrderMode boolean true 是否严格按照表格顺序串行发送;关闭后会并行发送,顺序不保证

:robot: QQ 官方 Bot Markdown 适配

配置项 类型 默认值 说明
qqMarkdownMode "structured" | "blockquote" "structured" QQ Markdown 文案整理模式;structured 会尝试按正则整理标题、任务条目和来源,blockquote 会把全文逐行放进引用块
qqMarkdownButtonMode string[] [] QQ Markdown 按钮发送行为,可多选;standalone 单独发送固定的 ## 光遇任务操作按钮 消息并附带按钮,append-qq-markdown 在启用 qq-markdown 发送形式时把按钮挂到正文 Markdown 后面,append-puppeteer-image 在启用 puppeteer-image 发送形式时把 Puppeteer 卡片图通过 assets 转成公网 URL 后发送 Markdown 图片并附带按钮
qqMarkdownKeyboardJson string 默认按钮 JSON QQ Markdown 按钮 JSON 配置;默认一行两个按钮:再次获取 执行 ${commandName}玩玩别的 执行 help
append-qq-markdown 必须同时启用 qq-markdownappend-puppeteer-image 必须同时启用 puppeteer-image,并依赖 Koishi assets 服务提供公网 http(s) 图片地址。如果条件不满足,插件会在会话和 console 中提醒,但不会自动补发;不想在 QQ 平台发送按钮时保持空选即可。

:framed_picture: Puppeteer 卡片图配置

配置项 类型 默认值 说明
imageType "png" | "jpeg" | "webp" "png" Puppeteer 卡片图输出格式;PNG 不支持质量参数
screenshotQuality number 88 Puppeteer 卡片图截图质量,仅 JPEG / WEBP 生效
imageWidth number 980 Puppeteer 卡片图宽度,单位 px
useCustomFont boolean true 是否使用自定义字体路径;关闭后使用系统默认字体,并跳过默认字体下载
autoDownloadFont boolean true 是否自动下载并校验默认字体
imageFontPath string process.cwd()/data/fonts/LXGWWenKaiMono-Regular.ttf Puppeteer 卡片图字体路径;运行时自动映射到 ctx.baseDir/data/fonts/LXGWWenKaiMono-Regular.ttf

Puppeteer 卡片图默认使用 LXGWWenKaiMono-Regular.ttf。插件加载时会检查 ctx.baseDir/data/fonts/LXGWWenKaiMono-Regular.ttf。字体存在且 hash 校验通过时会跳过下载;缺失或校验失败时会尝试从 Gitee / GitHub 下载。配置项 useCustomFont=falseimageFontPath 为空时会使用系统默认字体。

:bug: 调试配置

配置项 类型 默认值 说明
verboseSessionLog boolean false 是否在会话中输出详细调试信息;当前关键条件不满足提醒会默认输出,此配置预留给后续更细的调试日志
verboseConsoleLog boolean false 是否在控制台输出详细调试信息;当前关键 fallback 提醒会默认输出。开启后会输出缓存、微博抓取、渲染、发送、assets 上传和字体检查细节
2 个赞

这个博主已经稳定更新了好几年的每日任务了(

他要是哪天不更新的话 那就我来更新 (正好养成一个每天打卡的习惯)

2 个赞

目前的方式还是通过cdp协议 监听浏览器的 登录过程 获取cookie,后面我会考虑开一个微博小号 贡献cookie 放到插件配置项的默认值,不过不知道会不会出问题(

我看bili-notify插件可以直接在插件的配置页面进行扫码登录B站,我研究研究能不能做个类似的:thinking:

2 个赞

装上了,好用 :innocent:

2 个赞

cool,yourwelcome ovo

1 个赞

图片
“version”: “0.2.0-beta.13+20260702”, 重构一下目录结构喵,使用起来的体验不会和之前差太多。现在本插件 在qq官bot 在markdown+按钮消息里面 发送图片 变成了2个方案,方案1: assets(需要启用提供assets服务的插件) 方案2:server (需要启用server插件) 共同点:并配置好公网能访问到的url捏, 推荐使用server,因为我看assets local插件貌似会在ctx.baseDir()/data/assets 下面放 文件名是sha1 hash的图片,而且没法删除,于是我采用server服务 把图片暴露到公网提供给腾讯,这个方案可以管理本地缓存的图片上限喵。


1 个赞

重新强调,你需要在assets 或 server服务中任选其一,当且仅当:你需要在qq 官bot平台,发送 markdown里面嵌入本地Puppeteer调用浏览器生成的浏览器图片,后面跟着按钮(可选) 这样消息的格式

像这样:

发送微博图片并不需要,因为微博的图片已经自带了url,只要你成功用py脚本调用浏览器登录 拿到微博登录cookie 就能获取到微博帖文图片的公网直链url

像这样:

1 个赞

还有个小小的更新,加了一小段tips

ea36c16d-6c9b-44fb-bde7-e5c00a32ef18
cb9ee4b6-0759-41aa-bae9-54c13a845510

1 个赞

更新一下微博登录 / 访问方案的进展。

之前插件主要推荐用 Python 辅助脚本获取微博 Cookie:脚本会启动本机 Chrome / Edge,通过 CDP 连接本机浏览器调试端口,在用户手动登录微博后读取 weibo.com 的网页 Cookie。这里不涉及读取密码,插件运行时也不会自动读取本地 txt 文
件,最终还是需要把导出的 Cookie 手动填到 Koishi 插件配置项里。

这几天重新研究了一下,找到了一条新的移动端免登录访问方式。目前插件已经改成默认策略 D:先尝试移动端无登录用户态获取微博列表;如果请求失败,或者没有匹配到当天每日任务,再 fallback 到 PC 微博网页登录态 Cookie。

图片
(默认值是D)

所以现在推荐使用方式变成:

  1. 先保持默认配置(先使用移动端接口免登录用户态,然后fallback到网页pc cookie),不填 Cookie 也可以尝试使用。
  2. 如果移动端免登录接口不稳定、被限制,或者当天内容没匹配到,再用 Python/CDP 脚本获取 PC 微博网页 Cookie 填入 weiboCookie 作为兜底。
  3. 访问策略仍然可以手动切换:只用 Cookie、只用无登录、先 Cookie 后无登录、先无登录后 Cookie。

我之前也考虑过开一个微博小号,把 Cookie 放到插件配置默认值里,但这个方案风险比较高:公共 Cookie 容易失效、被风控,也可能带来账号安全和滥用问题,所以暂时不打算这样做。

后面我会继续研究能不能像一些 bili-notify插件那样,直接在 Koishi 插件配置页完成扫码登录。不过微博这边受跨域、网页登录态、接口风控影响,能不能稳定做出来还不确定。目前比较现实的方案还是:默认移动端免登录,PC 网页 Cookie 作为可选
兜底。

1 个赞

一会发版0.3.x,喵喵喵,新增移动端免登录用户态请求

1 个赞

主要还是因为哔哩那边有完整的第三方API文档,登录、获取各种key、鉴权 都可以做到

其实我觉得,直接在微博官网登录 然后搭配js脚本一键复制cookie然后粘贴到koishi配置项里 也是不错的选择

你是说Tampermonkey是吧?确实,我感觉可以试试看 :+1: :+1:

1 个赞

0.3.1
新增–weibo参数,优先级是 options > config

(如果options里面指令了就用options,否则就用config里面的

1 个赞

还有 如果是qq官bot使用,请把puppeteer截图的出图格式改成jpg或者webp,然后截图质量数字调低,否则太大了 qqbot接口直接拒收 (感觉貌似是10MB还是多少?好像哈)


杂鱼腾讯,才多大就受不了了捏,zakkozakko