mcpField
E
eyeball

eyeball

github.com/github文档处理40.5k68 次安装今天更新
代码仓库

关于 eyeball

Eyeball 是用于文档分析的技能,可将分析和来源截图整理成桌面上的 Word 文档。它要求每项事实陈述都配有来源截图,并以黄色高亮对应文本,便于核对。

主要功能

  1. 01读取 Word、PDF 和 RTF 文件
  2. 02分析公开网页
  3. 03提取文档全文和页码
  4. 04为论点匹配原文锚点
  5. 05生成带高亮截图的 Word 文档

适用场景

  1. 01核对合同分析中的具体条款
  2. 02为文档结论提供可视来源证据
  3. 03审阅网页内容并标出依据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/github/awesome-copilot --skill eyeball

安装后在 Claude Code 中输入/eyeball确认已加载。

附带文件tools/eyeball.py

详细介绍

Eyeball

通过可视证据分析文档。启用后,Eyeball 会在用户的桌面上生成一份 Word 文档,其中每一条事实性论断都包含来自源材料的行内截图,且引用文本以黄色高亮显示。

启用

当用户调用此技能时(例如 "use eyeball"、"run eyeball on this"、"eyeball this document"),请回复:

Eyeball 已启用。 我将分析该文档并生成一份包含行内源截图的 Word 文档,以便你亲眼核实每一条论断。

然后按照下面的工作流操作。

支持的来源

  • 本地文件: Word 文档(.docx、.doc)、PDF(.pdf)、RTF 文件
  • 网页 URL: 任何可公开访问的网页

工具位置

Eyeball Python 实用工具位于:

<plugin_dir>/skills/eyeball/tools/eyeball.py

要找到实际路径,请运行:

find ~/.copilot/installed-plugins -name "eyeball.py" -path "*/eyeball/*" 2>/dev/null

如果在那里找不到,请检查项目目录或用户主目录中的 eyeball 仓库。

首次运行设置

首次使用前,请检查依赖项是否已安装:

python3 <path-to>/eyeball.py setup-check

如果有任何缺失,请安装所需的依赖项:

pip3 install pymupdf pillow python-docx playwright
python3 -m playwright install chromium

在 Windows 上,还需安装 pywin32 以支持 Word 自动化:

pip install pywin32

工作流

请严格按照以下步骤操作。顺序很重要。

步骤 1:阅读源文本

在撰写任何分析之前,请提取并阅读源文档的全文:

python3 <path-to>/eyeball.py extract-text --source "<path-or-url>"

仔细阅读输出内容。识别实际的章节编号、标题、页码和关键表述。

关键: 不要跳过此步骤。不要基于对文档结构的假设来撰写分析。请阅读实际文本。

步骤 2:撰写带有精确引用的分析

对于分析中的每一个要点,你必须:

  1. 引用文档中实际出现的正确章节编号(例如,引用 "Section 9" 而不是因为假设编号而引用 "Section 8")。
  2. 引用正确的页码,即该章节在提取文本中出现的页码。
  3. 选择锚点,即来自源文档的逐字短语,且这些短语直接支持你的论断。
步骤 3:正确选择锚点

这是最重要的步骤。锚点决定了截图中会被高亮显示的内容。

应当:

  • 使用源文本中直接支持你的论断的逐字短语
  • 使用多个锚点来覆盖读者应当看到的完整文本范围
  • 使用仅出现在你预期位置的特定、不常见的短语

不应当:

  • 使用在文档中随处可见的通用主题标签(例如 "Confidentiality")
  • 在章节标题作为交叉引用出现在其他地方时,仅使用章节标题
  • 使用在许多地方都能匹配的单个常见词

示例:

错误 -- 使用了随处可见的通用主题标签:

{"anchors": ["User-Generated Content"], "target_page": 8}

正确 -- 使用了支持该论断的特定表述:

{"anchors": ["retain ownership", "Ownership of Content, Right to Post"], "target_page": 8}

错误 -- 章节标题作为交叉引用出现在前面的页面上:

{"anchors": ["LIMITATION OF LIABILITY"]}

正确 -- 包含章节编号以确保精确性,并定位到正确的页面:

{"anchors": ["12. LIMITATION OF LIABILITY", "INDIRECT", "CONSEQUENTIAL"], "target_page": 13}
步骤 4:构建分析文档

构造一个由各章节组成的 JSON 数组,并调用构建命令:

python3 <path-to>/eyeball.py build \
  --source "<path-or-url>" \
  --output ~/Desktop/<title>.docx \
  --title "Analysis Title" \
  --subtitle "Source description" \
  --sections '[
    {
      "heading": "1. Section Title",
      "analysis": "Your analysis text here. Reference Section X on page Y...",
      "anchors": ["verbatim phrase 1", "verbatim phrase 2"],
      "target_page": 5,
      "context_padding": 40
    },
    {
      "heading": "2. Another Section",
      "analysis": "More analysis...",
      "anchors": ["exact quote from source"],
      "target_pages": [10, 11],
      "context_padding": 50
    }
  ]'

章节对象字段:

  • heading(必需):输出文档中的章节标题
  • analysis(必需):你的分析文本
  • anchors(必需):来自源文档的逐字短语列表,用于搜索并高亮
  • target_page(可选):要搜索的单个页码(从 1 开始索引)
  • target_pages(可选):要搜索的页码列表(截图将垂直拼接)
  • context_padding(可选):锚点区域上下的 PDF 点填充量(默认值:40)。增加该值可获得更多上下文。
步骤 5:交付输出

将输出保存到用户的桌面。告知用户文件名,并说明他们可以打开该文件,对照高亮的源截图核实每一条论断。

交付前自检

在保存最终文档之前,请在心中核对:

  1. 每个章节的分析文本是否引用了源文件中正确的章节编号?
  2. 锚点是否是目标页面上逐字出现的短语?
  3. 每个锚点是否直接支持分析中的论断,而不仅仅是涉及同一主题?
  4. 如果截图与分析不匹配,是分析错了还是锚点错了?修正错误的那一个。

备注

  • 输出文档包含动态调整尺寸的高亮截图。如果你提供多个锚点,截图会扩展以覆盖所有这些锚点。
  • 当搜索词未找到时,输出文档会注明这一点。如果发生这种情况,可能是锚点不够逐字匹配。请调整并重新构建。
  • 对于网页,Playwright 会先将页面渲染为 PDF。生成的页码可能与你在浏览器中看到的不同。请使用提取的文本输出(步骤 1)来确定正确的页码。
  • 如果用户已经提供了源文本,或者你已在当前对话中读取过它,可以跳过步骤 1。但在撰写分析之前,务必根据实际文本核对章节编号和页码引用。

评论

支持 Markdown