爱意满满的作品展示区。
kashgari4j

v2ex-cli:给终端党和 AI Agent 用的 V2EX 命令行工具

  •  
  •   kashgari4j · 6h 51m ago · 391 views

    最近折腾了一个命令行版的 V2EX 客户端,叫做 v2ex-cli,主要是给两类人用的:

    1 )日常习惯在终端里晃悠的 V 友
    2 )在搞各种 AI / Agent / 脚本自动化,希望能「机器可读」地用 V2EX 数据的人

    简单说,它不是传统那种交互式 TUI 客户端,而是 一条命令跑完就退出,输出尽量高信息密度,既方便人肉看,也方便丢给脚本和 AI 去处理。


    它大概长这样

    安装(需要 Node 18+):

    npm install -g @pengyanai/v2ex-cli
    # 或者直接临时跑
    npx @pengyanai/v2ex-cli hot
    

    看看热帖前 5 条:

    v2ex hot --limit 5
    

    看「问与答」节点最近的帖子:

    v2ex topics qna --limit 5
    

    默认输出是 TSV 风格的纯文本,没有花里胡哨的颜色和框框,拿 awk / sed 简单切一切就能继续用。

    如果你想给脚本或者 LLM 看,加个 --json 就能直接变成结构化输出,例如:

    v2ex hot --json --limit 5 | jq -r '.[].title'
    

    为啥又造一个轮子?

    市面上的 V2EX 终端客户端,大多是面向「人」的:全屏 TUI ,支持上下翻页、键盘快捷键,体验很好。但对「机器」和「 Agent 」就很不友好:

    • 需要人手动交互,没法一条命令里把事情做完
    • 输出样式复杂,不好被脚本解析
    • 退出码不稳定,很难在 CI 、Agent 里判断成功 / 失败

    v2ex-cli 做了几个刻意的设计取舍:

    • 单次调用:一条命令只做一件事,打一个 API ,结束就退
    • 高信息密度:默认输出接近「表格」,一行一条记录,方便管道处理
    • JSON 一键切换:加 --json 就变成稳定字段的 JSON
    • 退出码固定0 正常 · 1 API / 网络错误 · 2 鉴权问题

    所以无论是人肉在终端里扫一眼,还是写成 cron / 监控脚本 / AI 工具,都比较顺手。


    能做些什么?

    目前支持的命令大致包括:

    • v2ex latest / v2ex hot:看首页热帖、全站最新
    • v2ex nodes:查看内置的一些常用节点
    • v2ex topics <node>:某个节点下的帖子列表
    • v2ex topic <id> [--with-replies]:单个帖子详情,也可以顺带拉第一页回复
    • v2ex replies <topicId>:只看回复,带楼层号
    • v2ex member [username]:看某个用户的公开信息
    • v2ex notifications:看自己的通知(需要 token )
    • v2ex search <关键词...>:通过 SOV2EX 做搜索,支持稍微复杂一点的 ES 查询语法

    想用来做点「小自动化」的话,比如:

    • 每天定时查「问与答」里还没人回复的问题,顺手去帮忙解答
    • 搜索某几个关键词(比如自己关注的技术栈、城市、关键字),有新贴就推送到 Telegram / 飞书
    • 给自己的 AI Agent 挂一个「 V2EX 工具」,让它能自己查帖子、读回复、做统计

    这类场景都可以直接靠一两行命令拼出来。


    搜索场景举几个更接地气的例子

    平时在站内大家应该都干过这些事:刷家庭矛盾、刷副业赚钱贴、看这一个月里又有多少人讨论某个话题。用 v2ex-cli 可以直接在终端里这么玩:

    比如一口气看最近提到「家庭 / 矛盾 / 孩子 / 教育 / 婚姻 / 婆媳」这些关键词的帖子(背后是 SOV2EX 的 OR 查询):

    v2ex search '家庭|矛盾|孩子|教育|原生家庭|父母|养老|婚姻|婆媳'
    

    刷「副业 / 赚钱」相关的帖子里,按回复数找出最热的前三个,只看标题和回复数:

    v2ex search '副业|赚钱'
    

    想看过去 30 天里有多少贴在讨论「 AI 编辑器」这类话题,也可以直接算一把:

    v2ex search 'AI 编辑器' --sort created
    

    上面这些,本质上就是把大家平时在网页上点来点去的动作,压成了几条命令;不管是自己在终端里看看,还是挂到某个监控脚本 / RSS / Agent 上,都比较顺手。


    关于鉴权和隐私

    V2EX 的公开 API 本身就支持匿名访问,所以大部分读操作都 不需要 token:

    • 看热帖 / 最新
    • 看节点、帖子、回复
    • 看别人公开的 member 信息

    只有涉及到你自己账号的部分才需要填 token ,比如:

    • v2ex auth 自测 token 是否可用
    • v2ex notifications 看自己的站内通知
    • 不带用户名的 v2ex member(等于「看我自己」)

    Token 获取方式还是官方后台那一套,用环境变量 V2EX_TOKEN 或者在 ~/.v2ex.json 里写入即可,支持配置代理。


    给爱折腾的人准备的

    整个工具其实就是遵循一个原则:尽量少给你加「界面」,多给你「数据」

    如果你只是偶尔想刷刷 V2EX ,浏览器肯定是最舒服的入口;
    但如果你经常开着终端、写脚本、玩 AI / Agent ,或者就是习惯用搜索刷各种站内话题,那可能会用得上这么一个小东西。

    项目完全开源,名字叫 v2ex-cli,包名是 @pengyanai/v2ex-cli,欢迎试用、拍砖,也可以直接提 issue 说说你希望它还能多做点什么。

    7 replies    2026-05-19 19:22:59 +08:00
    tengxun
        1
    tengxun  
       6h 22m ago
    win11 下有点问题,获取不到,代理也设置了 直接获取 json 也能获取到:
    tengxun
        2
    tengxun  
       6h 21m ago
    v2ex hot --limit 5
    v2ex: API error: [GET] "https://www.v2ex.com/api/topics/hot.json": <no response> fetch failed
    tengxun
        3
    tengxun  
       6h 21m ago
    D:\my>curl https://www.v2ex.com/api/topics/hot.json
    [{"node": {"avatar_large": "https://xx/864_large.png?m=17
    SethShi
        4
    SethShi  
       5h 59m ago
    别写 cli ,直接把接口文档扔给 ai 就可以了,生成一个 skikl
    SethShi
        5
    SethShi  
       5h 59m ago
    skill
    knightdf
        6
    knightdf  
       5h 46m ago
    opencli?
    yhxx
        7
    yhxx  
       5h 23m ago
    https://www.v2ex.com/t/613470
    前几年也写过一个,感觉这种东西还挺好玩的,适合用来摸鱼
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1515 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 41ms · UTC 16:46 · PVG 00:46 · LAX 09:46 · JFK 12:46
    ♥ Do have faith in what you're doing.