opencli-rs-web-scraper

安装量: 373
排名: #5790

安装

npx skills add https://github.com/aradotso/trending-skills --skill opencli-rs-web-scraper

opencli-rs Web Scraper & Site Fetcher Skill by ara.so — Daily 2026 Skills collection. opencli-rs is a single 4.7MB Rust binary that fetches real-time data from 55+ websites (Twitter/X, Reddit, YouTube, HackerNews, Bilibili, Zhihu, Xiaohongshu, and more) with one command. It reuses your browser session via a Chrome extension, supports AI-native API discovery, controls Electron desktop apps (Cursor, ChatGPT, Notion), and passes through to external CLIs (gh, docker, kubectl). Up to 12x faster and 10x less memory than the Node.js original. Installation One-line (macOS / Linux) curl -fsSL https://raw.githubusercontent.com/nashsu/opencli-rs/main/scripts/install.sh | sh Windows (PowerShell) Invoke-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\" Build from Source git clone https://github.com/nashsu/opencli-rs.git cd opencli-rs cargo build --release cp target/release/opencli-rs /usr/local/bin/ Chrome Extension (required for Browser-mode commands) Download opencli-rs-chrome-extension.zip from GitHub Releases Extract to any directory Open chrome://extensions → enable Developer mode → Load unpacked → select the extracted folder Extension auto-connects to the opencli-rs daemon AI Agent Skill Install npx skills add https://github.com/nashsu/opencli-rs-skill Command Modes 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 Key Commands Global Flags 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)

Public Commands (no browser needed)

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" Browser Commands (Chrome extension required)

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 Desktop App Control (Electron)

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 External CLI Passthrough

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

AI Discovery Commands

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 Output Formats

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 Declarative YAML Pipeline (Custom Adapters) Add new site adapters without writing Rust code. Create a YAML file describing the scraping pipeline:

~/.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 Real-World Patterns Pipe JSON output to jq for filtering

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)]' Shell scripting

!/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 table Export to file opencli-rs reddit popular --format csv

reddit_ $( date +%Y%m%d ) .csv opencli-rs hackernews top --format json

hn_top.json Use in Rust project via subprocess use 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 ( ( ) ) } AI Agent integration (AGENT.md / .cursorrules)

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 Configuration Config file location ~/.config/opencli-rs/config.toml # macOS / Linux %APPDATA%\opencli-rs\config.toml # Windows Custom adapter directory

~/.config/opencli-rs/config.toml

adapter_dir

"~/.config/opencli-rs/adapters" default_format = "table" default_limit = 20 Register a custom external CLI

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 value Troubleshooting Run diagnostics first opencli-rs doctor Chrome extension not connecting

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 Browser command returns empty / auth error Open Chrome and ensure you are logged in to the target site The extension reuses your existing browser session — no tokens needed Try refreshing the target site tab, then retry the command Binary not found after install

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 Build errors from source

Ensure Rust toolchain is up to date

rustup update stable rustup target add aarch64-apple-darwin

macOS Apple Silicon

cargo build --release Command slow or timing out Browser commands require Chrome + extension; without it they will hang Run opencli-rs doctor to verify extension connectivity Public commands (hackernews, arxiv, etc.) need no browser and run in ~1-2s Windows path issues

Verify binary location

Get-Command opencli-rs

If not found, ensure the directory is in $env:PATH

$env :PATH += "; $env :LOCALAPPDATA\Microsoft\WindowsApps" Supported Sites Reference 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

返回排行榜