Run any Skill in Manus
with one click
with one click
Run any Skill in Manus with one click
Get Started$pwd:
$ git log --oneline --stat
stars:3
forks:0
updated:February 12, 2026 at 09:09
SKILL.md
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | fanqie-screenshot |
| description | 截图番茄小说榜单页面 - 支持新书榜、阅读榜的可视化截图,用于市场分析和竞品研究 |
| allowed-tools | Read, Bash |
当用户需要截取番茄小说榜单页面时使用此技能。
截图榜单、榜单截图、扫榜截图、screenshot rank、截图番茄
需要安装 Playwright(首次使用会自动安装):
# 创建虚拟环境并安装
python3 -m venv /tmp/playwright_env
source /tmp/playwright_env/bin/activate
pip install playwright -q
python -m playwright install chromium
https://fanqienovel.com/rank/{gender}_{type}_{category_id}
参数说明:
gender: 1=男频, 0=女频type: 1=新书榜, 2=阅读榜category_id: 分类ID| ID | 分类名 | ID | 分类名 |
|---|---|---|---|
| 1141 | 西方奇幻 | 1140 | 东方仙侠 |
| 8 | 科幻末世 | 261 | 都市日常 |
| 124 | 都市修真 | 1014 | 都市高武 |
| 273 | 历史古代 | 27 | 战神赘婿 |
| 263 | 都市种田 | 258 | 传统玄幻 |
| 272 | 历史脑洞 | 539 | 悬疑脑洞 |
| 262 | 都市脑洞 | 257 | 玄幻脑洞 |
| 751 | 悬疑灵异 | 504 | 抗战谍战 |
| 746 | 游戏体育 | 718 | 动漫衍生 |
| 1016 | 男频衍生 |
| ID | 分类名 | ID | 分类名 |
|---|---|---|---|
| 1139 | 古风世情 | 8 | 科幻末世 |
| 746 | 游戏体育 | 1015 | 女频衍生 |
| 248 | 玄幻言情 | 23 | 种田 |
| 79 | 年代 | 267 | 现言脑洞 |
| 246 | 宫斗宅斗 | 539 | 悬疑脑洞 |
| 253 | 古言脑洞 | 24 | 快穿 |
| 749 | 青春甜宠 | 745 | 星光璀璨 |
| 747 | 女频悬疑 | 750 | 职场婚恋 |
| 748 | 豪门总裁 | 1017 | 民国言情 |
#!/usr/bin/env python3
"""番茄小说榜单截图工具"""
from playwright.sync_api import sync_playwright
import os
from datetime import datetime
# 分类映射
MALE_CATEGORIES = {
"1141": "西方奇幻", "1140": "东方仙侠", "8": "科幻末世",
"261": "都市日常", "124": "都市修真", "1014": "都市高武",
"273": "历史古代", "27": "战神赘婿", "263": "都市种田",
"258": "传统玄幻", "272": "历史脑洞", "539": "悬疑脑洞",
"262": "都市脑洞", "257": "玄幻脑洞", "751": "悬疑灵异",
"504": "抗战谍战", "746": "游戏体育", "718": "动漫衍生",
"1016": "男频衍生"
}
FEMALE_CATEGORIES = {
"1139": "古风世情", "8": "科幻末世", "746": "游戏体育",
"1015": "女频衍生", "248": "玄幻言情", "23": "种田",
"79": "年代", "267": "现言脑洞", "246": "宫斗宅斗",
"539": "悬疑脑洞", "253": "古言脑洞", "24": "快穿",
"749": "青春甜宠", "745": "星光璀璨", "747": "女频悬疑",
"750": "职场婚恋", "748": "豪门总裁", "1017": "民国言情"
}
def screenshot_rank(gender, rank_type, category_id, output_dir="/tmp"):
"""
截取单个榜单页面
Args:
gender: 1=男频, 0=女频
rank_type: 1=新书榜, 2=阅读榜
category_id: 分类ID
output_dir: 输出目录
Returns:
截图文件路径
"""
url = f"https://fanqienovel.com/rank/{gender}_{rank_type}_{category_id}"
# 获取分类名称
categories = MALE_CATEGORIES if gender == 1 else FEMALE_CATEGORIES
cat_name = categories.get(str(category_id), f"unknown_{category_id}")
# 生成文件名
gender_str = "male" if gender == 1 else "female"
type_str = "newbook" if rank_type == 1 else "reading"
timestamp = datetime.now().strftime("%Y%m%d")
filename = f"fanqie_{gender_str}_{type_str}_{cat_name}_{timestamp}.png"
output_path = os.path.join(output_dir, filename)
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page(viewport={"width": 1280, "height": 900})
page.goto(url, wait_until="networkidle", timeout=30000)
page.wait_for_timeout(2000) # 等待动态内容加载
page.screenshot(path=output_path, full_page=True)
browser.close()
print(f"截图已保存: {output_path}")
return output_path
def screenshot_all_categories(gender=1, rank_type=1, output_dir="/tmp/fanqie_screenshots"):
"""
批量截取所有分类
Args:
gender: 1=男频, 0=女频
rank_type: 1=新书榜, 2=阅读榜
output_dir: 输出目录
"""
os.makedirs(output_dir, exist_ok=True)
categories = MALE_CATEGORIES if gender == 1 else FEMALE_CATEGORIES
results = []
for cat_id, cat_name in categories.items():
print(f"正在截图: {cat_name} ({cat_id})")
try:
path = screenshot_rank(gender, rank_type, cat_id, output_dir)
results.append({"category": cat_name, "path": path, "success": True})
except Exception as e:
print(f"截图失败: {cat_name} - {e}")
results.append({"category": cat_name, "error": str(e), "success": False})
return results
# 使用示例
if __name__ == "__main__":
# 单个分类截图
# screenshot_rank(1, 1, 124) # 男频新书榜-都市修真
# 批量截图所有男频新书榜
screenshot_all_categories(gender=1, rank_type=1)
# 激活环境
source /tmp/playwright_env/bin/activate
# 单个分类截图(都市修真新书榜)
python3 << 'EOF'
from playwright.sync_api import sync_playwright
url = "https://fanqienovel.com/rank/1_1_124"
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page(viewport={"width": 1280, "height": 900})
page.goto(url, wait_until="networkidle", timeout=30000)
page.wait_for_timeout(2000)
page.screenshot(path="/tmp/fanqie_rank.png", full_page=True)
browser.close()
print("截图已保存: /tmp/fanqie_rank.png")
EOF
快速截图单个分类:
截图 https://fanqienovel.com/rank/1_1_124
指定分类截图:
截图番茄都市修真新书榜
批量截图:
批量截图男频所有新书榜
/tmp//tmp/fanqie_screenshots/fanqie_{gender}_{type}_{category}_{date}.png