Skip to content
JimChengLinPublic

About

知乎终端 TUI:关注流阅读、评论互动与通知监控

Resources

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

107 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

zhihu-tui

一个用 Go 编写的知乎命令行工具,重点提供适合长文阅读和评论互动的终端 TUI。

Important

本项目是非官方客户端,与知乎无隶属或合作关系。请遵守知乎的服务条款及所在地法律法规,不要将本项目用于绕过访问控制、批量抓取或其他滥用行为。

功能

  • 全屏关注流 TUI:连续阅读回答、问题、文章和想法,支持评论、点赞与浏览器打开原文。
  • 内容浏览:搜索、热榜、回答、评论、推荐流和用户主页。
  • 互动与创作:点赞、关注问题、回复评论、发布提问/想法/文章、上传图片和删除自己的内容。
  • 通知:浏览、标记已读及终端常驻监控。
  • 认证:支持 Cookie 登录和二维码登录轮询。
  • 纯 Go 实现:除 github.com/rivo/uniseg 外不依赖第三方运行时。

安装

需要 Go 1.25 或更高版本。

go install github.com/JimChengLin/zhihu-tui/cmd/zhihu@latest

也可以从源码构建:

git clone https://github.com/JimChengLin/zhihu-tui.git
cd zhihu-tui
go build -o zhihu ./cmd/zhihu

快速开始

# 二维码登录;扫码链接同时保存到 ~/.zhihu-cli/login_qrcode.txt
zhihu login --qrcode

# 或手动保存 Cookie(至少包含 z_c0、_xsrf、d_c0)
zhihu login --cookie "z_c0=...; _xsrf=...; d_c0=..."

# 检查登录状态并进入关注流 TUI
zhihu status
zhihu feed --tui

Cookie 仅保存在本机 ~/.zhihu-cli/cookies.json,权限为 0600。本项目不会将 Cookie 上传给项目维护者或第三方服务。

常用命令

zhihu search "Go 语言" --limit 5
zhihu hot --limit 20
zhihu answers 123456 --limit 5
zhihu answer 789 --comments --limit 10
zhihu feed --tui
zhihu user url-token
zhihu user-answers url-token
zhihu notifications --monitor
zhihu notifications mark-read --all-tabs
zhihu vote 789
zhihu follow-question 123456
zhihu reply-comment 789 "回复内容" --resource-type pin --resource-id 123456
zhihu ask "问题标题" -d "问题描述" -t 100
zhihu pin "想法标题" -c "正文"
zhihu article "文章标题" "正文"

查看完整命令列表及参数:

zhihu --help
zhihu <command> --help

删除命令必须显式传入 -y:

zhihu delete-question 123456 -y
zhihu delete-pin 123456 -y
zhihu delete-article 123456 -y
zhihu delete-comment 123456 -y

关注流 TUI

登录后运行:

zhihu feed --tui

该模式读取关注流并用全屏终端界面展示内容。接近已加载内容末尾时会自动预取下一页;终端宽度达到 120 列时自动切换为列表与正文双栏,缩回窄窗口后恢复单栏。

按键 操作
j / k、方向键 向下 / 向上滚动正文
f / b、Space / Ctrl-F、Ctrl-B 向下 / 向上翻页
d / u 向下 / 向上翻半页
Ctrl-E / Ctrl-Y 向下 / 向上滚动一行
n / p、h / l、左右方向键 切换动态
g / G 跳到第一条 / 最后一条已加载动态
c 在正文与评论区之间切换
v 点赞 / 取消点赞当前回答或焦点评论
z 切换专注阅读模式
o 用默认浏览器打开当前动态
r 刷新关注流
? 显示完整帮助
q / Ctrl-C 退出

正文中的图片当前显示为 ▣ 图片 N 占位。

评论回复保留最多 6 层树形缩进;窄窗口按正文宽度提前平铺。超过上限的回复使用固定缩进,并显示真实层级及回复对象,回复输入框也遵循相同的缩进上限。

通知监控

监控模式默认展示最新 1 条通知,然后每 60 秒刷新一次,仅输出新增通知:

zhihu notifications --monitor
zhihu notifications --monitor -l 50
zhihu notifications --monitor --interval 30

同一内容、同一动作的合并通知只显示本次新增的人;若接口只增加合并人数而未提供新人姓名,则显示新增人数。去重记录仅保存在当前监控进程内,按通知时间保留 90 天;重启后重新以首次拉取的通知建立记录。

发现新通知并发送终端响铃后,程序会将 default、follow、vote_thank 三个通知页签标记为已读。

读取 API 的 GET/HEAD 请求遇到网络错误、HTTP 408、429、500、502、503、504,或 HTTP 403 且知乎错误码为 10003 时,最多尝试 3 次(含首次请求)。两次重试前分别等待约 250–500ms、500–1000ms,并遵守服务端的 Retry-After。其他 403,以及 POST、PUT、PATCH、DELETE 等变更请求不会自动重试。

开发

go test ./...
golangci-lint run ./...
go build -o zhihu ./cmd/zhihu

项目主要目录:

cmd/zhihu/          命令行入口
internal/auth/      Cookie 与二维码登录
internal/client/    知乎 API 客户端
internal/cli/       命令解析与执行
internal/display/   终端文本展示
internal/feedtui/   关注流 TUI

API 来源与致谢

本项目的部分知乎 API 路径、请求参数和认证流程借鉴了 BAIGUANGMEI/zhihu-cli。感谢原项目作者公开实现与研究成果。

参考项目采用 Apache License 2.0 发布。本项目在遵守其许可证的前提下进行独立的 Go 实现,并在 NOTICE 中保留来源与归属说明。

License

本项目基于 Apache License 2.0 发布。

About

知乎终端 TUI:关注流阅读、评论互动与通知监控

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages