weibo-hub
Skill584 starsChanged 59 days agoMITView on GitHub
A skill for reading and writing Weibo data with Python + UV. It depends only on httpx and uses `browser_use get_cookies` to automatically retrieve cookies and complete authentication, with no manual copying required. It supports trending searches, popular feeds, following feeds, keyword search, Weibo post details/comments/reposts, user profiles/posts/following/follower lists, and more. This skill must be triggered whenever the user mentions "Weibo", "weibo", "weibo-hub", "Weibo trending searches", "scraping Weibo", "searching Weibo", "Weibo comments", "Weibo users", or any scenario that requires programmatic reading or writing of Weibo data.
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 182
Before first use, you must call WeiboClient.setup_credential(cookies) to save credentials
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
weibo-hub
Adapted from: jackwener/weibo-cli (Apache-2.0)
This skill streamlines the original repository as follows:
- Removed the
click/rich/browser-cookie3/qrcode/pyyamldependencies- Kept only
httpxas a third-party dependency- Removed the CLI layer; all functionality is encapsulated as a synchronous Python API
- Changed authentication to extracting cookies with
browser_use get_cookies, then callingsetup_credential()to save them- Changed the data directory to
/var/minis/workspace/weibo-hub/
File Structure
/var/minis/skills/weibo-hub/
├── SKILL.md
├── pyproject.toml # httpx only
└── scripts/
├── __init__.py
├── constants.py # API endpoints, headers, and path constants
├── exceptions.py # WeiboError exception hierarchy
├── auth.py # Credential persistence (no browser-cookie3)
└── client.py # WeiboClient core class (all APIs)Authentication Flow (Check Before Each Use)
weibo-hub uses browser cookie authentication, extracted from weibo.com with browser_use get_cookies.
It does not require browser-cookie3 or QR code scanning.
Step 1: Use browser_use to Extract Cookies
# Call in the agent:
browser_use(action="navigate", url="https://weibo.com")
# After confirming you are logged in:
browser_use(action="get_cookies", url="https://weibo.com")
# Record the returned offload env file pathStep 2: Read and Save Credentials from the env File
import sys, os, subprocess, json
# Load Cookie environment variables (the path comes from the offload file returned by get_cookies)
env_file = "/var/minis/offloads/env_cookies_xxx.sh" # Replace with the actual path
result = subprocess.run(
f". {env_file} && python3 -c \"import os,json; print(json.dumps(dict(os.environ)))\"",
shell=True, capture_output=True, text=True
)
env = json.loads(result.stdout)
# Parse the Cookie dictionary (variables with the COOKIE_ prefix)
cookies = {
k[len("COOKIE_"):]: v
for k, v in env.items()
if k.startswith("COOKIE_")
}
# Save credentials
sys.path.insert(0, "/var/minis/skills/weibo-hub")
from scripts.client import WeiboClient
WeiboClient.setup_credential(cookies)Required Cookies:
SUB,SUBP(required). The more additional cookies, the better. Credentials are saved to/var/minis/workspace/weibo-hub/credential.json, valid for 7 days, and an expiration prompt is shown automatically when they expire.
Environment Setup
cd /var/minis/skills/weibo-hub
uv syncQuick Start
import sys
sys.path.insert(0, "/var/minis/skills/weibo-hub")
from scripts.client import WeiboClient
with WeiboClient() as client:
# ── Trending searches / trends (no login required)──────────────────────────────
topics = client.hot_search() # Trending search list (~52 entries)
for t in topics[:10]:
print(f"#{t.get('realtime_hot_show_label','')} {t.get('word','')}")
band = client.hot_band() # Full trending search list
trends = client.trending() # Real-time search suggestions
# ── Feeds (popular requires no login; following requires login)─────────────────────
hot = client.hot_feed(count=10) # Popular timeline
home = client.home_feed(count=20) # Following timeline
# ── Search (mobile API)────────────────────────────────────
results = client.search("Artificial Intelligence", page=1)
for w in results[:5]:
print(w.get("text", "")[:80])
# ── Weibo post details / comments / reposts (login required)──────────────────
wb = client.detail("Qw06Kd98p")
cmt = client.comments("WeiboID", count=20)
rep = client.reposts("WeiboID", count=10)
# ── Users (login required)─────────────────────────────────────
me = client.me() # Currently logged-in user
user = client.profile("1699432410") # Specified user profile
weibos = client.user_weibos("1699432410", page=1)
following = client.following("1699432410", page=1)
followers = client.followers("1699432410", page=1)API Quick Reference
No Login Required (Public APIs)
| Method | Description |
hot_search() | Trending search sidebar (~52 entries) |
hot_band() | Full trending search list |
trending() | Real-time search suggestions |
hot_feed(count, max_id) | Popular timeline |
search(keyword, page) | Keyword search for Weibo posts |
Login Required (Cookie Authentication)
| Method | Description |
me() | Current logged-in user information |
home_feed(count, max_id) | Following timeline |
detail(mblogid) | Details for a single Weibo post |
comments(weibo_id, count, max_id) | Weibo comment list |
reposts(weibo_id, page, count) | Weibo repost list |
profile(uid) | User profile |
user_weibos(uid, page, count) | User's Weibo post list |
following(uid, page) | User following list |
followers(uid, page) | User follower list |
Authentication
| Method | Description |
WeiboClient.setup_credential(cookies) | Save Cookie credentials (static method) |
Anti-Abuse Notes
Consistent with the upstream weibo-cli:
- Gaussian jitter: Interval between requests =
request_delay + gauss(0.3, 0.15), about 1 s - 5% long pause: Randomly triggers an additional 2-5 s delay to simulate reading behavior
- Exponential backoff: HTTP 429/5xx retries up to 3 times, with a wait time of 2^n seconds
- Chrome 145 UA: Desktop User-Agent, consistent with the browser fingerprint
Notes
- Before first use, you must call
WeiboClient.setup_credential(cookies)to save credentials - Credential file:
/var/minis/workspace/weibo-hub/credential.json, permissions 0600 - Required Cookies:
SUB+SUBP; if missing,setup_credential()throwsValueError - Cookies automatically prompt as expired after 7 days and must be extracted again
- Trending searches, popular feeds, and search do not require login;
profile,detail,home_feed, and similar methods require valid cookies search()uses the mobile API (m.weibo.cn), and the result format is slightly different
In this repository56 other files it gives its agents.
- android-devSkill
- android-ui-automationSkill
- apple-remindersSkill
- appstoreprice-hubSkill
- asc-cliSkill
- bilibili-hubSkill
- Clash 控制器Skill
- cloudflare-dnsSkill
- codex-imageSkill
- codex-on-ishSkill
- contact-vcard-extractorSkill
- coredevice-toolkitSkill
- deepseek-usageSkill
- doubao-ttsSkill
- douyin-downloaderSkill
- evidence-chain-builderSkill
- exa-searchSkill
- free-ttsSkill
- fucai3d-latestSkill
- generative-ui-minisSkill
- github-sync-helperSkill
- health-sleep-analysisSkill
- health-training-checkinSkill
- hyperframes-cliSkill
- hyperframesSkill
- ios-devSkill
- korea-stockSkill
- maimai-hubSkill
- memos-apiSkill
- nano-bananaSkill
- notion-hubSkill
- openstreetmap-markerSkill
- pdf-converterSkill
- production-agent-publicSkill
- qbt-hubSkill
- quark-hubSkill
- reverse-dcfSkill
- self-improving-agentSkill
- shortcuts-builderSkill
- shortcut-share-fileSkill
- spotify-hubSkill
- stock-fund-flowSkill
- stock-priceSkill
- tavily-searchSkill
- tg-hubSkill
- todoocardSkill
- twitter-downloaderSkill
- twitter-x-hubSkill
- us-stockSkill
- web-content-extractorSkill
- web-searchSkill
- whenpeakSkill
- xianyu-hubSkill
- xiaohongshu-hubSkill
- youtube-downloaderSkill
- ytmusic-hubSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

