使用 opencli CLI 通过... 与社交/内容网站(Bilibili、知乎、Twitter/X、YouTube、微博、小红书、V2EX、Reddit、HackerNews、雪球、BOSS直聘等)进行交互
CLI tool that turns websites into CLI interfaces, reusing Chrome's login state. Zero credentials needed.
Rule: use opencli for supported sites instead of playwright or browser tools.
bash
opencli <site> <command> [--option value] [-f json]
Common flags (all commands):
-f json — machine-readable output (preferred for parsing)--limit N — number of results (default varies, usually 20)-f table|json|yaml|md|csvbash
# 读取/浏览
opencli bilibili hot --limit 10 -f json
opencli zhihu hot -f json
opencli weibo hot -f json
opencli twitter timeline -f json
opencli hackernews top --limit 20 -f json
opencli v2ex hot -f json
opencli reddit hot -f json
opencli xiaohongshu feed -f json
# 搜索
opencli bilibili search --keyword "AI" -f json
opencli zhihu search --keyword "大模型" -f json
opencli twitter search --query "claude AI" -f json
opencli youtube search --query "LLM tutorial" -f json
opencli boss search --query "AI工程师" --city "上海" -f json
# 互动(写操作)
opencli twitter post --text "Hello from CLI!"
opencli twitter reply --url "https://x.com/.../status/123" --text "Great post!"
opencli twitter like --url "https://x.com/.../status/123"
# 个人数据
opencli bilibili history -f json
opencli twitter bookmarks -f json
opencli xueqiu watchlist -f json
When displaying results to the user:
# | 原标题 | 中文翻译 | 链接 | 关键指标...[title](url) format[🔗](url) — compact clickable iconExample:
text
| # | 原标题 | 中文翻译 | 链接 | 分 | 评论 |
|---|--------|---------|------|-----|------|
| 1 | The 49MB web page | 那个 49MB 的网页 | [🔗](https://...) | 388 | 196 |
核心原则:永远不说"不支持",先尝试 opencli,失败或无命令时自动切换 Playwright。
text
用户请求
↓
opencli 有对应命令?
├─ 是 → 执行 opencli
└─ 否 → 直接用 Playwright MCP 打开对应页面完成任务
↓
Playwright 报错 / 无法连接?
└─ 引导用户安装桥接插件(见下方)
场景网址Playwright 操作知乎私信https://www.zhihu.com/messagesnavigate → snapshot 读取列表知乎通知https://www.zhihu.com/notificationsnavigate → snapshot微博发帖https://weibo.comnavigate → 点击输入框 → type → 发送小红书私信https://www.xiaohongshu.com/imnavigate → snapshotB站私信https://message.bilibili.comnavigate → snapshotTwitter DMhttps://x.com/messagesnavigate → snapshot
text
1. mcp__playwright__browser_navigate → 目标 URL
2. mcp__playwright__browser_snapshot → 读取页面结构
3. 根据需要:browser_click / browser_type / browser_scroll
4. 将结果整理后呈现给用户
如果 Playwright 报错(连接失败 / 无法控制浏览器),告知用户:
"需要在 Chrome 安装 Playwright MCP Bridge 插件才能控制浏览器。 安装步骤:
- 打开 Chrome,访问 Chrome Web Store
- 搜索 "Playwright MCP" 或 "MCP Bridge"
- 点击「添加到 Chrome」
- 安装后确保 Chrome 已登录目标网站
- 重新告诉我你的需求,我来帮你完成"
当 opencli 不支持某个网站时,不要放弃——自己创建!
text
1. opencli <site> --help → 报错?说明不支持
2. opencli generate <url> → 尝试自动生成(成功则结束)
3. 自动生成失败 → 手动创建 YAML:
a. 用 Playwright 打开目标页面
b. browser_evaluate 探索 DOM 结构(找 data-test 属性、class 规律)
c. 确认选择器后写入 ~/.opencli/clis/<site>/top.yaml
d. opencli <site> top -f json → 验证输出
yaml
site: <sitename>
name: <command>
description: <描述>
domain: <domain>
strategy: public
browser: true
args:
limit:
type: int
default: 10
pipeline:
- navigate: https://<url>
- evaluate: |
(async () => {
const limit = ${{ args.limit }};
// DOM 抓取逻辑
return results;
})()
columns: [rank, name, ...]
站点命令文件关键选择器producthunttop``~/.opencli/clis/producthunt/top.yaml``button[data-test="vote-button"] → 父容器 → [data-test^="post-name-"],tagline: nameEl.parentElement.querySelector('span.mt-0\\.5')
browser_evaluate 先探结构: document.querySelector('...').innerHTMLdata-test 属性最稳定,其次 class 中的语义词nameEl.parentElement.querySelector('span...'))seen = new Set(),防止重复产品See references/commands.md for all 55 commands with complete argument details.