Fetch DMM/FANZA public rankings (daily/weekly/monthly) without API keys and output top 10 in numbered text format with Japanese title, Chinese translation, and cover image URL. Use when user asks for DMM/FANZA 日榜/周榜/月榜 scraping, top10 extraction, or no-key ranking collection.
Scanned 9/7/2026
Install to Claude Code
npx -y skills add modbender/skill-library-mcp --skill dmm-ranking-lite --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Dmm Ranking Lite?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/modbender-dmm-ranking-lite)More formats (shields.io, HTML) on the badges page.
---
name: dmm-ranking-lite
description: Fetch DMM/FANZA public rankings (daily/weekly/monthly) without API keys and output top 10 in numbered text format with Japanese title, Chinese translation, and cover image URL. Use when user asks for DMM/FANZA 日榜/周榜/月榜 scraping, top10 extraction, or no-key ranking collection.
---
# DMM Ranking Lite
抓取 DMM/FANZA 公共排行榜并输出 Top10,默认中文说明 + 日文原片名。
## When To Use
- 用户要 DMM/FANZA `日榜`、`周榜`、`月榜`
- 用户明确要 `Top10`(或可改为 TopN)
- 用户要求无 API Key 的公开页面抓取
## Inputs
- `term`: `daily` | `weekly` | `monthly`
- `count`: 默认 `10`
- `output_lang`: `zh-CN`(保留日文原片名)
## Output Format
必须使用编号块,不要表格:
```text
1.
- 片名(日文):...
- 中文:...
- 封面:...
2.
- 片名(日文):...
- 中文:...
- 封面:...
```
## Workflow
1. 打开榜单页面:
- `https://video.dmm.co.jp/av/ranking/?term=<term>`
2. 如果出现年龄确认,点击 `はい`
3. 使用 `browser(action="act", request.kind="evaluate")` 执行提取脚本
4. 按 rank 升序取前 `count` 条
5. 输出为编号列表,字段固定为:
- `片名(日文)`
- `中文`
- `封面`
6. 结束后关闭标签页:`browser(action="close")`
## Extraction Snippet
```javascript
() => {
const items = Array.from(document.querySelectorAll('main ul > li'));
const rows = [];
for (const li of items) {
const rankMatch = (li.textContent || '').match(/(\d+)位/);
if (!rankMatch) continue;
const rank = Number(rankMatch[1]);
const link =
li.querySelector('h2 a[href*="/av/content/?id="]') ||
li.querySelector('a[href*="/av/content/?id="]');
if (!link) continue;
const href = link.getAttribute('href') || '';
const idMatch = href.match(/[?&]id=([^&]+)/);
const title = (link.textContent || '').replace(/\s+/g, ' ').trim();
const cover = Array.from(li.querySelectorAll('img'))
.map((img) => img.getAttribute('src') || img.getAttribute('data-src') || img.currentSrc || '')
.find((src) => /pics_dig|digital\/video|awsimgsrc\.dmm\.co\.jp/.test(src));
rows.push({
rank,
id: idMatch ? idMatch[1] : null,
title,
content_url: new URL(href, location.origin).href,
cover_url: cover ? new URL(cover, location.origin).href : null,
});
}
rows.sort((a, b) => a.rank - b.rank);
return rows;
}
```
## Translation Rules
- `片名(日文)` 必须保留原文,不可改写
- `中文` 采用简洁自然中文,避免机翻腔
- 标题过长时可适度压缩,不改变核心含义
- 明显敏感措辞可中性化,但不要错译
## Error Handling
- 页面结构变更:先 `snapshot` 检查节点,再调整 selector
- 未拿到 `cover_url`:输出 `封面:无`
- 抓取不足 10 条:按实际条数输出,并说明“本次仅抓取到 N 条”
- 无法通过年龄确认:重试一次后返回失败原因
## Notes
- 仅抓取公开页面,不需要 DMM API 凭据
- 默认 Top10,如需 TopN 请在结果截取阶段改为 `rows.slice(0, N)`
- 若页面改版频繁,优先保持输出格式稳定,必要时更新提取脚本
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!