Back to home

YFlaga

dsh-paper-checker

期刊投稿状态定时检查插件(Editorial Manager 确定性抓取 + AI 回退 + 设置面板)

Stars
0
Language
JavaScript
Created
Aug 16, 2026
Updated
Aug 16, 2026

Introduction

@dsh-external/dsh-paper-checker

检查学术期刊投稿审稿状态并定时汇报的 DSH 插件。

  • Editorial Manager 期刊:内置确定性 Playwright 抓取(channel: msedge,用系统 Edge,无需下载浏览器)。
  • 其他投稿系统system: 'other'):返回「回退信号」,由 AI 用浏览器工具交互式处理(方案 C 混合模式)。
  • 守护定时:每天到点自动检查 → 写报告 → 推微信(Server酱)。
  • 按需工具check_paper_status,agent 可随时调用。
  • 设置面板:DSH「设置 → 投稿检查」里可视化配置时间/时区/期刊列表,并支持「自动识别」新期刊。

安装

本插件是标准 dsh bundle(package.json 声明 dsh.bundle.patch,自带 cordis.patch.yml),可被官方 CLI 直接识别安装。

前提

  • DSH 客户端(任意 profile,示例用 web)。
  • 命令行里有 dshpnpm(DSH 插件管理的标准工具链)。
  • 电脑已装 Microsoft Edge(Windows 默认有,用于确定性抓取)。

方式一:官方 CLI(推荐)

cd <tgz 所在目录>
dsh plugin --profile web add ./dsh-external-dsh-paper-checker-0.0.1.tgz

(相对路径会被 CLI 锚定到你的调用目录;也可用绝对路径 dsh plugin --profile web add E:/path/to/dsh-external-dsh-paper-checker-0.0.1.tgz。)

dsh plugin add 会:

  1. 把 tgz 装进 profile(依赖 playwright-core 一并安装);
  2. 检测到本包声明了 dsh.bundle,自动把 @dsh-external/dsh-paper-checker 写入 profile 的 dsh.profile.bundles 启用名单。

装完重启 DSH 即可在「设置」里看到「投稿检查」面板,按需配置期刊后生效。

没有 pnpm 时先 corepack enable pnpm(Node 18+ 自带 corepack)或 npm i -g pnpm

方式二:插件市场(若客户端装了 plugin-market / zat-dsh-engine)

把本仓库发布到 GitHub 并打上 dsh-plugin topic 后,在市场的「安装」入口搜索即可一键安装(市场同样会写启用名单)。

方式三:手动(无 dsh CLI 时)

cd <DSH_HOME>/profiles/web
pnpm add file:/绝对路径/dsh-external-dsh-paper-checker-0.0.1.tgz
# 然后编辑 <DSH_HOME>/profiles/web/package.json,
# 确保 dsh.profile.bundles 数组里含 "@dsh-external/dsh-paper-checker",重启 DSH。

配置

安装后推荐在「设置 → 投稿检查」面板里配置(可视化 + 可自动识别新期刊)。配置持久化到 settings.yamlpaper-checker 命名空间。

配置结构(也可直接编辑 settings.yaml):

journals:
  - name: '某期刊名'
    baseUrl: 'https://www.editorialmanager.com/xxxx'
    username: 'your-email@example.com'
    password: 'your-password'
    sections:
      - 'Submissions Being Processed'
      - 'Submissions Needing Revision'
    system: 'editorial-manager'   # 默认;'other' 则回退给 AI
  - name: '某非 EM 期刊'
    baseUrl: 'https://example.com/submit'
    username: 'xxx'
    password: 'xxx'
    sections: []
    system: 'other'               # 回退:AI 用浏览器工具处理

time: '08:00'                     # 每天触发时间 HH:mm
timezone: 'Asia/Shanghai'         # IANA 时区
scheduleEnabled: true             # 是否启用守护定时
serverchanKey: 'SCTxxxx'          # Server酱 SendKey;留空则不推微信
reportDir: ''                     # 报告目录;留空默认 ~/.dsh/paper-checker/reports
reportSessionId: ''               # 可选:检查结果同步汇报到某个对话会话
discoverProvider: ''              # 可选:自动识别新期刊用的模型 Provider(留空用全局默认)
discoverModel: ''                 # 可选:自动识别新期刊用的模型(留空用全局默认)

字段说明

字段类型说明
journals[].namestring期刊显示名
journals[].baseUrlstringEM 站点根地址(如 https://www.editorialmanager.com/xxx
journals[].username/passwordstring登录凭据
journals[].sectionsstring[]要检查的分区名(与作者主菜单上的文字一致)
journals[].system'editorial-manager'|'other'抓取方式;EM 确定性,other 回退 AI
time'HH:mm'每天触发时间
timezoneIANA 时区如 Asia/Shanghai
scheduleEnabledbool是否开启守护定时
serverchanKeystringServer酱 key,推微信用;空则跳过
reportDirstring报告输出目录
reportSessionIdstring检查结果同步汇报的会话 id(可选)
discoverProvider / discoverModelstring自动识别新期刊所用模型(可选,留空用全局默认)

输出

  • 报告写入 {reportDir}/report-{date}.mdlatest.md,运行日志 run.log
  • 微信推送(若配置了 serverchanKey)标题 📊 投稿状态报告 (日期)
  • 工具 check_paper_status 返回中文报告文本。

依赖

  • 本机需安装 Microsoft Edge(Windows 默认有)。
  • playwright-core(声明为 dependency,安装时自动带入;确定性抓取只驱动本机 Edge,不下载浏览器)。

说明

  • Editorial Manager 登录兼容两种形态:直接表单 / 折叠在「Alternatively, use your username and password」里。
  • 状态翻译:Under Review→审稿中、In Production→生产中、Needs Author Action→等待作者操作 等。
  • 非 EM 期刊(system: 'other')在守护定时中仅标记「需 AI 检查」,交互式调用 check_paper_status 时由 AI 用浏览器工具完成。

构建(开发者)

产物 lib/index.js(host,自包含,已内联 @deepseek-ai/* 依赖)与 lib/client.js(client 面板)已随包分发,使用者无需构建。如需改代码后重打:

npm install            # 安装 typescript / tsdown / @types/node
npm run build:client   # tsdown 打包 host + client 到 lib/
npm pack               # 产出 tgz