技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
weibo-hub【数据与研究】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…
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
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.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/
/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)
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.
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 path
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.
cd /var/minis/skills/weibo-hub
uv sync
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)
| 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 |
| 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 |
| Method | Description |
|---|---|
WeiboClient.setup_credential(cookies) | Save Cookie credentials (static method) |
Consistent with the upstream weibo-cli:
request_delay + gauss(0.3, 0.15), about 1 sWeiboClient.setup_credential(cookies) to save credentials/var/minis/workspace/weibo-hub/credential.json, permissions 0600SUB + SUBP; if missing, setup_credential() throws ValueErrorprofile, detail, home_feed, and similar methods require valid cookiessearch() uses the mobile API (m.weibo.cn), and the result format is slightly different