{
  "$schema": "https://bestaiskill.com/schemas/agent-install/2.json",
  "skill": "qiaomu-anything-to-notebooklm",
  "built": "2026-10-26",
  "control_level": 5,
  "control_level_label": "L5 严管",
  "capabilities": [
    "terms_compliance",
    "credential",
    "execute_command",
    "install_deps",
    "network",
    "write_file"
  ],
  "required_controls": {
    "agent": [
      "isolated_environment",
      "per_use_authorization"
    ],
    "admin": [
      "strict_authorization",
      "full_audit",
      "compliance_signoff"
    ]
  },
  "evidence": [
    {
      "file": "SKILL.md / 脚本参数",
      "summary": "Contains anti-bot detection evasion, host sandbox disabling, or SSL verification bypassing."
    },
    {
      "file": "SKILL.md / 会话存储",
      "summary": "Reads or reuses browser authentication states and session cookies."
    },
    {
      "file": "scripts/",
      "summary": "Executes local scripts or commands: install.sh (executed by the user during installation: pip install, playwright install chromium, git clone for external MCP)."
    },
    {
      "file": "scripts/ 或 SKILL.md",
      "summary": "Declares dynamic installation of external language package dependencies."
    },
    {
      "file": "网络端点",
      "summary": "Declares external network access: openapi.biji.com / notes-api.biji.com / get-notes.luojilab.com (GetNote: creating notes, refreshing tokens, fetching transcripts)."
    },
    {
      "file": "本地工作目录",
      "summary": "Performs file read/write operations and artifact export: /tmp/*.txt (stores extracted source content; SKILL.md states these are cleaned up upon system reboot)."
    }
  ],
  "verification": {
    "method": "第二遍独立复核（不复用第一遍结论）：① 逐条 evidence 逐字命中校验——脚本 assert 每个 quote 是 evidence.file 的原文子串，全部通过才写盘；② 独立重走定位链：git log -1 核对 HEAD == 任务表 pin cea6ceee8cdc（全 SHA cea6ceee8cdcd01a573af5ae75c2d3cffc20650b），git ls-tree HEAD 核对根清单（SKILL.md 在仓库根，故 skill.path 记 '.'，与库内其它根级 skill 的写法一致）；③ glob 全量列目录，确认仓库只带 feishu-read-mcp/ 而无 wexin-read-mcp/；④ 反查外部依赖：对全部 .py/.sh/.md 抽 http(s) URL 与域名，逐一确认调用点存在（curl/subprocess/aiohttp/Playwright），没有只出现在文档里的端点数被误记为依赖；⑤ 反查安全结论：找「有没有漏掉的网络调用/隐藏脚本/混淆内容」——全仓无二进制、无混淆脚本，网络面收敛为上面清单；⑥ 功能声明 vs 代码：逐条比对 SKILL.md 宣称的 15+ 内容源与 main.py 的实际分支，把差异写成 discrepancy；⑦ 修复错误一处：第一遍曾据 README『6 层级联』直接写成可用链路，复核时读 fetch_url.sh 发现第 4 级后无条件 `exit 75`，第 5/6 级不可达，已改记为 discrepancy。",
    "second_pass": [
      {
        "item": "skill.path 定位与 commit 一致性",
        "status": "ok",
        "detail": "单 skill 仓库，SKILL.md 在仓库根，故 path='.'；工作副本 HEAD cea6ceee8cdcd01a573af5ae75c2d3cffc20650b，任务表 pin cea6ceee8cdc，PINS-b2.json 记 {dir: qiaomu-anything-to-notebooklm, commit: cea6ceee8cdc}。"
      },
      {
        "item": "SKILL.md 宣称的内容源 vs main.py 实际覆盖",
        "status": "discrepancy",
        "detail": "SKILL.md/README 宣称 15+ 类源；main.py 的 main() 只有 epub/document/podcast/x_twitter/url 五个分支，其余（微信、图片、音频、Office、ZIP、搜索）不在本仓代码内，靠外部 MCP 与宿主工具完成。「不支持的输入类型」是代码里的真实兜底分支。"
      },
      {
        "item": "README 结构图与实际文件树",
        "status": "discrepancy",
        "detail": "README 项目结构图与 SKILL.md 前置条件都列 wexin-read-mcp/（并给出 <skill>/wexin-read-mcp/src/server.py 的配置路径），但本 pin 仓库内不存在该目录（ls 报 No such file or directory），只有名称不同的 feishu-read-mcp/。该目录只在用户执行 install.sh 后由 git clone 产生；check_env.py 也检查这个不存在的路径。"
      },
      {
        "item": "fetch_url.sh 的『6 层级联』是否真的可走完",
        "status": "discrepancy",
        "detail": "第 4 级 archive.today 之后为无条件 `exit 75`（脚本在这里结束进程），Level 5（Google Cache）与 Level 6（agent-fetch）在代码上不可达；README 的『6 层级联』流程图因此比实际执行多两级。exit 75 的设计意图是让调用方去浏览器解 CAPTCHA 后重试，属有意为之，但副作用未在文档说明。"
      },
      {
        "item": "feishu-read-mcp/src/server.py 是否可运行",
        "status": "discrepancy",
        "detail": "该文件使用 `cookies_str: Optional[str] = None` 标注，但全文只 import sys / pathlib.Path / fastmcp / logging，没有 from typing import Optional——注解在函数定义时求值，导入即 NameError。本仓不含该服务器的测试，check_env.py 也不检查它（只查 wexin-read-mcp）。"
      },
      {
        "item": "『13 项环境检查』是否属实",
        "status": "ok",
        "detail": "check_env.py 累加结果共 13 项：Python 版本 1 + 核心模块 5（fastmcp/playwright/bs4/lxml/markitdown）+ Playwright 导入 1 + notebooklm/markitdown/git 三个 CLI 3 + MCP 文件 1 + MCP 配置 1 + NotebookLM 认证 1；与 README 的『13 项环境检查』一致。"
      },
      {
        "item": "深度分析问题数（SKILL.md 10 问 vs main.py / README 12 问）",
        "status": "discrepancy",
        "detail": "SKILL.md 意图映射表写「自动生成10个问题并递归提问」、Step 4 的示例 JSON 也写 total_questions: 10；而 main.py 的模板是 4+5+3=12 问，README 场景 3 同样写「生成 12 个问题」（Step 4 另一处又是 10 问）。同一文档内自相矛盾。"
      },
      {
        "item": "SKILL.md 章节编号连续性与内容重复",
        "status": "discrepancy",
        "detail": "『支持的内容源』下出现两个 5（付费墙、YouTube）、两个 4（Office 文档、播客/音频平台）、两个 5（播客/音频平台、电子书与文档），编号重复且与 README 的 15+ 计数对不上；YouTube 与付费墙内容还被重复叙述一次（含一段孤立的绕过策略 5 条列表挂在 YouTube 规则下）。"
      },
      {
        "item": "凭证读取清单是否遗漏",
        "status": "ok",
        "detail": "全仓 grep os.environ/getenv/TOKEN/API_KEY 只命中 get_podcast_transcript.py 的 GETNOTE_API_KEY/GETNOTE_CLIENT_ID 与该文件的 tokens.json 常量；其余凭证（notebooklm、lark-cli）由宿主 CLI 自身持有，脚本只调命令不读文件，与 security.credential_reads 一致。"
      },
      {
        "item": "网络端点清单是否把『仅文档提到』误记为依赖",
        "status": "ok",
        "detail": "清单里每个 endpoint 都有实读调用点：curl/subprocess（biji、luojilab、archive.today、webcache）、aiohttp（feishu 图片）、Playwright goto（feishu/微信）、npx（agent-fetch）。README 出现的微信订阅页、X 作者链接等非行为链接未被计入。"
      },
      {
        "item": "stars / last_push / license",
        "status": "ok",
        "detail": "gh api 返回 stargazers_count 5994、pushed_at 2026-04-28T01:38:28Z（与工作副本 HEAD 提交时间 2026-04-28 09:38:21 +0800 同日）、spdx_id MIT；仓库根 LICENSE 首行 'MIT License'。距 2026-09-15 已约 4.5 个月无推送，结论只对该 commit 有效。"
      },
      {
        "item": "池内 aws_review 与源码是否一致",
        "status": "discrepancy",
        "detail": "池内 aws_review 写「uses Playwright MCP for WeChat scraping. Requires NotebookLM login credentials.」——凭证部分成立，但『Playwright MCP』的实现并不在本仓（本仓自带的是 feishu-read-mcp，微信那个是外部 Bwkyd/wexin-read-mcp，由 install.sh 克隆），描述的归属需要修正。"
      }
    ],
    "level": 2,
    "level_label": "V2 已复核",
    "commit": "cea6ceee8cdcd01a573af5ae75c2d3cffc20650b",
    "sha256": "8f32da1fd86d07e06bad4f8a8cd0829139a788182b0ce8283d8d2238c0f1e510",
    "reviewed_by": "skills-bayx-audit",
    "reviewed_at": "2026-10-25"
  },
  "assessed_at": "2026-10-25",
  "method_version": "2.0",
  "mirror": {
    "archive": "https://skillpub.pages.dev/r2/v/2026-09-15/qiaomu-anything-to-notebooklm.tar.gz",
    "sha256": "8f32da1fd86d07e06bad4f8a8cd0829139a788182b0ce8283d8d2238c0f1e510",
    "commit": "cea6ceee8cdcd01a573af5ae75c2d3cffc20650b"
  },
  "original": {
    "github": "https://github.com/joeseesun/qiaomu-anything-to-notebooklm",
    "path": "",
    "commit": "cea6ceee8cdcd01a573af5ae75c2d3cffc20650b"
  }
}