dmm-ranking-lite

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.

Safety Notice

This listing is from the official public ClawHub registry. Review SKILL.md and referenced scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "dmm-ranking-lite" with this command: npx skills add leeeroyjoy-pixel/dmm-ranking-lite

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

必须使用编号块,不要表格:

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

() => {
  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)
  • 若页面改版频繁,优先保持输出格式稳定,必要时更新提取脚本

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

Zoom

Zoom API integration with managed OAuth. Manage meetings, webinars, recordings, and user profiles. Use this skill when users want to schedule meetings, manag...

Registry SourceRecently Updated
General

Kleinanzeigen.de Helper

Erstelle und verwalte Verkaufsanzeigen speziell auf kleinanzeigen.de. Verwende diesen Skill wenn der Human sagt, er will etwas auf kleinanzeigen.de verkaufen...

Registry SourceRecently Updated
General

Poku

Sends and receives phone calls and messages (like SMS, WhatsApp, Slack), and reserves dedicated phone numbers using the Poku API. Example use cases: calling...

Registry SourceRecently Updated
General

IMAP/SMTP Email - Maddy Fix

Read and send email via IMAP/SMTP. Check for new/unread messages, fetch content, search mailboxes, mark as read/unread, and send emails with attachments. Sup...

Registry SourceRecently Updated