Token导航 LogoToken导航

Agent Skill · 开发

founder-hy-editor-browser(创始人 hy 编辑器浏览器)

founder-hy-editor-browser 用于处理浏览器自动化、网页检查和页面信息提取,适合在 OpenClaw 中需要让 Agent 打开页面、读取网页或验证前端流程时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

founder-hy-editor-browser 是开发类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为操作浏览器;许可证为 MIT-0,第三方扫描有提醒项,按安装量在开发类的 21,746 个 Skill 里排第 4,610。

总安装 7,858周安装 321GitHub Stars 公开资料未说明下载 2,517核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
0.1.9

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:founder-hy-editor-browser(创始人 hy 编辑器浏览器)
来源仓库:https://github.com/behurry/founder-hy-editor-browser
安装命令:
openclaw skills install founder-hy-editor-browser
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install founder-hy-editor-browser

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

自动化处理方正鸿云学术出版平台登录与交互。支持刊物切换、送审单填写与 DOI 注册等操作。显著提升编辑部日常工作处理效率。founder-hy-editor-browser 属于开发类 Skill,可作为该场景下的辅助能力补充。所有 API 调用通过 browser.evaluate() 安全执行。

使用前需准备有效账号与刊物管理权限凭证。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install founder-hy-editor-browser;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

founder-hy-editor-browser 怎么安装?

在终端执行 openclaw skills install founder-hy-editor-browser。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

founder-hy-editor-browser 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

founder-hy-editor-browser 需要什么权限?

权限级别是操作浏览器。该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

founder-hy-editor-browser 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

founder-hy-editor-browser 用的人多吗?

公开数据是累计安装 7,858 次,近一周安装 321 次,下载 2,517 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

founder-hy-editor-browser 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
founder-hy-editor-browser

创始人 hy 编辑器浏览器 · 本页

7,858—操作浏览器MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

name
方正鸿云编辑助手
description
方正鸿云学术出版平台自动化技能。使用 browser 工具处理登录和页面交互,API 调用使用 browser.evaluate() 执行。触发关键词:登录方正鸿云、切换刊物、自动催修、自动催审、催审第 X 条、鸿云任务提醒、自动填写送审单、自动注册 DOI、获取登录 Cookie、调用获取刊物信息接口、调用获取发布站点接口、调用获取刊期列表接口、调用获取刊期论文列表接口、调用 DOI 注册接口、将文章{标题}发布到微信公众号。
env
FOUNDER_PLATFORM_URL
平台地址(可选,默认 http://journal.portal.founderss.cn/)

方正鸿云编辑器浏览器自动化技能

环境变量配置(可选)

以下环境变量均为可选,如未设置,技能会在需要时提示用户输入:

基础配置

变量名必需默认值说明
FOUNDER_PLATFORM_URL❌http://journal.portal.founderss.cn/平台登录地址

微信发布功能配置(可选)

如需使用 [将文章{标题}发布到微信公众号] 功能,需要配置微信公众号凭证:

变量名必需说明
WECHAT_APP_ID⚠️ 微信发布必需微信公众号 AppID
WECHAT_APP_SECRET⚠️ 微信发布必需微信公众号 AppSecret

获取方式:

  1. 登录微信公众平台 (https://mp.weixin.qq.com/)
  2. 进入 开发 → 基本配置
  3. 获取开发者 ID (AppID) 和 开发者密码 (AppSecret)

配置方式(任选其一):

  1. 系统环境变量:
   export FOUNDER_PLATFORM_URL="http://journal.portal.founderss.cn/"
   export WECHAT_APP_ID="your_appid"
   export WECHAT_APP_SECRET="your_secret"
  1. 使用时输入(推荐) - 不设置环境变量,首次使用时手动输入
  1. 使用默认值 - 不设置环境变量,使用默认平台地址

核心规则(重要)

规则 1:使用 browser.evaluate() 执行 API 调用

所有 API 接口调用使用 browser.evaluate() 在浏览器上下文中执行,利用浏览器会话的认证状态,避免 Cookie 失效问题。

操作正确方式
调用获取刊物信息接口browser.evaluate() 执行 fetch()
调用获取发布站点接口browser.evaluate() 执行 fetch()
调用获取刊期列表接口browser.evaluate() 执行 fetch()
调用获取刊期论文列表接口browser.evaluate() 执行 fetch()
调用 DOI 注册接口browser.evaluate() 执行 fetch()
搜索稿件接口browser.evaluate() 执行 fetch()
版本管理接口browser.evaluate() 执行 fetch()
微信文件接口browser.evaluate() 执行 fetch()

调用格式示例:

browser.act(action=act, kind=evaluate, fn="(async () => { const r = await fetch('/api/endpoint', { headers: { 'orgcode': org_code } }); return r.json(); })()")

规则 2:Cookie 复用机制

所有需要登录的功能,必须先检查会话中是否存在有效的 founder_cookie:

开始功能
  ↓
检查会话变量 founder_cookie
  ↓
├─ 存在且有效 → 直接使用
└─ 为空或失效 → 执行 [获取登录 Cookie] → 存储到会话

Cookie 有效性检查:

  • 会话变量为空 → 需要重新获取
  • API 调用返回登录重定向(302 到 /oauth/authorize)→ Cookie 失效,需要重新获取

会话变量说明:

  • founder_cookie 存储在当前会话的临时内存中
  • 会话结束后自动清除

规则 3:API 调用范围限制(安全)

browser.evaluate() 仅调用方正鸿云平台的官方 API 接口,无任意 URL 访问行为:

特性说明
API 域名由环境变量 FOUNDER_PLATFORM_URL 决定,默认 journal.portal.founderss.cn
域名验证所有方正鸿云平台 API 请求的目标域名必须与 FOUNDER_PLATFORM_URL 同源
API 路径不限具体路径,在平台域名下按需调用
第三方服务仅访问 api.weixin.qq.com(微信发布功能必需)
无任意 URL不支持用户传入任意 URL 进行请求
请求透明所有 API 调用在浏览器开发者工具中可见

安全保证:

  • ✅ 方正鸿云平台 API 调用在浏览器上下文中执行,受同源策略限制
  • ✅ 微信 API 调用通过 exec + curl 执行,目标固定为 api.weixin.qq.com
  • ✅ 不调用任何未声明的外部服务
  • ✅ 所有网络请求可通过浏览器开发者工具审计

规则 4:API 调用方式说明

API 类型调用方式权限需求目标域名
方正鸿云平台 APIbrowser.evaluate() + fetch()browserFOUNDER_PLATFORM_URL
微信公众号 APIexec + curlexecapi.weixin.qq.com

说明:

  • ✅ 方正鸿云平台 API 在浏览器上下文中执行,复用登录会话(Cookie)
  • ✅ 微信 API 通过 shell curl 调用,目标固定为 api.weixin.qq.com
  • ❌ 不调用任何未声明的外部服务
  • ❌ 不接受用户传入的任意 URL

🔒 安全风险提示

Cookie 处理说明

项目说明
Cookie 来源用户登录方正鸿云平台后生成
存储位置仅存储在会话内存中(临时变量 founder_cookie)
持久化❌ 不写入任何文件或数据库
会话结束✅ 自动清除
用户审计可通过浏览器开发者工具 Network 标签查看

权限使用说明

权限用途范围限制
browser登录、页面交互、方正鸿云平台 API 调用仅限 FOUNDER_PLATFORM_URL 域名
exec微信公众号 API 调用(curl)仅限 api.weixin.qq.com

用户控制

  • ✅ 用户可随时查看会话变量内容
  • ✅ 用户可通过浏览器开发者工具审计所有网络请求
  • ✅ 用户可选择不使用微信发布功能(无需 exec)
  • ✅ 所有 API 调用在 SKILL.md 中明确声明

⚠️ 安全模型说明

信任模型

本技能是 instruction-only 类型,安全约束基于以下机制:

约束类型强制方式说明
同源策略✅ 浏览器强制无法访问跨域资源(CORS 限制)
API 调用范围⚠️ 程序性约束依赖技能代码严格遵守声明
Cookie 使用⚠️ 程序性约束依赖技能代码不滥用
权限使用⚠️ 程序性约束依赖技能代码按声明用途使用

技术限制(浏览器强制)

以下限制由浏览器自动执行,无法被技能代码绕过:

限制说明强制机制
跨域请求无法访问未声明 CORS 的外部 APICORS 策略
跨域 Cookie无法读取其他网站的 Cookie同源策略
localStorage无法访问其他域名的 localStorage同源策略
文件系统无法直接访问用户文件系统浏览器沙箱

程序性约束(依赖代码自律)

以下约束依赖技能代码严格执行,用户可通过审计验证:

约束验证方法
仅访问声明的域名浏览器 Network 标签审计
仅调用声明的 API代码审查 + Network 标签
Cookie 不持久化检查会话变量 + 文件系统
权限不滥用代码审查 + 运行时审计

用户如何验证

1. 代码审查(使用前)
  • ✅ 技能代码完全开源,可在 ClawHub 查看
  • ✅ 所有 API 调用在 SKILL.md 中明确声明
  • ✅ 权限声明在 _meta.json 中公开
2. 运行时审计(使用中)
  • ✅ 打开浏览器开发者工具(F12)
  • ✅ 查看 Network 标签 - 所有请求可见
  • ✅ 查看 Application 标签 - Cookie 和存储可见
3. 会话变量检查(随时)
  • ✅ 用户可随时要求查看会话变量内容
  • ✅ 用户可要求检查 founder_cookie 值
  • ✅ 会话结束后变量自动清除

违规的技术后果

如果技能代码尝试违反声明:

违规行为技术后果
访问未声明的域名CORS 阻止请求
读取其他网站 Cookie同源策略阻止
持久化存储 Cookie用户可在文件系统检查
调用未声明的 APINetwork 标签可见

开源承诺

  • ✅ 技能代码完全开源
  • ✅ 无隐藏功能或后门
  • ✅ 欢迎安全社区审查
  • ✅ 发现问题请报告

触发关键词与操作流程

1. 登录方正鸿云

触发词: 登录方正鸿云

操作步骤:

  1. 使用 browser 工具打开平台地址
  2. 等待登录页面加载完成
  3. 等待用户输入用户名和密码
  4. 用户完成登录后,等待进入主页面
  5. 执行 [获取登录 Cookie] 保存到会话变量
  6. 向用户反馈登录完成

2. 切换刊物

触发词: 切换刊物 或 切换刊物 {刊物名称}

功能说明: 获取用户有权限的刊物列表,支持带参数切换刊物,切换后自动初始化新刊物并刷新 Cookie

操作步骤:

第一步:检查 Cookie
  • 检查会话变量 founder_cookie 是否为空
  • 若为空 → 执行 [登录方正鸿云]
第二步:调用获取刊物信息接口
  1. 通过 browser.evaluate 调用:
   browser.act(action=act, kind=evaluate, fn="(async () => { const r = await fetch('/je-api/journal-edit-reviewer/v1/review/journal?timestamps=' + Date.now()); return r.json().then(d => JSON.stringify(d)); })()")
  1. 解析返回的 JSON 数据:

- 提取 data.magazineId → z_journal_id - 提取 data.orgCode → org_code - 存入会话变量 z_journal_id 和 org_code - 同时更新 journal_id 和 journal_name

第三步:选择刊物
  • 如果用户指定了刊物名称 → 模糊匹配刊物列表
  • 如果未指定 → 提示用户输入刊物名称
  • 如果匹配成功 → 提示:"✅ 匹配成功"
第四步:新刊初始化
  • 调用新刊初始化接口
  • 返回 status=0 → 初始化成功
第五步:重新获取登录 Cookie
  • 从浏览器会话提取最新 Cookie
  • 更新会话变量 founder_cookie
向用户反馈
✅ 切换刊物完成

当前刊物:{journal_name}
刊物 ID: {journal_id}
机构代码:{org_code}

2.1 将文章{标题}发布到微信公众号

触发词: 将文章 {文章标题} 发布到微信公众号

功能说明: 根据文章标题搜索稿件,获取微信格式文件,调用微信 API 发布到微信公众号

操作步骤:

第一步:检查 Cookie
  • 检查会话变量 founder_cookie 是否为空
  • 若为空 → 执行 [登录方正鸿云]
第二步:执行 [调用获取刊物信息接口]
  1. 调用技能已有功能 [调用获取刊物信息接口]
  2. 通过 browser.evaluate 调用:
   browser.act(action=act, kind=evaluate, fn="(async () => { const r = await fetch('/je-api/journal-edit-reviewer/v1/review/journal?timestamps=' + Date.now()); return r.json().then(d => JSON.stringify(d)); })()")
  1. 解析返回的 JSON 数据:

- 提取 data.magazineId → z_journal_id - 提取 data.orgCode → org_code - 存入会话变量 z_journal_id 和 org_code - 同时更新 journal_id 和 journal_name(技能已有功能会自动更新)

第三步:调用搜索稿件接口(POST)
  1. 通过 browser.evaluate 调用(保持浏览器会话):
   browser.act(action=act, kind=evaluate, fn="(async () => { const r = await fetch('/article/portalDocList.do', { method: 'POST', headers: { 'Content-Type': 'application/json; charset=UTF-8', 'orgcode': org_code }, body: JSON.stringify({ magazineId: z_journal_id, sectionState: '', currentState: 0, currentHandler: 2, isPriority: null, collateTimes: '', magazineIssueId: '', preIssue: '', editorId: '', keyWord: article_title, pageNumer: 1, sortType: '', sortField: '', scopeone: 1, portal: 'portal', preIssueShow: '1' }) }); return r.json().then(d => JSON.stringify(d)); })()")

注意: - z_journal_id、org_code 和 article_title 需要从会话变量传入 - 请求头必须包含 orgcode,值为会话变量 org_code

  1. 解析返回的 JSON 数据:

- 提取 data.rows 数组(稿件列表) - 如果 data.rows 为空或长度为 0 → 提示:"❌ 搜索的稿件为空",结束流程 - 获取第一条稿件的 id → article_id - 存入会话变量 article_id

返回 JSON 样例:

{
  "status": 0,
  "message": "成功",
  "data": {
    "total": 2,
    "pageCount": 1,
    "pageNumber": 1,
    "pageSize": "50",
    "rows": [
      { "id": "29533" },
      { "id": "29532" }
    ]
  }
}
第四步:循环版本记录查找微信文件 ID
  1. 通过 browser.evaluate 调用(保持浏览器会话):
   browser.act(action=act, kind=evaluate, fn="(async () => { const r = await fetch('/article/versionManage.do?id=' + article_id + '&userId=851&pageNumer=1&flowNode=f26_59&portal=portal&isyw=false&timestamps=' + Date.now(), { headers: { 'orgcode': org_code } }); return r.json().then(d => JSON.stringify(d)); })()")

注意: - article_id 和 org_code 需要从会话变量传入 - 请求头必须包含 orgcode,值为会话变量 org_code

  1. 解析返回的 JSON 数据:

- 提取 data.rows 数组(版本记录列表) - 循环遍历每个版本记录 - 对于每个版本,检查 fileId 数组 - 找到第一个 code=20 的文件(微信格式文件) - 提取 publishFileId → wechat_file_id - 存入会话变量 wechat_file_id - 如果遍历完所有版本记录未找到 code=20 的文件 → 提示:"❌ 未找到微信格式文件",结束流程

第五步:调用微信文件接口获取推文 URL
  1. 通过 browser.evaluate 调用(保持浏览器会话):
   browser.act(action=act, kind=evaluate, fn="(async () => { const r = await fetch('/article/wechat.do?fileId=' + wechat_file_id + '&timestamps=' + Date.now(), { headers: { 'orgcode': org_code } }); return r.json().then(d => JSON.stringify(d)); })()")

注意: - wechat_file_id 和 org_code 需要从会话变量传入 - 请求头必须包含 orgcode,值为会话变量 org_code

  1. 解析返回的 JSON 数据:

- 提取 data.fullUrl → wechat_file_url - 存入会话变量 wechat_file_url

第六步:执行将网页发布到微信公众号
  1. 关闭浏览器(API 调用完成)
  2. 使用浏览器打开微信格式页面并抓取完整 HTML:
   // 打开页面
   browser.open(url="${wechat_file_url}")
   // 等待页面加载后获取完整 HTML
   browser.act(action=act, kind=evaluate, fn="document.documentElement.outerHTML")
  1. 保存 HTML 到临时文件:
   # 将获取的 HTML 保存到 /tmp/wechat_article_{article_id}.html
  1. 调用微信 API 发布文章:

4.1 获取 access_token:

   curl -s "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${WECHAT_APP_ID}&secret=${WECHAT_APP_SECRET}"
   # 返回:{"access_token":"xxx","expires_in":7200}

4.2 上传封面图获取 media_id:

   curl -s "https://api.weixin.qq.com/cgi-bin/material/add_material?access_token=${ACCESS_TOKEN}&type=image" \
     -F "media=@/tmp/cover.jpg" \
     -F 'description={"title":"cover","introduction":"cover image"}'
   # 返回:{"media_id":"xxx","url":"xxx"}

4.3 创建草稿:

   curl -s "https://api.weixin.qq.com/cgi-bin/draft/add?access_token=${ACCESS_TOKEN}" \
     -H "Content-Type: application/json" \
     -d '{
       "articles": [{
         "title": "${article_title}",
         "author": "${authors}",
         "digest": "${digest}",
         "content": "${html_content}",
         "thumb_media_id": "${media_id}",
         "show_cover_pic": 1,
         "need_open_comment": 0,
         "only_fans_can_comment": 0
       }]
     }'
   # 返回:{"media_id":"xxx","item":[]}

4.4 发布文章:

   curl -s "https://api.weixin.qq.com/cgi-bin/freepublish/submit?access_token=${ACCESS_TOKEN}" \
     -H "Content-Type: application/json" \
     -d '{"media_id":"${draft_media_id}"}'
   # 返回:{"errcode":0,"errmsg":"ok","publish_id":xxx,"msg_data_id":xxx}

4.5 获取文章 URL:

   curl -s "https://api.weixin.qq.com/cgi-bin/freepublish/get?access_token=${ACCESS_TOKEN}" \
     -H "Content-Type: application/json" \
     -d '{"publish_id":${publish_id}}'
   # 返回:{"article_detail":{"item":[{"article_url":"http://mp.weixin.qq.com/s?..."}]}}
  1. 解析发布结果:

- 成功 → 返回文章 URL 和 publish_id - 失败 → 返回错误码和错误信息

向用户反馈
✅ 文章发布完成

文章标题:{article_title}
稿件 ID: {article_id}
微信文件 ID: {wechat_file_id}
发布状态:成功/失败
文章 URL: {article_url}
publish_id: {publish_id}

注意:

  • 稿件标题支持模糊匹配,取搜索结果第一条
  • 循环所有版本记录,找到第一个含 code=20 的微信格式文件即停止
  • code=20 表示微信格式文件
  • API 调用必须通过 browser.evaluate 执行
  • Step 3-5 的请求头必须包含 orgcode,值为 Step 2 获取的 org_code
  • 发布流程:获取 access_token → 上传封面图 → 创建草稿 → 发布 → 获取文章 URL
  • 文章直接发布到微信公众号(非草稿箱),用户可在公众号后台查看

3. 自动催修

触发词: 自动催修

功能说明: 获取退修中阶段的过期稿件列表并展示(不执行催修操作)

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 调用获取退修论文列表接口(使用 browser.evaluate())
  3. 解析返回的 JSON 数据
  4. 筛选出过期的稿件(超过退修期限)
  5. 向用户展示过期稿件列表

返回数据示例:

{
  "status": 0,
  "data": {
    "rows": [
      {
        "id": "12345",
        "title": "论文标题",
        "author": "作者姓名",
        "deadline": "2024-01-01",
        "overdue_days": 5
      }
    ]
  }
}

向用户反馈:

📋 退修中过期稿件清单

共找到 {count} 篇过期稿件:

1. {title}
   作者:{author}
   退修期限:{deadline}
   已过期:{overdue_days} 天

2. ...

注意:

  • 本功能仅展示过期稿件列表,不执行催修操作
  • 过期判断标准:当前日期 > 退修期限

4. 自动催审

触发词: 自动催审

功能说明: 获取送专家审阶段的过期稿件列表并展示(不执行催审操作)

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 调用获取送专家审论文列表接口(使用 browser.evaluate())
  3. 解析返回的 JSON 数据
  4. 筛选出过期的稿件(超过审稿期限)
  5. 将列表存储到会话变量 last_auto_cuishen_list
  6. 向用户展示过期稿件列表

向用户反馈:

📋 送审中过期稿件清单

共找到 {count} 篇过期稿件:

1. {title}
   作者:{author}
   送审日期:{send_date}
   已过期:{overdue_days} 天

2. ...

💡 提示:可使用"催审第 X 条"对指定稿件执行催审

注意:

  • 本功能仅展示过期稿件列表,不执行催审操作
  • 重要:执行完成后,将返回列表存储到会话变量 last_auto_cuishen_list,供"催审第 X 条"功能引用

4.1 催审第 X 条(联动功能)

触发词: 催审第 X 条(例如:催审第 1 条、催审第 2 条)

前置条件: 必须先执行 [自动催审] 功能

功能说明: 对指定稿件执行催审操作,向审稿专家发送提醒通知

操作步骤:

第一步:调用稿件专家审列表接口
  1. 检查会话变量 last_auto_cuishen_list 是否存在
  2. 根据用户指定的序号获取稿件信息
  3. 提取稿件 ID 和审稿专家信息
第二步:获取模板
  1. 调用催审模板接口
  2. 获取模板内容和参数
第三步:循环催审
  1. 调用催审接口发送提醒
  2. 记录催审结果

向用户反馈:

✅ 催审完成

稿件:{title}
审稿专家:{expert_name}
催审结果:成功/失败

注意:

  • 必须先执行 [自动催审] 才能使用此功能
  • 催审操作会向审稿专家发送邮件/短信提醒

5. 鸿云任务提醒

触发词: 鸿云任务提醒

功能说明: 获取待处理任务列表并提醒

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 调用任务列表接口
  3. 解析返回数据
  4. 筛选出待处理的任务
  5. 向用户展示任务清单

向用户反馈:

📋 待处理任务清单

共 {count} 个待处理任务:

1. {task_name}
   类型:{task_type}
   截止日期:{deadline}

2. ...

6. 自动填写送审单

触发词: 自动填写送审单

功能说明: 自动填写稿件送审单

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 提示用户输入稿件信息或选择稿件
  3. 调用送审单模板接口
  4. 填充送审单内容
  5. 提交送审单

向用户反馈:

✅ 送审单填写完成

稿件 ID: {article_id}
送审单号:{review_form_id}
提交状态:成功/失败

7. 自动注册 DOI

触发词: 自动注册 DOI

功能说明: 为论文自动注册 DOI 号

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 提示用户输入稿件信息或选择稿件
  3. 调用 DOI 注册接口
  4. 获取 DOI 号
  5. 更新稿件信息

向用户反馈:

✅ DOI 注册完成

稿件 ID: {article_id}
DOI: 10.xxxx/xxxxx
注册状态:成功/失败

8. 获取登录 Cookie

触发词: 获取登录 Cookie

功能说明: 从浏览器会话提取 Cookie 并保存到会话变量

操作步骤:

  1. 检查浏览器是否已打开并登录
  2. 使用 browser.evaluate() 执行 document.cookie
  3. 提取 Cookie 字符串
  4. 存储到会话变量 founder_cookie

向用户反馈:

✅ Cookie 已获取

状态:有效/失效
有效期:约 2 小时

9. 调用获取刊物信息接口

触发词: 调用获取刊物信息接口

功能说明: 获取当前刊物的详细信息

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 通过 browser.evaluate() 调用接口:
   browser.act(action=act, kind=evaluate, fn="(async () => { const r = await fetch('/je-api/journal-edit-reviewer/v1/review/journal?timestamps=' + Date.now()); return r.json().then(d => JSON.stringify(d)); })()")
  1. 解析返回的 JSON 数据
  2. 提取关键信息并存储到会话变量

返回数据:

{
  "status": 0,
  "data": {
    "magazineId": "124",
    "orgCode": "cnkj",
    "name": "刊物名称",
    "id": "uuid"
  }
}

会话变量更新:

  • z_journal_id = data.magazineId
  • org_code = data.orgCode
  • journal_id = data.id
  • journal_name = data.name

10. 调用获取发布站点接口

触发词: 调用获取发布站点接口

功能说明: 获取发布站点信息

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 通过 browser.evaluate() 调用接口
  3. 解析返回数据
  4. 存储站点 ID 到会话变量 site_id

11. 调用获取刊期列表接口

触发词: 调用获取刊期列表接口

功能说明: 获取刊期列表(年份 + 刊期)

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 通过 browser.evaluate() 调用接口
  3. 解析返回数据
  4. 存储刊期列表到会话变量 period_list

返回数据示例:

{
  "status": 0,
  "data": {
    "rows": [
      { "id": "848", "year": "2024", "issue": "1" },
      { "id": "849", "year": "2024", "issue": "2" }
    ]
  }
}

12. 调用获取刊期论文列表接口

触发词: 调用获取刊期论文列表接口

功能说明: 获取指定刊期的论文列表(按栏目分组)

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 通过 browser.evaluate() 调用接口
  3. 解析返回数据
  4. 存储论文列表到会话变量 article_list

返回数据示例:

{
  "status": 0,
  "data": {
    "sections": [
      {
        "sectionName": "栏目名称",
        "articles": [
          { "id": "123", "title": "论文标题", "author": "作者" }
        ]
      }
    ]
  }
}

13. 调用 DOI 注册接口

触发词: 调用 DOI 注册接口

功能说明: 调用 DOI 注册 API

操作步骤:

  1. 检查 Cookie,如为空则先登录
  2. 通过 browser.evaluate() 调用接口
  3. 解析返回数据
  4. 获取 DOI 号并更新稿件信息

会话变量说明

变量名用途示例值
founder_cookie登录 CookieJSESSIONID=xxx; ...
journal_id刊物 IDfa2bab216a124e11bb264b4ed8d6d2be
journal_name刊物名称D 组资源发布
site_id站点 IDsite123
z_journal_id刊物 ID(微信发布用)124
org_code机构代码(API 请求头用)cnkj
article_id稿件 ID9727
wechat_file_id微信格式文件 ID292859
wechat_file_url微信推文网页地址http://html.journal.founderss.cn/...
period_list刊期列表[{id, year, issue}, ...]
period_id选定的刊期 ID848
article_list论文列表(按栏目分组){sections: [...]}
last_auto_cuishen_list催审列表[{id, title, ...}, ...]
templateParamObj催审模板参数对象{...}

工具使用说明

使用 browser 工具的场景

操作工具说明
打开登录页面browser.open()打开平台登录页
页面导航browser.navigate()跳转到指定页面
页面截图browser.snapshot()获取页面快照
点击元素browser.act(click)点击按钮/链接
输入文本browser.act(type)填写表单
执行 JSbrowser.act(evaluate)在页面上下文执行 JavaScript
获取 Cookiebrowser.act(evaluate)执行 document.cookie
API 调用browser.act(evaluate)执行 fetch() 调用 API

使用 exec + curl 的场景

操作工具说明
微信 API 调用exec + curl发布文章到微信公众号
文件操作exec保存临时文件

错误处理

重试与退出机制(重要)

API 调用失败处理:

  • 第 1 次失败 → 等待 1 秒后重试
  • 第 2 次失败 → 等待 2 秒后重试
  • 第 3 次失败 → 提示用户"接口调用失败",结束当前流程

Cookie 失效处理:

  • 检测到 Cookie 失效 → 重新执行 [获取登录 Cookie]
  • 如浏览器未登录 → 提示用户重新登录

其他错误处理

错误类型处理方式
网络错误重试 3 次,失败后提示用户检查网络
接口返回错误显示错误信息,提示用户联系管理员
会话变量缺失提示用户先执行前置功能
参数错误提示用户检查输入参数

实现示例

示例 1: 登录并切换刊物

用户:登录方正鸿云
助手:打开浏览器,等待用户登录 → 获取 Cookie → ✅ 登录完成

用户:切换刊物
助手:获取刊物列表 → 等待用户输入 → 切换刊物 → ✅ 切换完成

示例 2: 发布文章到微信

用户:将文章 野巴旦杏 AlsCBF 基因的克隆及生物信息学分析 2 发布到微信公众号
助手:
  Step 1: 检查 Cookie → 有效
  Step 2: 获取刊物信息 → z_journal_id=124, org_code=cnkj
  Step 3: 搜索稿件 → article_id=9727
  Step 4: 查找微信文件 → wechat_file_id=292859
  Step 5: 获取推文 URL → wechat_file_url=...
  Step 6: 发布到微信 → ✅ 发布成功

注意事项

  1. 所有 API 调用必须使用 browser.evaluate(),在浏览器上下文中执行 fetch()
  2. 必须先检查 Cookie,如为空或失效则重新获取
  3. 微信发布功能需要额外配置:

- 微信公众号 APP_ID - 微信公众号 APP_SECRET - 封面图片路径

  1. 会话变量仅在当前会话有效,会话结束后自动清除
  2. 部分功能有前置依赖,如"催审第 X 条"需要先执行"自动催审"

版本历史

  • V0.1.5 (2026-03-18): 修复能力声明不匹配问题,统一使用 browser.evaluate(),移除硬编码凭证
  • V0.1.4 (2026-03-18): 新增微信发布功能,优化 API 调用流程
  • V0.1.0 (2026-03-14): 初始版本

平台分布

OpenClaw

88.86%
按下载量换算2,237

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills