Loading...
Loading...
Blazing fast Rust CLI tool to fetch information from 55+ websites (Twitter, Reddit, YouTube, Bilibili, Zhihu, etc.) with a single command, plus AI-native discovery and Electron app control.
npx skill4agent add aradotso/trending-skills opencli-rs-web-scraperSkill by ara.so — Daily 2026 Skills collection.
curl -fsSL https://raw.githubusercontent.com/nashsu/opencli-rs/main/scripts/install.sh | shInvoke-WebRequest -Uri "https://github.com/nashsu/opencli-rs/releases/latest/download/opencli-rs-x86_64-pc-windows-msvc.zip" -OutFile opencli-rs.zip
Expand-Archive opencli-rs.zip -DestinationPath .
Move-Item opencli-rs.exe "$env:LOCALAPPDATA\Microsoft\WindowsApps\"git clone https://github.com/nashsu/opencli-rs.git
cd opencli-rs
cargo build --release
cp target/release/opencli-rs /usr/local/bin/opencli-rs-chrome-extension.zipchrome://extensionsnpx skills add https://github.com/nashsu/opencli-rs-skill| Mode | Requirement | Examples |
|---|---|---|
| Public | Nothing — calls public APIs directly | hackernews, devto, arxiv, wikipedia |
| Browser | Chrome + extension running | twitter, bilibili, reddit, zhihu |
| Desktop | Target Electron app running | cursor, chatgpt, notion, discord |
opencli-rs --help # list all commands
opencli-rs <site> --help # site-specific help
opencli-rs <site> <cmd> --format json # output: table | json | yaml | csv | markdown
opencli-rs <site> <cmd> --limit 20 # limit results
opencli-rs doctor # run diagnostics
opencli-rs completion bash >> ~/.bashrc # shell completions (bash/zsh/fish)# Hacker News
opencli-rs hackernews top --limit 10
opencli-rs hackernews search "rust async" --limit 5
opencli-rs hackernews user pg
# arXiv
opencli-rs arxiv search "large language models" --limit 10
opencli-rs arxiv paper 2303.08774
# Wikipedia
opencli-rs wikipedia summary "Rust programming language"
opencli-rs wikipedia search "memory safety"
opencli-rs wikipedia random
# Stack Overflow
opencli-rs stackoverflow hot
opencli-rs stackoverflow search "tokio async runtime"
# Dev.to
opencli-rs devto top
opencli-rs devto tag rust
# Linux.do
opencli-rs linux-do hot
opencli-rs linux-do search "Rust"# Twitter/X
opencli-rs twitter search "rust lang" --limit 10
opencli-rs twitter trending
opencli-rs twitter timeline
opencli-rs twitter bookmarks
opencli-rs twitter profile elonmusk
opencli-rs twitter post "Hello from opencli-rs!"
opencli-rs twitter follow rustlang
# Bilibili
opencli-rs bilibili hot --limit 20
opencli-rs bilibili search "Rust教程"
opencli-rs bilibili ranking
opencli-rs bilibili feed
opencli-rs bilibili download <video_url>
# Reddit
opencli-rs reddit frontpage
opencli-rs reddit popular
opencli-rs reddit subreddit rust
opencli-rs reddit search "async await"
opencli-rs reddit upvote <post_id>
# Zhihu
opencli-rs zhihu hot
opencli-rs zhihu search "Rust 内存安全"
opencli-rs zhihu question 12345
# Xiaohongshu
opencli-rs xiaohongshu search "旅行攻略"
opencli-rs xiaohongshu feed
opencli-rs xiaohongshu user <user_id>
# YouTube
opencli-rs youtube search "rust tutorial"
opencli-rs youtube video <video_id>
opencli-rs youtube transcript <video_id>
# Weibo
opencli-rs weibo hot
opencli-rs weibo search "科技"
# Douban
opencli-rs douban top250
opencli-rs douban search "三体"
opencli-rs douban movie-hot
# Medium
opencli-rs medium search "rust programming"
opencli-rs medium feed
opencli-rs medium user graydon_hoare
# Xueqiu (stock)
opencli-rs xueqiu hot-stock
opencli-rs xueqiu search "茅台"
opencli-rs xueqiu stock SH600519# Cursor IDE
opencli-rs cursor status
opencli-rs cursor send "Refactor this function to use async/await"
opencli-rs cursor read
opencli-rs cursor ask "What does this code do?"
opencli-rs cursor screenshot
opencli-rs cursor extract-code
opencli-rs cursor model
# ChatGPT Desktop
opencli-rs chatgpt new
opencli-rs chatgpt send "Explain Rust lifetimes"
opencli-rs chatgpt read
# Notion
opencli-rs notion search "project notes"
opencli-rs notion read <page_id>
opencli-rs notion write <page_id> "New content"
opencli-rs notion sidebar
# Discord Desktop
opencli-rs discord-app channels
opencli-rs discord-app send "Hello team"
opencli-rs discord-app read# GitHub CLI
opencli-rs gh repo list
opencli-rs gh pr list
opencli-rs gh issue create --title "Bug report"
# Docker
opencli-rs docker ps
opencli-rs docker images
opencli-rs docker logs my-container
# Kubernetes
opencli-rs kubectl get pods
opencli-rs kubectl get services -n production
opencli-rs kubectl logs <pod-name># Explore a website's API surface
opencli-rs explore https://example.com
# Auto-detect authentication strategies
opencli-rs cascade https://api.example.com/data
# Auto-generate an adapter (YAML pipeline)
opencli-rs generate https://example.com --goal "hot posts"
# Synthesize adapter from discovered API
opencli-rs synthesize https://news.example.com# Default: ASCII table
opencli-rs hackernews top --limit 5
# JSON — great for piping to jq
opencli-rs hackernews top --limit 5 --format json | jq '.[].title'
# YAML
opencli-rs hackernews top --format yaml
# CSV — for spreadsheets
opencli-rs hackernews top --format csv > hn_top.csv
# Markdown — for docs
opencli-rs hackernews top --format markdown# ~/.config/opencli-rs/adapters/my-site.yaml
name: my-site
description: Fetch top posts from my-site
base_url: https://api.my-site.com
commands:
top:
description: Get top posts
endpoint: /v1/posts/top
method: GET
params:
limit:
flag: --limit
default: 10
query_param: count
response:
items_path: $.data.posts
fields:
- name: title
path: $.title
- name: url
path: $.url
- name: score
path: $.points
- name: author
path: $.author.name# Use the custom adapter
opencli-rs my-site top --limit 20
opencli-rs my-site top --format json# Get only titles from HN top stories
opencli-rs hackernews top --limit 20 --format json | jq -r '.[].title'
# Get Twitter trending topics as plain list
opencli-rs twitter trending --format json | jq -r '.[].name'
# Find Bilibili videos with >1M views
opencli-rs bilibili ranking --format json | jq '[.[] | select(.view > 1000000)]'#!/bin/bash
# Daily digest script
echo "=== HackerNews Top 5 ==="
opencli-rs hackernews top --limit 5 --format table
echo ""
echo "=== Bilibili Trending ==="
opencli-rs bilibili hot --limit 5 --format table
echo ""
echo "=== Zhihu Hot ==="
opencli-rs zhihu hot --limit 5 --format tableopencli-rs reddit popular --format csv > reddit_$(date +%Y%m%d).csv
opencli-rs hackernews top --format json > hn_top.jsonuse std::process::Command;
use serde_json::Value;
fn fetch_hn_top(limit: u32) -> anyhow::Result<Vec<Value>> {
let output = Command::new("opencli-rs")
.args(["hackernews", "top", "--limit", &limit.to_string(), "--format", "json"])
.output()?;
let json: Vec<Value> = serde_json::from_slice(&output.stdout)?;
Ok(json)
}
fn fetch_twitter_search(query: &str) -> anyhow::Result<Vec<Value>> {
let output = Command::new("opencli-rs")
.args(["twitter", "search", query, "--format", "json"])
.output()?;
if !output.status.success() {
let err = String::from_utf8_lossy(&output.stderr);
anyhow::bail!("opencli-rs error: {}", err);
}
let json: Vec<Value> = serde_json::from_slice(&output.stdout)?;
Ok(json)
}
#[tokio::main]
async fn main() -> anyhow::Result<()> {
let stories = fetch_hn_top(10)?;
for story in &stories {
println!("{}", story["title"].as_str().unwrap_or(""));
}
Ok(())
}# AGENT.md
## Available Tools
Run `opencli-rs list` to discover all available commands.
### Web Data Fetching
- `opencli-rs hackernews top --format json` — HN top stories
- `opencli-rs twitter search "<query>" --format json` — Twitter search
- `opencli-rs arxiv search "<topic>" --format json` — Research papers
- `opencli-rs reddit subreddit <name> --format json` — Subreddit posts
### Local CLI Tools
- `opencli-rs gh <args>` — GitHub operations
- `opencli-rs docker <args>` — Docker operations
- `opencli-rs kubectl <args>` — Kubernetes operations
Register custom tools: `opencli-rs register mycli`~/.config/opencli-rs/config.toml # macOS / Linux
%APPDATA%\opencli-rs\config.toml # Windows# ~/.config/opencli-rs/config.toml
adapter_dir = "~/.config/opencli-rs/adapters"
default_format = "table"
default_limit = 20# Register your own CLI tool for passthrough
opencli-rs register mycli
# Now use it via opencli-rs
opencli-rs mycli --help
opencli-rs mycli some-command --flag valueopencli-rs doctor# Check extension is loaded at chrome://extensions
# Verify Developer mode is ON
# Reload the extension after reinstalling opencli-rs
# Check daemon is running:
opencli-rs doctor# Verify install location
which opencli-rs
ls /usr/local/bin/opencli-rs
# Add to PATH if missing
export PATH="/usr/local/bin:$PATH"
echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.zshrc# Ensure Rust toolchain is up to date
rustup update stable
rustup target add aarch64-apple-darwin # macOS Apple Silicon
cargo build --releaseopencli-rs doctor# Verify binary location
Get-Command opencli-rs
# If not found, ensure the directory is in $env:PATH
$env:PATH += ";$env:LOCALAPPDATA\Microsoft\WindowsApps"| Category | Sites |
|---|---|
| Tech News | HackerNews, Dev.to, Lobsters, Linux-do |
| Social | Twitter/X, Reddit, Facebook, Instagram, TikTok, Jike |
| Video | YouTube, Bilibili, Weixin |
| Chinese | Zhihu, Xiaohongshu, Weibo, Douban, Xueqiu, Weread, Sinablog, Sinafinance |
| Research | arXiv, Hugging Face |
| Finance | Yahoo Finance, Barchart, Xueqiu |
| Jobs | Boss, LinkedIn |
| Reading | Medium, Substack, Wikipedia, BBC, Bloomberg, Reuters |
| Shopping | Steam, SMZDM, Ctrip, Coupang |
| AI/Desktop | Cursor, ChatGPT, Codex, Doubao, ChatWise, Notion, Discord |
| Podcast | Apple Podcasts, Xiaoyuzhou |
| External CLI | gh, docker, kubectl, obsidian, readwise, gws |