关于 anylens
anylens 分析视频、PDF、图片、音频和文章,再通过面向不同受众的视角呈现带来源定位的结果。它适用于需要核验媒体内容或从中提取可实施规格的 Agent 和用户。
主要功能
- 01分析视频、PDF、图片、音频和文章
- 02将观点定位到时间戳或页码
- 03缓存一次分析以供多种视角使用
- 04生成含验收标准的规格
- 05提取并应用可复用的视频风格
- 06导出片段、音频和学习材料
适用场景
- 01将演讲整理为开发步骤或学习笔记
- 02依据来源时间点或页码核验观点
- 03从参考资料生成实施要求
- 04研究或复现视频的视听风格
MCP 相关
anylens 通过标准 MCP over stdio 提供服务。其工具可分析来源、生成不同视角的内容、回答带来源定位的问题、创建片段和导出文件,并提取或应用风格。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
anylens
任意链接,任意视角。 粘贴一个 URL——会议演讲、产品演示、内容密集的 PDF、文章——即可获取针对提问者量身打造的理解结果,每条结论都链接到它所依据的确切秒数或页码。
Agent 可以读取文本。anylens 让它们读取其他所有内容——并让你核查它们的工作。
analyze(url) → one cached Understanding → lens(source, "student")
→ lens(source, "spec")
→ lens(source, "uiux") …
为什么不直接让聊天机器人总结?
摘要是条死路。你无法验证,也无法在不再次付费的情况下换个角度解读;它看不到屏幕上显示的内容,Agent 也无法据此采取行动。anylens 解决了这四个问题:
- 可验证——每条结论都带有时间戳或页码。
stated不会和inferred混为一谈。缺失的分析会明确指出,而非隐藏起来。 - 多个读者,共享一次提取——高成本的处理只运行一次,并永久缓存;第二个视角既便宜又即时。
- 读取实际展示的内容——屏幕上的代码、幻灯片、UI 状态、演示,不只是文字。即使是无声的 10 秒屏幕录制,也能生成完整分析。
- 也为 Agent 而打造——
spec视角可通过 MCP 将任何来源转化为带验收标准、可供实施的需求。 - 了解内容的制作方式——对于视频,制作分析环节会捕捉音乐、声音设计、镜头节奏、运动和字体,并将其转化为你(或生成器)可以重现的制作方案。内容视角让 Agent 了解;
blueprint视角让它创作。
视角
| 视角 | 适用场景 | 提供内容 |
|---|---|---|
student | 无需观看即可学习 | 分层讲解、概念图、抽认卡 |
developer | 基于内容进行构建 | 屏幕上展示的代码、决策、实施步骤 |
uiux | 设计研究 | 屏幕、流程、交互模式 |
researcher | 可引用的笔记 | 结论 + 证据,每条都有依据 |
teardown | 竞品分析 | 功能(展示内容与声称内容)、流程、定位 |
spec | 编码 Agent | 需求、验收标准、模糊之处 |
blueprint | 重现内容 | 音乐、声音设计、镜头节奏、运动、字体——作为制作方案 |
design | “照着这个样子做” | 经测量的颜色令牌、间距与字体节奏、组件——可直接粘贴的 CSS |
ask | 一个具体问题 | 有依据的回答——或坦诚说明“来源中没有回答这个问题” |
raw | Agent、调试 | 理解对象本身——不使用大模型,不产生费用 |
视角是 src/lenses/ 中的独立 Markdown 文件。添加视角只需添加一个文件——无需编写代码。
除了视角之外:anylens 还可以从已分析的视频中学习可复用的风格——将节奏、结构、外观、运动和声音提炼为可移植的规则,每条规则都附带其学习依据的时间戳——然后按该风格规划新作品(通过 MCP 使用 style_extract / style_apply,或在 Web UI 中点击“学习此风格”)。
快速开始
前置条件:Bun 1.3+、yt-dlp 和 ffmpeg(macOS 上运行 brew install yt-dlp ffmpeg)。
git clone https://github.com/Slowper/anylens && cd anylens
bun install
密钥——运行 bun run web,然后在你的密钥页面粘贴密钥(保存时会验证),或者自行创建 ~/.anylens/env(权限模式为 600):
GOOGLE_API_KEY=... # required: analysis, structuring, lens rendering
GROQ_API_KEY=... # optional: Whisper transcripts for sources without captions
ANTHROPIC_API_KEY=... # optional: run the writing on Claude instead
OPENAI_API_KEY=... # optional: run the writing on an OpenAI model instead
可从 aistudio.google.com 和
console.groq.com 获取。除了你向这些 API 发出的调用外,没有任何内容会离开你的设备。文本层与提供商无关:设置 ANYLENS_TEXT_MODEL=anthropic(或 groq,或 openai/<model>),即可选择由谁编写视角内容和回答——媒体处理仍由 Gemini 完成,因为它确实最擅长这项工作。
试试看——在终端中运行:
bun bin/anylens.ts "https://www.youtube.com/watch?v=..." # student explainer
bun bin/anylens.ts ./screenshot.png --lens design --export css # tokens you can paste
bun bin/anylens.ts ~/Desktop/demo.mov --lens blueprint # files on your machine work too
bun bin/anylens.ts "<url>" --lens spec # any lens
bun bin/anylens.ts "<url>" --ask "does this cover error handling?" # one anchored answer
bun bin/anylens.ts "<url>" --clip "where they demo the CLI" # cut that segment to mp4
bun bin/anylens.ts "<url>" --export anki # flashcard deck (or markdown/json/html)
bun bin/anylens.ts "<url>" --audio # narrate it to an mp3
bun bin/anylens.ts "<url>" --open # render the page and open it
首次分析需要几分钟,之后会永久缓存,因此同一链接上的后续视角都会即时返回。传入 source_id 而非 URL,即可为已分析的内容生成新视角。
也可以使用 Web UI:
bun run web # → http://127.0.0.1:4517 — paste a link, pick a lens
在 Agent 中使用 — 任意 MCP 客户端
anylens 通过标准 MCP over stdio 通信,因此 Claude Code、Codex、Cursor、Gemini CLI 以及其他支持 MCP 的工具都可以用同样的方式使用它。
# Claude Code
claude mcp add --scope user anylens -- bun /absolute/path/to/anylens/bin/anylens.ts mcp
# Codex CLI — ~/.codex/config.toml
[mcp_servers.anylens]
command = "bun"
args = ["/absolute/path/to/anylens/bin/anylens.ts", "mcp"]
// Gemini CLI (~/.gemini/settings.json), Cursor (~/.cursor/mcp.json), or any other client
{ "mcpServers": { "anylens": { "command": "bun", "args": ["/absolute/path/to/anylens/bin/anylens.ts", "mcp"] } } }
发布到 npm 后,npx anylens mcp 将在所有地方取代路径形式。
工具:analyze(url) → status(job_id) → lens(source_id, lens) ·
ask(source_id, question) · clip(source_id, query) ·
export(source_id, format) · audio(source_id) ·
style_extract / style_apply / style_list · lenses()。
lens 返回 { data, markdown } —
为 Agent 提供类型化 JSON,为人类提供易读的 markdown;此外,使用 include_html 时还会提供完整的 HTML
页面。ask 基于缓存回答,无需重新分析。
可读取的内容
视频(YouTube、X、LinkedIn、Vimeo、Twitch、Loom、直接文件 — yt-dlp 能够获取的任何内容)、音频、PDF(包括扫描件和大量图表的 PDF,会使用视觉能力逐页读取)、网页文章和图片。
完整清单:docs/FEATURES.md · 未来规划:docs/ROADMAP.md · 架构与不变量:AI_INDEX.md
贡献
新增透镜是最简单且最有价值的贡献方式 — 请参阅 CONTRIBUTING.md。代码库刻意采用小文件设计,每个文件只负责一项工作,因此更改通常只需涉及一个位置。
采用 MIT 许可。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。