
开发工具CLI人工智能AI 应用浏览器控制GUI 自动化【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址https://gitcode.com/gh_mirrors/ope/OpenCLI点击查看免费下载Product Hunt 是开发者追踪新产品发布的首选平台本指南以 OpenCLI 仓库中docs/adapters/browser/producthunt.md为核心系统讲解producthunt适配器的四个命令posts、today、hot、browse的用法、参数与前置条件并深入其源码实现clis/producthunt/下的命令文件与共享工具揭示「公开 RSS 抓取」与「浏览器拦截渲染后页面」两种采集策略的底层原理。读完本文你将能够在终端中一键获取 Product Hunt 的最新、今日与分类热门产品数据并理解 OpenCLI 如何让任意网站变成 CLI 与 AI Agent 可用的数据源。适配器概览Product Hunt 适配器在 OpenCLI 中属于「公开 / 浏览器」双模式适配器其目标域名为www.producthunt.com定义于 适配器文档。它的设计核心是无浏览器命令posts、today直接读取 Product Hunt 公开的 Atom RSS 订阅源无需登录与浏览器环境浏览器命令hot、browse通过 Chrome 与 Browser Bridge 扩展 拦截渲染后的真实页面抓取带投票数、评论数的卡片数据。从源码角度该适配器由 6 个文件构成位于 clis/producthunt/ 目录posts.js、today.js、hot.js、browse.js四个命令实现以及utils.js共享工具分类 slug 常量、RSS 解析、投票数识别与utils.test.js单元测试。命令总览适配器文档给出了完整的命令清单四个命令各司其职命令说明opencli producthunt posts最新 Product Hunt 发布可选分类过滤opencli producthunt today今日 Product Hunt 发布feed 中最近一天opencli producthunt hot今日 Product Hunt 热门发布带投票数opencli producthunt browse category某分类下最好的产品对应的源码声明位于各命令文件的开头例如posts.js中声明site: producthunt、name: posts、access: read、domain: www.producthunt.com见 clis/producthunt/posts.js四个命令共享同一站点命名空间通过opencli producthunt command统一路由。使用示例以下示例完整继承自适配器文档并补充了源码中确认的参数细节# 今日热门发布带投票数 opencli producthunt hot --limit 10 # 最新发布RSS 订阅源 opencli producthunt posts --limit 20 # 按分类过滤最新发布 opencli producthunt posts --category developer-tools --limit 10 # 仅看今日发布 opencli producthunt today --limit 10 # 浏览某个分类下的最佳产品 opencli producthunt browse vibe-coding --limit 10 opencli producthunt browse ai-agents --limit 10 opencli producthunt browse developer-tools --limit 10 # JSON 输出 opencli producthunt hot -f json关于--limit参数的取值范围四个命令的源码实现一致默认值为 20且会执行Math.min(Number(args.limit) || 20, 50)钳制到最多 50 条见 posts.js、hot.js、today.js、browse.js。因此传入--limit 100也只会返回 50 条这是硬性上限。-f json是 OpenCLI 命令体系的通用输出格式开关用于将结果以结构化 JSON 输出便于管道处理或交给 AI Agent 消费。分类 Slug 对照表browse与posts --category共用一套分类 slug。适配器文档列出了常用分类源码中则将其固化为常量PRODUCTHUNT_CATEGORY_SLUGS定义于 clis/producthunt/utils.jsai-agents、ai-coding-agents、ai-code-editors、ai-chatbots、ai-workflow-automation、vibe-coding、developer-tools、productivity、design-creative、marketing-sales、no-code-platforms、llms、finance、social-community、engineering-development这 15 个 slug 同时被posts命令的--category参数帮助文本引用见 posts.js并在测试中被断言包含developer-tools与ai-agents见 utils.test.js保证命令间分类口径一致。browse命令的category参数是位置参数且必填positional: true, required: true传入时会自动转为小写见 browse.js。前置条件适配器文档明确了各命令的环境要求posts和today— 无需浏览器直接走公开 RSS 订阅源hot和browse— 需要 Chrome 正在运行并安装 Browser Bridge 扩展。Browser Bridge 是 OpenCLI 连接浏览器的轻量桥梁由 Chrome 扩展加微守护进程组成零配置、自动启动其完整安装流程见 docs/guide/browser-bridge.md。典型步骤包括下载预构建的opencli-extension-v{version}.zip解压后在chrome://extensions开启开发者模式并「加载已解压的扩展程序」或用开发者模式直接加载仓库中的extension/目录通过opencli doctor验证扩展与守护进程的连通性。由于浏览器命令复用 Chrome 的登录会话运行前需确保已在 Chrome 中登录目标站点。对于hot/browse这类公共信息抓取场景虽然通常无需登录但浏览器环境仍是必须的因为其数据来自渲染后的真实页面。两种采集策略的底层原理四个命令在源码中分别标注了不同的Strategy这是理解适配器行为差异的关键。OpenCLI 的Strategy枚举定义于 src/registry.ts其中PUBLIC public、INTERCEPT intercept分别对应无浏览器直连与浏览器拦截两种模式。PUBLIC 策略posts与todayposts与today均声明为Strategy.PUBLIC见 posts.js、today.js意味着它们直接通过 HTTP 请求获取公开数据无需浏览器。两个命令共用utils.js中的fetchFeed(category)函数当传入分类 slug 时请求https://www.producthunt.com/feed?categoryslug否则请求https://www.producthunt.com/feed并携带自定义 User-Agentopencli/1.0见 utils.js。随后parseFeed(xml)用正则按entry块解析 Atom 订阅源提取nametitle标签文本authorname标签文本datepublished时间戳的前 10 位即YYYY-MM-DDurllink标签的href属性tagline从content的 HTML 内容中剥离标签、压缩空白并去掉 Discussion 与 Link 等尾部噪声后截取前 120 字符见 utils.js。posts的差异在于支持--category过滤today则实现了一个巧妙的「今日」语义先取出 feed 中所有日期并按字典序排序取最新日期作为「今天」再过滤出该日期的帖子见 today.js。源码注释特别说明Product Hunt 使用太平洋时区PSTfeed 中的日期与 UTC 本地日期最多可能相差 1 天因此「最新一天」而非「本地今天」才是准确的「今日」语义。INTERCEPT 策略hot与browsehot与browse声明为Strategy.INTERCEPT见 hot.js、browse.js需要浏览器环境。其执行流程为page.installInterceptor(producthunt.com)安装域名拦截器page.goto(...)导航到目标页面hot为首页https://www.producthunt.combrowse为https://www.producthunt.com/categories/slugpage.waitForCapture(5)等待渲染捕获在页面上下文中执行page.evaluate注入的 DOM 采集脚本返回结构化数据。hot的采集逻辑见 hot.js比较有代表性它选择所有a[href^/products/]且不含/reviews的链接作为候选卡片通过「向上遍历最多 6 层父节点寻找同时包含 reviews 链接或纯数字节点投票数的容器」来定位完整卡片随后对卡片内所有按钮、链接、段落中的纯数字文本进行收集作为投票数候选。在utils.js的pickVoteCount中这些候选会按启发式打分排序位于按钮内 4 分、class/role 含vote/upvote3 分、含button1 分且明确排除 reviews 链接内的数字见 utils.js——这能避免把「评论数」误当成「投票数」。最终结果按投票数降序排列并输出rank/name/votes/url四列。browse的采集逻辑见 browse.js则面向分类页它通过a.flex-col类名定位产品卡片链接从卡片的div子节点提取产品名同样去除 Launched this month/week/year 噪声从span.text-secondary提取 tagline并向上查找/reviews链接获取评论数。输出列为rank/name/tagline/reviews/url。需要注意的是源码注释明确指出browse展示的是某分类的全时段最佳产品按评论分数排序而非当日投票数。异常处理两个浏览器命令在采集结果为空时都会抛出CliError例如NO_DATA及提示「Product Hunt 可能更改了页面布局」见 hot.jsbrowse在分类无效时还会提示可用的分类 slug 前 5 个作为排查参考见 browse.js。这体现了 OpenCLI 对站点结构变动页面重构导致选择器失效的显式容错设计——从源码结构看这类适配器依赖 DOM 结构与 class 名站点改版时需要同步更新选择器。测试验证与可靠性clis/producthunt/utils.test.js使用 Vitest 对核心解析逻辑进行了覆盖可作为理解适配器行为的权威参考见 clis/producthunt/utils.test.jsparseFeed解析用一段内嵌的样例 Atom feed 验证条目数、rank 顺序、name/author/date/url 字段提取以及 tagline 对 HTML 标签和 Discussion 链接的剥离空 feed 处理feed/feed返回空数组pickVoteCount打分验证「投票按钮内的数字优先于普通数字徽章」、以及「忽略 reviews 链接内的数字」两个关键启发式规则分类 slug 共享断言常量包含developer-tools与ai-agents。这些测试把「正则解析」「DOM 数值识别」这类易碎逻辑固化下来任何改动都能被即时回归验证。实战组合建议将上述命令与 OpenCLI 的通用能力结合可以形成实用的工作流日常监控用opencli producthunt today --limit 10快速扫一眼今日发布或用opencli producthunt hot -f json拿到结构化热门榜单交给 AI Agent 做摘要赛道调研针对vibe-coding、ai-agents、developer-tools等分类用opencli producthunt browse slug --limit 20获取该赛道的历史最佳产品研究其定位与 tagline 写法定时追踪posts --category slug可按分类订阅最新发布流配合外部定时任务即可实现发布提醒。需要留意两点限制--limit最大 50browse与hot依赖浏览器环境且对 Product Hunt 页面结构敏感若返回NO_DATA错误可先用opencli doctor检查 Browser Bridge 连通性再确认页面结构是否变动。小结Product Hunt 适配器是 OpenCLI「任何网站都能变成 CLI」理念的一个典型样本对公开数据走轻量的 RSS 直连PUBLIC策略对需要渲染或结构化深度的数据走浏览器拦截INTERCEPT策略并在utils.js中沉淀出可测试的解析与打分逻辑。以 适配器文档 为入口配合 clis/producthunt/ 源码与 utils.test.js 测试你可以完整掌握它的用法与原理也可以以此为模板编写自己的站点适配器。赞分享开发工具CLI人工智能AI 应用浏览器控制GUI 自动化【免费下载链接】OpenCLIMake Any Website into CLI Use your logged-in browser by AI agent.项目地址https://gitcode.com/gh_mirrors/ope/OpenCLI点击查看免费下载相关推荐OpenCLI NVD 适配器实战用 opencli nvd cve 在命令行与 AI Agent 中查询 CVE 漏洞详情OpenCLI NVD 适配器实战用 opencli nvd cve 在命令行与 AI Agent 中查询 CVE 漏洞详情 NVDNIST Nationa开发工具CLI人工智能AI 应用浏览器控制GUI 自动化producthunt-daily-hot每日获取Product Hunt热门产品榜单producthunt daily hot每日获取Product Hunt热门产品榜单 项目介绍 Product Hunt 每日中文热榜是一个开源自动化工具工作流自动化AI 应用网页爬虫如何快速将 nvim-spider 集成到你的 Neovim 工作流中终极指南 如何快速将 nvim spider 集成到你的 Neovim 工作流中终极指南 你是否厌倦了在复杂的代码中缓慢移动光标想要在 Neovim 中实现更智开发工具CLI人工智能AI 应用浏览器控制GUI 自动化上一篇快速上手指南终极免费PCB可视化BOM管理工具下一篇从触发到安装包看懂 WSABuilds 的 GitHub Actions 自动化构建创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考