用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/easybangumiorg/website --skill js命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
基于 SOC 职业分类
| name | 纯纯看番 JS 源扩展开发 |
| description | 为纯纯看番 (EasyBangumi) 应用创建 JavaScript 源扩展。使用场景:用户提供一个番剧网站 URL,需要分析网站结构并实现插件化集成,包括页面展示、搜索、详情获取和视频播放功能。 |
💡 Agent 任务指南:查看 AGENT_TASK_GUIDE.md 获取详细的任务清单和实战案例(包含 AGE 动漫、次元城动漫完整分析流程)。
使用浏览器 DevTools 分析目标网站:
// @key com.example.anime // 反向域名唯一标识
// @label 示例动漫源 // 显示名称
// @versionName 1.0.0
// @versionCode 1
// @libVersion 13 // 当前库版本
// @cover https://example.com/logo.png
// 注入工具
var networkHelper = Inject_NetworkHelper;
var preferenceHelper = Inject_PreferenceHelper;
var okhttpHelper = Inject_OkhttpHelper;
var webProxyProvider = Inject_WebProxyProvider;
按顺序实现以下组件:
详细实现模式见 组件详解。
// 添加日志
Log.d("MyAnime", "请求 URL: " + url);
Log.d("MyAnime", "解析元素数量:" + elements.size());
// 抛出异常
throw new ParserException("视频地址解析失败");
| 字段 | 示例 |
|---|---|
| @key | @key heyanle.yhw |
| @label | @label 樱花动漫 |
| @versionName | @versionName 1.0.0 |
| @versionCode | @versionCode 1 |
| @libVersion | @libVersion 13 |
| @cover | @cover https://... |
PreferenceComponent_getPreference() -> ArrayList
PageComponent_getMainTabs() -> ArrayList
PageComponent_getSubTabs(mainTab) -> ArrayList
PageComponent_getContent(mainTab, subTab, key) -> Pair
SearchComponent_search(page, keyword) -> Pair
DetailedComponent_getDetailed(summary) -> Pair
PlayComponent_getPlayInfo(summary, playLine, episode) -> PlayerInfo
// 网络请求
var req = okhttpHelper.cloudflareWebViewClient.newCall(OkhttpUtils.get(url));
var html = req.execute().body().string();
// URL 拼接
var fullUrl = SourceUtils.urlParser(rootUrl, path);
// HTML 解析
var doc = Jsoup.parse(html);
var elements = doc.select(".selector");
// WebView 代理
var webProxy = webProxyProvider.getWebProxy();
webProxy.loadUrl(url, networkHelper.defaultLinuxUA);
var videoUrl = webProxy.waitingForResourceLoaded(".*\\.m3u8");
// 实体创建
var cover = makeCartoonCover({ id, url, title, cover });
使用方法:
/// <reference path="./easyplugin.d.ts" />
使用方法:
# 创建空插件模板
node scripts/create-empty-extension.js <插件名称> [输出目录]
# 示例
node scripts/create-empty-extension.js my-anime
node scripts/create-empty-extension.js sakura ./extensions
纯纯看番 App
├─ ExtensionControllerV2
│ ├─ JsExtensionProviderV2
│ │ └─ JSExtensionLoader (解析元数据,创建 JSScope)
│ └─ JSComponentBundle (注入工具类,加载组件)
执行流程: 加载 → 注入 → 注册 → 运行