anime-find README

The project's README from github.com/cocofhu/anime-find. As one markdown file: README.md.

anime-find

anime-find

CI npm License: MIT

DeepSeek Harness 搜番插件。在对话中搜索番剧,以可点击卡片展示结果,并在详情面板中查看字幕组、磁力链接和种子文件。

功能

环境要求

安装

从 npm 安装:

dsh plugin --profile web add @cocofhu/anime-find

本地开发:

dsh plugin --profile web add /absolute/path/to/anime-find

安装后重启 dsh web,并强制刷新浏览器页面。不要用 github:cocofhu/anime-find、git+https://github.com/cocofhu/anime-find.git 或无前缀的 anime-find 安装:lib/ 不进仓库,git 源会跑 prepare,而 pnpm 会拦截该脚本。旧包名已迁到 @cocofhu/anime-find。

插件中心可能默认走 GitHub git 源。请改用上面的 npm 命令。安装过程中出现 missing peer @deepseek-ai/... 或 react 是预期警告(这些包由 Harness 宿主提供),只要命令成功退出即可。

使用

可以直接对 Agent 说:

搜一下无职转生,看看有没有磁力

最近有哪些好看的动漫

还有吗

插件向 Agent 提供 anime_find_search 工具。搜索完成后,对话中会显示可点击卡片;点击卡片即可查看字幕组与下载资源。

资源详情

按字幕组浏览集数、复制磁力链接或打开种子文件:

资源详情:无职转生第三季的磁力与种子列表

流媒体播放

在详情中切换到流媒体,选择剧集后可在对话中直接播放:

流媒体播放:无职转生第三季在线播放

配置

打开 设置 → 插件 → 插件配置 → 搜番:

保存后立即生效。用户配置落在 Harness 用户目录 $DSH_HOME/settings.yaml 的 anime-find: 段(由 dsh 设置服务原子写入)。版本与安装来源为只读信息,不会写入该段。 从旧版升级时,若仍存在 $DSH_HOME/anime-find.json 且 yaml 中尚无该用户段,插件会把 json 导入 anime-find: 后将原文件改名为 anime-find.json.bak;若 yaml 里已有用户配置则跳过导入,仍只改名备份,之后不再读取 json。

流媒体播放

流媒体默认开启,并内置一条可静态解析的试点规则(xfdm)。打开 设置 → 插件 → 插件配置 → 搜番 可关闭总开关、启停或替换规则 JSON。规则须为可静态解析的 CSS 或受限 XPath 子集,至少包含 name、baseURL、searchURL、searchList、searchName、searchResult、chapterRoads 和 chapterResult。{{keyword}} 或 {{query}} 会替换为搜索关键词。

播放地址支持两种取法:playURL 既可以是指向 src/href 的选择器,也可以写成 script:player_aaaa.url,从播放页内联脚本对象里读取(MacCMS 站点常用,按同级 encrypt 字段自动处理 URL 编码或 base64)。

当媒体位于站点之外的 CDN 时,用 mediaHosts 显式声明这些域名,只有声明过的域才会 被解析和代理放行;私网、回环和链路本地地址始终拒绝。

mediaHeaders 只作用于媒体请求,值留空表示不发送该头。同一站点的不同 CDN 要求可能 相反(有的必须带 Referer,有的带了就报错),所以键名含点时视为域名,其下的头只对该 域及其子域生效:

{
  "mediaHosts": ["cdn-a.example", "cdn-b.example"],
  "mediaHeaders": { "cdn-b.example": { "referer": "" } }
}

流媒体 Tab 只显示已解析出剧集的源;单集不能播放时可换源或打开源站。媒体请求仅会代理到 已启用规则的域名及其声明的 mediaHosts(HLS playlist 会重写分片链接),不提供开放代理。首期不支持依赖 Kazumi WebView 拦截的动态规则,也不会自动同步社区规则仓库。受限 XPath 支持常见的 //tag、层级、序号、属性与属性包含谓词;脚本、函数和文本匹配谓词仍不支持。插件不托管任何内容,请仅 访问你有权观看的内容并遵守来源站点条款。

也可通过 cordis.patch.yml 设置默认来源:

- id: anime-find
  config:
    sources: [mikan]

数据与网络

启用某个来源后,插件会向对应站点发送搜索和详情请求。封面通过插件服务转发,配置仅保存在本机,不会写入仓库。

详情卡在有 Bangumi subject ID 时,会通过 Host 使用插件配置的 User-Agent 和超时设置请求 Bangumi 条目信息;介绍、评分和基础信息来自公开 v0 API。短评由 Host 代理 Bangumi 的非公开 p1 接口,最多展示 5 条。该接口可能变更或不可用,届时短评 Tab 会自动隐藏,不影响介绍和资源浏览;本期不使用 HTML 抓取后备。

Bangumi 的介绍和短评只在用户点击详情卡后加载和渲染,不会写入提供给模型的工具正文。

请遵守来源站点的使用条款,并仅将下载能力用于你有权访问的内容。

版本与更新

在 设置 → 插件 → 插件配置 → 搜番 的「版本与更新」区块中,可手动检查 GitHub 上的最新正式 Release。打开设置页不会自动检查,也不会使用预发布版或草稿 Release。

发现新版本时,保留显示以下官方命令供参考。点击「更新」并确认后,插件会自动使用 当前 profile 执行该命令、拉起新的 dsh web(可能使用不同端口),然后自动跳转到新 地址:

dsh plugin --profile web update @cocofhu/anime-find

当前以 link: 或 file: 本地方式安装时,页面仍会显示版本对比,但禁止自动更新, 以免覆盖开发环境。若仓库尚未发布正式 Release,检查结果会显示「暂无可用 Release,无法判断是否有更新」。

开发

pnpm install --frozen-lockfile
pnpm typecheck
pnpm test
pnpm build

源码位于 src/,构建结果输出到 lib/。lib/ 不提交到版本库,安装或发布时由 prepare 脚本生成。

Harness + MiniMax 中国站验收

使用隔离的 DSH_HOME 部署本地插件时,需要先为 Harness 注册模型提供方;否则 Web 首次引导无法创建会话,也无法触发 anime_find_search 和 ToolView。密钥只通过环境变量传入,不要写入仓库或 settings.yaml:

export MINIMAX_KEY_CN='...'
export DSH_HOME="$(mktemp -d)"

mkdir -p "$DSH_HOME"
cat >"$DSH_HOME/settings.yaml" <<'EOF'
llm-pi-ai:
  providers:
    minimax-cn:
      apiKeyEnv: MINIMAX_KEY_CN
      api: openai-completions
      baseURL: https://api.minimaxi.com/v1
      models:
        - id: MiniMax-M3
EOF

npx @deepseek-ai/dsh web

随后在 设置 → 模型 选择 minimax-cn / MiniMax-M3,并从另一个终端安装本地插件:

DSH_HOME="$DSH_HOME" npx @deepseek-ai/dsh plugin --profile web add /absolute/path/to/anime-find

在新会话中请求搜番,确认工具视图的「流媒体」Tab、可播源卡片、选集和播放器路径。该配置仅用于验收;流媒体规则和任何第三方站点授权仍须由测试者自行提供。

故障排查

参与贡献

提交 Issue 或 Pull Request 前请阅读 CONTRIBUTING.md。安全问题请按 SECURITY.md 私下报告。

许可证

MIT

anime-find (cocofhu/anime-find)

Searching Database…

What is this?anime-find is a plugin for DeepSeek Harness that lets you search for anime inside a chat conversation and get clickable result cards with cover art, ratings, and download info.
Is this a standalone app or a plugin for something else?It is a plugin that runs inside DeepSeek Harness Web; it adds an 'animefindsearch' tool the agent can call, and renders results as cards and a details panel in the chat UI.
What do I need before installing?You need Node.js 22 or newer and a running DeepSeek Harness Web instance; peer packages like react and cordis are provided by the Harness host, not by the plugin itself.
Any install pitfalls I should watch for?Do not install via a GitHub git source or the old package name 'anime-find' — the build output (lib/) isn't committed and pnpm blocks the required prepare script on git installs; use the npm package @cocofhu/anime-find instead.
Which sites does it search?It aggregates results from Mikan, AniBT, and AnimeGarden, with Mikan enabled by default and the others optional in plugin settings.
Can I actually play episodes, not just download magnets?Yes, an optional streaming tab resolves playable sources using user-supplied, statically parseable CSS/limited-XPath rules and plays the selected episode right in the chat.
Where does the anime rating info come from?Rating, synopsis, and short reviews are pulled from Bangumi's public v0 API (and a limited unofficial endpoint for reviews), loaded only when you open a result's detail card.
Why can't I just install straight from the plugin hub?The hub may default to a GitHub git source, which fails because pnpm blocks the prepare script needed to build lib/; you must run the npm install command manually instead.
Creator
cocofhu
Size
1.8 MB
Stars
177
Age
2mo
Commits · 90 Days