LINUX DO K12 空间 ID
核心规则
将本技能与 linux-do-research 配合使用,但保持路径收窄:候选主题发现、reader 验证、UUID 提取、来源标记和最终审计。代理、TLS、规范 reader URL、Cloudflare、搜索恢复和浏览器升级全部遵循 linux-do-research/references/network_workflow.md,本技能不重复定义网络策略。
快速流程
- 把“最近的 N 个帖子”理解为主题发布时间顺序,而不是回复/活跃顺序。
- 从已知高产发现路径开始:
- K12 聚合主题的 reader:
https://r.jina.ai/http://linux.do/t/topic/2514402; - 通过代理支持的 DDG/其他搜索 HTML 运行搜索查询:
site:linux.do/t/topic K12 空间IDsite:linux.do/t/topic K12 工作区IDsite:linux.do/t/topic K12 gmail 空间site:linux.do/t/topic "空间Id是"- 从相关主题表发现的精确标题。
- K12 聚合主题的 reader:
- 从所有
https?://linux.do/t/topic/<id>URL 中提取候选主题 ID。有标题文本时保留标题。 - 抓取后将
Published Time解析为带时区的 datetime 再排序,不按原始字符串排序。在时间戳缺失或无法解析时,才把 topic ID 降序作为该部分的兜底,并明确标记。 - 用 Jina reader URL 抓取每个候选:
https://r.jina.ai/http://linux.do/t/topic/<id> - 对每个主题记录:
- topic ID、标题、URL、
Published Time; - reader 返回的是原帖文本、private/404、rate limit,还是空内容/TLS 失败;
- 从可见文本、附件文件名和解码后的混淆内容中提取的 UUID;
- 状态警告,例如
已失效、结束、deactivated_workspace、Payment Required、429,或回复中说不可用。
- topic ID、标题、URL、
- 按 UUID 去重,但保留每个出现来源。
- 输出来源映射和纯文本 ID 列表:
uuid | source(s) | status/note。
避免事项
- 不要从直连
linux.do/search.json或直连论坛搜索页开始;它们常返回 Cloudflare、429 或长时间等待。 - 不要把
/latest当作发帖顺序。它是回复/活跃顺序。只用它发现近期主题 URL,然后验证每个主题的Published Time。 - 不要把搜索摘要当作最终证据。除非 reader 页面确认内容,否则标记为
search-snippet only。 - 不要为了找 space ID 而下载账号 bundle 或附件。像
sub2api-workspace-<uuid>.zip这样的附件文件名足以记录推断出的 workspace ID;除非正文确认,否则标记为 filename-derived。 - 不要解码或打印 access token、OAuth 凭据或完整账号 JSON。只提取非秘密 ID 和来源元数据。
- 除非用户要求浏览器/登录态读取,或最终答案否则会明显错误,否则不要使用浏览器兜底。如果使用浏览器兜底,遵循
linux-do-research的标签页生命周期规则。
提取规则
用以下规则识别 UUID 样式的 space ID:
\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b
当 UUID 出现在这些内容附近时,视为更强证据:
空间、空间ID、空间Id、工作区、工作区ID、workspace;- 例如
sub2api-workspace-<uuid>.zip的文件名; - 明确说
空间Id是 <uuid>的回复。
当 UUID 只出现在这些内容中时,视为较弱/推断证据:
- 通用
sub2api_<uuid>_*.zip文件名; request id、chatgpt_account_id或账号 JSON 字段;- 错误日志。此类情况只有在上下文清楚把它关联到 workspace/space ID 时才包含,或标明不确定原因。
处理 LINUX DO K12 帖子中常见的混淆:
- 移除 base64 字符串中插入的
编码或解码等标记词; - 规范化空白;
- 当解码后文本包含 UUID 时解码 base64 片段;
- 记录这些 ID 是从可见帖子文本解码得到的。
辅助脚本
标准流程使用 scripts/collect_k12_space_ids.py:
python "C:\Users\Wes\.codex\skills\linux-do-k12-space-id\scripts\collect_k12_space_ids.py" --limit 30
有用选项:
python "...collect_k12_space_ids.py" --limit 30 --extra-id 2531263 --extra-id 2531087
python "...collect_k12_space_ids.py" --candidate-id 2533655 --candidate-id 2531263 --candidate-id 2531087
python "...collect_k12_space_ids.py" --json
该脚本代理优先,不写文件,不下载附件,并打印发现覆盖和来源标记。默认输出区分 seed-topic 与 extra-search;使用 --candidate-id 时标记为 explicit-candidate。--limit 只限制 seed 主题发现结果,不截断显式 --extra-id。运行后,如果用户要求最大覆盖,对任何高价值的 private、failed 或 search-snippet-only 主题做人工检查。
需要交给 linux-do-research 补证时,传递:研究目标、seed topic、额外搜索查询和候选 ID、候选主题 URL、每个请求的方法/状态、已验证发布时间、缺失楼层或附件、需要浏览器解决的精确证据缺口。区分“seed topic 覆盖”与“额外搜索覆盖”,不要把 seed 列表称为全站搜索结果。
最终报告
包含:
- 精确排序依据:优先使用已验证的
Published Time,必要时使用 topic ID 兜底; - 来源映射,包含 topic ID、标题、URL 和发布时间;
- 带来源标签的去重 ID 文本列表;
- 无法验证的 private/404 或不可读近期候选;
- 是否使用代理;
- 是否打开/关闭任何浏览器标签页;
- 下载文件:通常为
none; - 生成文件:通常为
none; - 配置/环境变化:通常为
none。