ZSXQ Digest
Overview
Use this skill to turn private Knowledge Planet activity into either:
- - a compact daily briefing
- or a per-circle stream digest that more faithfully preserves recent visible content
Default to the stream digest when the user wants a neutral, high-density summary with minimal commentary.
Default to local private token/session mode because many OpenClaw deployments run on VPS, Mac mini, or other remote hosts where browser relay is inconvenient. Use browser relay as the secondary path for local environments, verification, or recovery. Never ask to publish raw passwords, cookies, or private tokens with the skill.
Supported access modes
Choose the least risky workable mode in this order:
- 0. Auth bootstrap mode (first-run authorization)
- If no valid local token/session exists yet, enter a guided bootstrap flow.
- Prefer host-side browser bootstrap when browser tooling is available.
- If browser bootstrap cannot recover a usable token, fall back to manual token import.
- Do not pretend a plain remote URL alone is a guaranteed OAuth-style binding flow.
- 1. Local private session mode (preferred steady state)
- Allow the user to keep a token/session file locally under
state/ or another gitignored path.
- Treat these files as private runtime state, never as distributable assets.
- Validate freshness before use and surface explicit expiry/login-failed errors.
- Center the schema on
zsxq_access_token.
- 2. Browser relay mode
- Use a logged-in browser tab attached through OpenClaw browser tooling.
- Prefer
profile="chrome" when the user is using the Chrome extension relay.
- Use this for local environments, browser-first users, or when token mode needs manual recovery/verification.
- If token mode hits transient API instability (for example intermittent internal-error responses), prefer retry + browser fallback before asking the user to re-login.
- 3. Fetch fallback mode
- Treat this as viability-probe-only.
- Attempt only if the target environment lacks browser ability and a fetch path is known to work.
- If fetch cannot carry the login state or returns incomplete content, fail clearly and recommend token mode or browser mode.
Workflow
- 1. Confirm scope.
- Ask which followed planets or categories to track.
- Ask for the time window: today, last 24 hours, or since the last digest.
- Ask whether the user wants all updates or only high-signal items.
- If the joined-group list contains expired, archived, or intentionally ignored planets, keep an explicit allow/deny list in a local groups file or via CLI excludes instead of blindly summarizing everything returned by
/v2/groups.
- 2. Select an access mode.
- If no valid token/session exists yet, start auth bootstrap mode first.
- Prefer local private session mode once a reusable token exists.
- If browser-assisted first-run auth is needed, prefer the unified entrypoint
scripts/run_browser_bootstrap.py before dropping down to the lower-level helper scripts.
- If token mode is invalid or blocked, try browser relay mode for recovery/verification.
- If neither is available, test whether fetch fallback is viable.
- If none work, stop and return a specific action item instead of guessing.
- 3. Validate authentication before extraction.
- Confirm the response or page represents a logged-in state.
- Detect obvious failure modes: expired token, login page, QR prompt, permission denied, empty feed, or fetch blocked.
- Surface these states explicitly.
- 4. Collect update units.
- Capture circle name, post title or first line, author, timestamp, link, tags if visible, and engagement hints if available.
- Keep raw extraction lightweight. Only preserve fields needed for ranking and digest generation.
- If long content is collapsed, prefer preview capture plus
PARTIAL_CAPTURE over aggressive expansion during MVP.
- 5. Normalize, truncate, and deduplicate.
- Merge repeated captures of the same post.
- Separate content types when possible: long post, Q&A, resource drop, event notice, recruitment, ad, chatter.
- Prefer canonical post links or stable IDs.
- Apply hard limits to preview length and total digest input size before model summarization.
- 6. Score for click-through value.
- High priority: thesis changes, original analysis, concrete tactics, datasets, tools, model updates, resource bundles, deadlines, policy changes.
- Medium priority: routine discussion with some takeaways.
- Low priority: reposts, greetings, generic chat, duplicate notices.
- 7. Produce the digest.
- Prefer the stream digest as the default public output.
- Group by circle.
- For each circle, expand 1~3 representative items.
- Render the remaining items as compact summaries with original URLs.
- Keep visible metadata light.
- Prefer showing only useful reader-facing context such as
摘要时间跨度 and
作者 when available.
- For normal discussion / Q&A items, prefer one concise sentence that says what the item is about.
- Do not force visible fields like “why it matters” unless the user asks for a stronger editorial mode.
Delivery modes
Implement these in phases:
- 1. MVP
- Single manual run: collect recent updates and produce one digest.
- Token/session mode first; browser relay secondary.
- 2. V1
- Daily scheduled digest at a fixed time.
- Use a local cursor file to suppress repeats.
- 3. V2
- Optional low-frequency incremental alerts.
- Do not market this as true realtime push unless the environment genuinely supports that safely.
Error handling requirements
Never fail silently. Return a clear status and next action.
Minimum explicit statuses:
- - INLINECODE8
- INLINECODE9
- INLINECODE10
- INLINECODE11
- INLINECODE12
- INLINECODE13
- INLINECODE14
- INLINECODE15
- INLINECODE16
- INLINECODE17
- INLINECODE18
- INLINECODE19
- INLINECODE20
- INLINECODE21
- INLINECODE22
- INLINECODE23
- INLINECODE24
- INLINECODE25
For each failure, tell the user what happened, what was attempted, and the recommended next step.
Private state rules
- - Keep all private runtime state under gitignored paths.
- Suitable examples:
state/session.token.json, state/cursor.json, state/config.json, state/groups.json. - Never package these files into the public skill release. If the working tree contains live runtime files, stage a sanitized copy first or use
scripts/package_public_release.py. - Never hardcode personal circle names or secrets into
SKILL.md, scripts, or references unless the user explicitly wants a private fork.
Output format
Preferred public stream layout:
CODEBLOCK0
Rules:
- - Avoid noisy technical headers in the default user-facing output.
- Prefer concise, readable summaries over operational metadata.
- For grouped news/link-list posts, keep the public default conservative; circle-specific custom handling should stay optional/local.
If reliable extraction is incomplete, explicitly mark missing scope instead of guessing.
Read these references when needed
- - For field selection and acquisition tradeoffs: INLINECODE32
- For normalization and ranking output fields: INLINECODE33
- For auth, fallback, config, and error strategy: INLINECODE34
- For the auth bootstrap decision and first-run login flow: INLINECODE35
- For token extraction and handling: INLINECODE36
- For browser fallback and recovery contract: INLINECODE37
- For a browser-to-JSON recovery workflow: INLINECODE38
- For the starter browser evaluate payload: INLINECODE39
- For deterministic auth-bootstrap state + token finalization: INLINECODE40
- For preparing the real Knowledge Planet login page into QR mode: INLINECODE41
- For probing real WeChat QR state in the embedded login flow: INLINECODE42
- For exporting a local tracked-groups config from the live token: INLINECODE43
- For the single browser-assisted bootstrap workflow entrypoint: INLINECODE44
- For synchronizing bootstrap state from the browser helpers: INLINECODE45
- For CDP-based browser cookie extraction after login: INLINECODE46
- For the locked implementation route: INLINECODE47
Guardrails
- - Respect private-content boundaries. Package workflow and scripts, not personal data.
- Assume site structure or API behavior may change. Keep selectors and parsers isolated so they can be updated quickly.
- Prefer token/session mode for deployment compatibility.
- Use browser relay as the main recovery and verification path.
- Treat fetch fallback as experimental, not as a guaranteed replacement for authenticated access.
- If access is blocked, stop and explain the failure instead of fabricating summaries.
ZSXQ Digest
概述
使用此技能将私有知识星球动态转化为:
- - 一份紧凑的每日简报
- 或一份更忠实保留近期可见内容的按星球信息流摘要
当用户需要中立、高密度且附带最少评论的摘要时,默认使用信息流摘要。
默认使用本地私有令牌/会话模式,因为许多 OpenClaw 部署运行在 VPS、Mac mini 或其他远程主机上,浏览器中继在这些环境中并不方便。将浏览器中继作为本地环境、验证或恢复的次要路径。切勿要求使用此技能发布原始密码、Cookie 或私有令牌。
支持的访问模式
按以下顺序选择风险最低的可行模式:
- 0. 认证引导模式(首次运行授权)
- 如果尚不存在有效的本地令牌/会话,则进入引导式引导流程。
- 当浏览器工具可用时,优先使用主机端浏览器引导。
- 如果浏览器引导无法恢复可用的令牌,则回退到手动令牌导入。
- 不要假装一个普通的远程 URL 本身就是一个有保证的 OAuth 风格绑定流程。
- 1. 本地私有会话模式(首选稳定状态)
- 允许用户在 state/ 或其他被 gitignore 忽略的路径下本地保存令牌/会话文件。
- 将这些文件视为私有运行时状态,绝不可作为可分发的资产。
- 在使用前验证其新鲜度,并明确显示过期或登录失败的错误。
- 以 zsxq
accesstoken 为核心模式。
- 2. 浏览器中继模式
- 使用通过 OpenClaw 浏览器工具附加的已登录浏览器标签页。
- 当用户使用 Chrome 扩展中继时,优先使用 profile=chrome。
- 用于本地环境、浏览器优先用户,或当令牌模式需要手动恢复/验证时。
- 如果令牌模式遇到临时的 API 不稳定(例如间歇性的内部错误响应),在要求用户重新登录之前,优先尝试重试 + 浏览器回退。
- 3. Fetch 回退模式
- 仅将其视为可行性探测。
- 仅当目标环境缺乏浏览器能力且已知 fetch 路径有效时尝试。
- 如果 fetch 无法携带登录状态或返回不完整内容,则明确失败,并推荐令牌模式或浏览器模式。
工作流程
- 1. 确认范围。
- 询问要跟踪哪些已关注的星球或分类。
- 询问时间窗口:今天、过去 24 小时或自上次摘要以来。
- 询问用户是想要所有更新还是仅高信号项目。
- 如果已加入的群组列表包含已过期、已归档或有意忽略的星球,则在本地群组文件中或通过 CLI 排除项维护一个明确的允许/拒绝列表,而不是盲目总结 /v2/groups 返回的所有内容。
- 2. 选择访问模式。
- 如果尚不存在有效的令牌/会话,则首先启动认证引导模式。
- 一旦存在可重用的令牌,优先使用本地私有会话模式。
- 如果需要浏览器辅助的首次运行认证,在降级到较低级别的辅助脚本之前,优先使用统一入口点 scripts/run
browserbootstrap.py。
- 如果令牌模式无效或被阻止,则尝试浏览器中继模式进行恢复/验证。
- 如果两者都不可用,则测试 fetch 回退是否可行。
- 如果都不起作用,则停止并返回一个具体的操作项,而不是进行猜测。
- 3. 在提取前验证认证。
- 确认响应或页面代表已登录状态。
- 检测明显的失败模式:令牌过期、登录页面、二维码提示、权限拒绝、空信息流或 fetch 被阻止。
- 明确显示这些状态。
- 4. 收集更新单元。
- 捕获星球名称、帖子标题或第一行、作者、时间戳、链接、可见的标签以及可用的互动提示。
- 保持原始提取的轻量级。仅保留排名和摘要生成所需的字段。
- 如果长内容被折叠,在 MVP 期间优先使用预览捕获加上 PARTIAL_CAPTURE,而不是激进地展开。
- 5. 规范化、截断和去重。
- 合并同一帖子的重复捕获。
- 尽可能区分内容类型:长帖、问答、资源分享、活动通知、招聘、广告、闲聊。
- 优先使用规范的帖子链接或稳定 ID。
- 在模型总结之前,对预览长度和总摘要输入大小应用硬性限制。
- 6. 为点击价值评分。
- 高优先级:论点变化、原创分析、具体策略、数据集、工具、模型更新、资源包、截止日期、政策变化。
- 中优先级:带有一些收获的常规讨论。
- 低优先级:转发、问候、泛泛聊天、重复通知。
- 7. 生成摘要。
- 默认公开输出优先使用信息流摘要。
- 按星球分组。
- 对于每个星球,展开 1~3 个代表性项目。
- 将剩余项目渲染为紧凑摘要并附上原始 URL。
- 保持可见元数据轻量。
- 优先仅显示对读者有用的上下文,例如 摘要时间跨度 和 作者(当可用时)。
- 对于常规讨论/问答项目,优先使用一句简洁的话说明该项目是关于什么的。
- 除非用户要求更强的编辑模式,否则不要强制显示“为何重要”等可见字段。
交付模式
分阶段实现:
- 1. MVP
- 单次手动运行:收集近期更新并生成一份摘要。
- 令牌/会话模式优先;浏览器中继其次。
- 2. V1
- 在固定时间每日定时摘要。
- 使用本地游标文件抑制重复。
- 3. V2
- 可选的低频增量提醒。
- 除非环境确实能安全支持,否则不要将其宣传为真正的实时推送。
错误处理要求
切勿静默失败。返回清晰的状态和下一步操作。
最低限度的明确状态:
- - AUTHBOOTSTRAPREQUIRED
- QRREADY
- QREXPIRED
- AUTHWAITINGCONFIRMATION
- AUTHCAPTUREUNVERIFIED
- AUTHBOOTSTRAPFALLBACKMANUAL
- NOTLOGGEDIN
- LOGINREQUIREDQR
- TABNOTFOUND
- BROWSERUNAVAILABLE
- FETCHUNSUPPORTED
- TOKENMISSING
- TOKENINVALID
- TOKENEXPIRED
- ACCESSDENIED
- EMPTYRESULT
- QUERYFAILED
- PARTIALCAPTURE
对于每次失败,告知用户发生了什么、尝试了什么以及推荐的下一步操作。
私有状态规则
- - 将所有私有运行时状态保存在被 gitignore 忽略的路径下。
- 合适的示例:state/session.token.json、state/cursor.json、state/config.json、state/groups.json。
- 切勿将这些文件打包到公开的技能发布中。如果工作树包含实时运行时文件,请先准备一份清理后的副本,或使用 scripts/packagepublicrelease.py。
- 除非用户明确想要一个私有分支,否则切勿将个人星球名称或秘密硬编码到 SKILL.md、脚本或引用中。
输出格式
首选的公开信息流布局:
markdown
知识星球信息流摘要
星球名
重点展开
1. 标题
其余更新
- 原文:https://...
规则:
- - 在默认面向用户的输出中避免嘈杂的技术标题。
- 优先使用简洁、可读的摘要而非操作元数据。
- 对于分组的新闻/链接列表帖子,保持公开默认的保守性;特定星球的定制处理应保持可选/本地化。
如果可靠提取不完整,则明确标记缺失的范围,而不是进行猜测。
需要时阅读以下参考资料
- - 关于字段选择与获取权衡:references/extraction-strategy.md
- 关于规范化与排名输出字段:references/output-schema.md
- 关于认证、回退、配置与错误策略:references/runtime-modes.md
- 关于认证引导决策与首次运行登录流程:references/auth-bootstrap.md
- 关于令牌提取与处理:references/session-token-guide.md
- 关于浏览器回退与恢复协议:references/browser-recovery.md
- 关于浏览器到 JSON 的恢复工作流程:references/browser-workflow.md
- 关于入门级浏览器评估载荷:scripts/browsercapturestarter.js
- 关于确定性认证引导状态 + 令牌最终化:scripts/authbootstrap.py
- 关于将真实知识星球登录页面准备为二维码模式:scripts/preparezsxqqrbootstrap.js
- 关于在嵌入式登录流程中探测真实微信二维码状态