last30days-skill-cn
Jesseovo
last30days-cn 是一个 AI Agent 技能(Skill),能够自动搜索中国互联网 8 大主流平台最近 30 天的内容,综合分析后生成有据可查的研究报告。
Zhiye-Tang/weibo-wallpaper-dsh-plugin
把微博博主的相册变成(DSH)Web 界面壁纸的宿主插件。每次打开 DSH 自动检查微博:同一天跳过,跨天/跨月增量下载,按月归档到本地 YYYY-MM 文件夹,首次启用自动回填今年1月到上个月的历史相册。即一个插件、一个你本人的微博 Cookie,就可同时跟踪多位博主(每人独立文件夹与状态) 三种显示模式 + 月份切换,控制条常驻页面底部。A DSH host plugin that syncs a Weibo blogger's album by month into local folders and shows them as the wallpaper behind the DSH web UI. Cookie is required and stay local.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:Zhiye-Tang/weibo-wallpaper-dsh-plugin
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
把微博博主的相册/微博媒体变成 DeepSeek Harness(DSH)Web 界面壁纸的宿主插件。
YYYY-MM 文件夹English: A DSH (DeepSeek Harness) host plugin that syncs a Weibo blogger's album/media by month into local
YYYY-MMfolders and shows them as the wallpaper behind the DSH web UI. Cookie is required and stays local. Still under active development — feedback welcome.
⭐ 如果这个项目对你有帮助,欢迎点个 Star —— 它是作者持续开发的动力。(完整英文版见文末
#english-documentation。)
以下为离线界面示意(深色主题下渲染),实际观感以你的 DSH 主题与壁纸内容为准。
| 毛玻璃(glass) | 全透明(clear) | 全遮挡(solid) |
|---|---|---|
![]() |
![]() |
![]() |
控制条按钮从左到右:上一张 ⏮ · 播放/暂停 ⏯ · 下一张 ⏭ · 切换博主(多博主时出现) · 切换月份 · 立即检查 ⟳ · 设置 Cookie 🔑 · 显示模式(点击循环切换)。三种模式图标与含义:
| 模式 | 图标 | 效果 |
|---|---|---|
| 全遮挡 solid | ● | 界面保持默认不透明,壁纸被完全遮挡(相当于关闭壁纸) |
| 半透明毛玻璃 glass | ◐ | 默认模式:界面变半透明 + 毛玻璃模糊,壁纸透出 |
| 全透明 clear | ◯ | 界面完全透明,壁纸直接铺满背景 |
📸 真实运行截图(TODO):上方为离线界面示意。壁纸在你的 DSH 上跑起来后,用系统截图工具(Snipping Tool / Win+Shift+S)截取真实页面,保存为
docs/screenshots/live-dark.png、live-light.png,并把上表换成真实截图(欢迎提交 PR)。docs/social-preview.png为 1280×640 社交预览图,可上传到 GitHub 仓库设置 → Social preview。
zly-wallpaper-boot)轮询引擎状态,页面一旦就绪自动挂载壁纸层;已打开的旧页面也能自愈出现壁纸。YYYY-MM 文件夹。YYYY-MM 全部归档;断点续传(记录页码),一次没翻完,下次打开自动继续;已下载文件不会重复下载。config.json 里可配置任意博主列表(uid + 名字),每位博主拥有独立子目录 state.json 与 albums/;控制条下拉即可切换当前壁纸博主。/zly-wallpaper/* HTTP 路由,本地图片/视频直接由 DSH 进程伺服,视频自动静音循环/续播下一张。fs/fetch 实现,不引入任何 npm 运行时依赖。DSH 基于 Cordis 组合。本插件以用户 profile 补丁层的两个插件行存在(cordis.patch.yml 的 - insert:),随 profile 启动即被 Cordis 挂载:
| 插件 | 作用 |
|---|---|
zly-wallpaper-engine |
引擎本体:同步/回填/多博主/HTTP 路由/向 index 注入壁纸层 |
zly-wallpaper-boot |
引导补丁:对每个页面注入 boot.js,免刷新自动挂载壁纸 |
数据布局(root 由 config.json 指定):
<root>/ui.json 展示偏好(模式/间隔/当前博主/所选月份)
<root>/<uid>/state.json 该博主抓取状态(含 Cookie,勿外传、勿入库)
<root>/<uid>/albums/<YYYY-MM>/... 该博主的按月媒体(文件名 = 日期_媒体ID.扩展名)
旧版(v2,单博主平铺为
<root>/state.json+<root>/albums)会在首次启动时自动迁移到<uid>/子目录,无需手动搬文件。
web),支持用户补丁层 cordis.patch.yml定位你的 profile 目录
%USERPROFILE%\.dsh\profiles\<profile名>\,例如 C:\Users\<你>\.dsh\profiles\web\~/.dsh/profiles/<profile名>/cordis.patch.yml(或你将要创建它)与 profile 的 package.json。复制插件目录:把本仓库 plugins/ 下的 两个目录(zly-wallpaper-engine/、zly-wallpaper-boot/,连同各自的 package.json)原样复制到 profile 目录,与补丁文件同一层。
合并补丁行:把 install/cordis.patch.snippet.yml 中的 - insert: 条目合并进 profile 的 cordis.patch.yml(或 $DSH_HOME/cordis.patch.yml,作用于本机所有 profile)。
- insert: 的数组(空文件会导致启动失败)。生成配置:在 zly-wallpaper-engine/ 内把 config.example.json 复制为 config.json 并修改(见下一节)。
重启 DSH profile(不是只关标签页)。启动后浏览器打开 DSH 页面即可看到壁纸;若该标签页是重启前打开的,按一次 F5 装上引导脚本,之后无需再刷新。
⚠️ 为什么每个插件目录都要自带 package.json(含 name 与 version)? DSH 的插件清单会在每次模型请求时解析每个活动本地插件行;若最近的 package.json 只有
name没有version,会抛REQUEST_EXTENSION(报错形如 “DeepSeek request extension preparation failed”),导致所有模型请求失败。本仓库已配好,请勿删改。
文件位置:<profile>/zly-wallpaper-engine/config.json。缺省行为:不提供该文件时,root 默认 ~/.dsh/weibo-wallpaper,博主默认走路摇ZLY。最小示例:
{
"root": "D:/your/path/weibo-wallpaper-data",
"blogs": [
{ "uid": "1909576453", "name": "走路摇ZLY" }
]
}
root: 本地保存根目录(建议放在仓库之外,避免误提交)。留空 "" 用默认值。blogs: 要跟踪的博主数组。想加博主就把 uid 与名字加进数组,引擎会为每个 uid 单独建目录、单独检查与回填:{
"root": "D:/your/path/weibo-wallpaper-data",
"blogs": [
{ "uid": "1909576453", "name": "走路摇ZLY" },
{ "uid": "5611884883", "name": "另一个博主" }
]
}
uid 即微博用户数字 ID(打开博主主页 URL weibo.com/u/<数字> 可得);name 仅用于界面显示(引擎也会尝试从微博资料接口读取真实昵称)。
Cookie 不属于本文件:它由页面 🔑 按钮写入,存在 <root>/<uid>/state.json。
本项目使用 m.weibo.cn 的移动端网页接口,需要你本人的登录 Cookie(用于通过接口风控;内容可见范围 = 你账号能看到的内容)。
https://m.weibo.cn(必须是 m.weibo.cn,不是 www.weibo.com);F12 打开开发者工具 → Network(网络)面板 → 刷新页面;api/container 或 statuses 请求 → Headers(请求头) → 找到 Cookie: 整段;SUB= 开头、很长);<root>/<uid>/state.json,插件不上传;但它是你账号的登录凭据,不要贴进任何 Issue、截图或聊天记录。432/登录态失效时,重复上述步骤更新即可(🔑 内留空提交 = 清除)。YYYY-MM 文件夹存入当月内容;432 或登录提示,插件会标记"需登录"并暂停回填,不会死循环请求。.gitignore 已忽略 state.json/ui.json/albums/真实 config.json;请确保运行目录在仓库之外或保持被忽略。432 风控)、改版或封禁接口。插件已内置节流(每页/每文件间隔 250–900ms)、失败跳过与断点续传来降低触发概率,但不能保证永不被限。| 现象 | 处理 |
|---|---|
| 页面没有壁纸/控制条 | ① 确认已完整重启 profile;② 浏览器旧标签按一次 F5;③ 地址访问 http://127.0.0.1:3080/zly-wallpaper/state(端口以你的 DSH 为准),返回 JSON 且 ok:true 说明引擎在线 |
| 标签显示"需登录:点🔑粘贴Cookie后⟳" | Cookie 缺失/过期:重新获取并 🔑 设置,再 ⟳ |
标签显示 432 / 登录态失效 / api-err |
同上的风控或过期;稍后重试;若持续,可能是接口限流或微博改版,请开 Issue |
| 标签显示"历史回填进行中" | 正常,等待或下次打开自动续传;点 ⟳ 可推进 |
| 该月无内容 | 该博主当月确实没有新微博,或 Cookie 可见范围不足(如博主仅粉丝可见的内容) |
所有模型请求报 REQUEST_EXTENSION |
某个本地插件行缺少带 version 的 package.json——检查本插件的两个目录(以及你其它本地插件),确保 package.json 同时含 name+version |
| 想彻底关闭壁纸 | 从 cordis.patch.yml 移除两条 insert 行(或删除插件目录)并重启 |
weibo-wallpaper-dsh/
├─ plugins/
│ ├─ zly-wallpaper-engine/ # 引擎(宿主插件)
│ │ ├─ index.cjs # 全部逻辑(同步/回填/多博主/路由/注入)
│ │ ├─ package.json # 必须保留(name+version,防 REQUEST_EXTENSION)
│ │ └─ config.example.json # -> 复制为 config.json 后编辑
│ └─ zly-wallpaper-boot/ # 免刷新引导(宿主插件)
│ ├─ index.cjs
│ └─ package.json
├─ install/cordis.patch.snippet.yml# 安装补丁示例(合并进 profile 的 cordis.patch.yml)
├─ scripts/check.cjs # 发布质量检查:语法/清单/敏感信息/个人数据
├─ test/smoke.cjs # 离线烟雾测试(假网络/假 ctx,28 项断言)
├─ docs/ # 效果截图 / 社交预览图 / 发布文案草稿
└─ .github/ # Issue(🐛/💡)与 PR 模板
开发/自检命令(需要 Node ≥ 18,均在仓库根目录执行):
node scripts/check.cjs # 推送前静态自检(语法、package.json、无作者路径/Cookie 泄漏、无个人数据入库)
node test/smoke.cjs # 离线烟雾测试:旧数据迁移、多博主抓取、路由、Cookie 落盘等 28 项断言
提示:冒烟测试会把引擎复制到仓库内
.smoke/(已被 .gitignore 忽略)并模拟全部网络响应,不会访问真实微博,可放心运行。
本项目仍在持续开发中,功能与稳定性都会继续完善。我们非常欢迎你提出宝贵意见和建议:
node scripts/check.cjs 与 npm test,再提 PR(见 PR 模板)已知候选方向(欢迎投票/补充):Cookie 到期自动提醒;按需只存图片或只存视频;单视频循环时长与清晰度选项;把同步结果推送到页面角标;打包为可 dsh plugin add 的 bundle 便于一键安装;多语言 README。
weibo-wallpaper-dsh turns a Weibo blogger's album/media into the wallpaper of the DSH (DeepSeek Harness) Web UI. It is a host-level Cordis plugin composed into your DSH profile:
YYYY-MM folders.⭐ If you find this useful, please star the repo — it is the main fuel for continued development.
Prerequisites: a DSH installation with a Web GUI profile (commonly named web) that supports the user patch layer cordis.patch.yml; Node ≥ 18 (the DSH bundled runtime already satisfies this); a Weibo account for the cookie.
%USERPROFILE%\.dsh\profiles\<profile>\ on Windows or ~/.dsh/profiles/<profile>/ on macOS/Linux. It is the folder that holds (or will hold) the profile's cordis.patch.yml.plugins/ folders (zly-wallpaper-engine/, zly-wallpaper-boot/, each with its package.json) into that profile directory, next to the patch file.- insert: entries from install/cordis.patch.snippet.yml into the profile's cordis.patch.yml (or into $DSH_HOME/cordis.patch.yml to apply to every profile). Never overwrite an existing file wholesale — it may already contain your own patches.zly-wallpaper-engine/, copy config.example.json → config.json and edit it (see below).⚠️ Why must each plugin folder ship its own
package.jsonwith bothnameandversion? DSH's plugin inventory resolves every active local plugin row against its nearest manifest on every model request; a manifest with anamebut noversionmakes every request fail withREQUEST_EXTENSION(“DeepSeek request extension preparation failed”). Keep the provided manifests intact.
File: <profile>/zly-wallpaper-engine/config.json. If absent, defaults apply: root → ~/.dsh/weibo-wallpaper, bloggers → 走路摇ZLY.
{
"root": "D:/your/path/weibo-wallpaper-data",
"blogs": [
{ "uid": "1909576453", "name": "走路摇ZLY" }
]
}
root: local data root (keep it outside the repository!). Empty string uses the default.blogs: list of uid + name. Add another entry to track another blogger — each uid gets its own state and albums/ subfolder. uid is the numeric Weibo user id (from weibo.com/u/<number> on the profile page). Cookies are not stored here; they are set from the UI and stored in <root>/<uid>/state.json.The plugin talks to the m.weibo.cn mobile JSON API, which needs a cookie from your own logged-in account (content reach = whatever your account can see).
https://m.weibo.cn (must be m.weibo.cn, not www.weibo.com).api/container or statuses request → copy the full Cookie: request header (usually starts with SUB=).<root>/<uid>/state.json. Never paste it into issues, screenshots, or chats.432/login-gate, repeat the steps. Submitting an empty value clears the cookie.YYYY-MM folder.state.json, ui.json, albums/ and real config.json are git-ignored; keep the runtime root outside the repository.432), change, or block endpoints. The plugin throttles requests (250–900 ms between pages/files), skips failures and resumes from checkpoints, but cannot guarantee immunity.fs/fetch.node scripts/check.cjs (static: syntax, manifests, no author paths / cookies / personal data) and node test/smoke.cjs (offline 28-assertion smoke test with a stubbed network — safe to run).Under active development — all feedback is welcome. Bug reports and feature ideas via Issues (templates provided), code via PRs (run the checks above first). See the Chinese sections above for the known roadmap candidates.
MIT © 汤志烨. Downloaded media remains the property of its original authors; use it for personal, local purposes only.
MIT © 汤志烨。下载的媒体内容版权归原作者所有,请仅作个人本地自用。
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: wallpaper-plugin。