SkillPkg Logo
如需下载,请在电脑端打开本页操作。
README.md

机构伦理通讯录 Skill

Cursor Agent Skill,用于通过自然语言查询药物临床试验机构办伦理委员会通讯录。

数据来源:公开整理的机构伦理通讯录(需登录相应平台抓取更新)。当前快照约 7700+ 条联系人记录。

GitHub 上仅存加密文件 data/contacts.csv.enc,无法用 Excel 或文本编辑器直接打开。查询时由脚本在内存中解密,不落盘明文。

能做什么

  • 「中山大学附属第一医院伦理委员会电话是多少?」
  • 「协和医院 GCP 联系人是谁?」
  • 「连云港一院机构办邮箱」
  • 支持医院简称、部分匹配;查无结果时给出相近医院名建议

不能做什么:不提供整表下载、明文 CSV 导出或批量 dump 全部联系人。

安装

本仓库即为 Skill 根目录(clone 后文件夹名建议为 clinical-site-contacts)。

方式一:全局 Skill(推荐)

git clone https://github.com/amon339/clinical-site-contacts.git ~/.cursor/skills/clinical-site-contacts
pip install -r ~/.cursor/skills/clinical-site-contacts/requirements.txt

Cursor 会自动发现 ~/.cursor/skills/ 下的 Skill。

方式二:仅当前项目

git clone https://github.com/amon339/clinical-site-contacts.git /tmp/clinical-site-contacts
mkdir -p .cursor/skills
cp -r /tmp/clinical-site-contacts .cursor/skills/clinical-site-contacts
pip install -r .cursor/skills/clinical-site-contacts/requirements.txt

确保 data/contacts.csv.encscripts/query_contacts.py 在同一 Skill 目录内。

使用

在 Cursor 中直接提问,例如:

  • 中山一院伦理电话
  • 查一下华中科技大学协和医院的机构办联系人
  • 广东省人民医院伦理邮箱

Agent 会加载本 Skill 并调用查询脚本返回结果。

手动查询(终端)

# 在 Skill 根目录(或把路径换成你的安装位置)
python scripts/query_contacts.py --hospital "中山大学附属第一医院" --dept 伦理

python scripts/query_contacts.py --hospital "中山" --dept 机构 --limit 20

python scripts/query_contacts.py --suggest "中山一"

python scripts/query_contacts.py --hospital "仁济"

加密与密钥

机制说明
算法Fernet 对称加密(cryptography 库)
仓库文件data/contacts.csv.enc
默认密钥内置在 scripts/contact_crypto.py(clone 即可查询)
环境变量CONTACTS_DECRYPT_KEY 可覆盖默认密钥
本地密钥文件scripts/.contact_key(可选,已被 .gitignore 忽略)

安全说明:内置密钥用于防止「直接打开 GitHub 文件即见明文」,无法抵御有脚本访问权限的逆向。请勿将 .enc 与自定义密钥一并公开到不可信环境。

更新通讯录数据

方式 A:爬虫(推荐)

  1. 安装依赖:pip install selenium cryptography
  2. 确保 Chrome 已登录相应平台(或使用 CHROME_PROFILE_DIR 指定 Profile)
  3. 运行爬虫:
python scripts/site_contacts_scraper.py

爬虫流程:抓取 → 临时写入 contacts.csv → 自动加密为 contacts.csv.enc删除明文

环境变量(可选):

变量说明
CHROME_PROFILE_DIRChrome 用户数据目录
CHROME_PROFILE_NAMEProfile 名称,默认 Default
USE_CHROME_PROFILE设为 0 不使用已有 Profile
SKIP_ENTER_TO_QUIT设为 1 爬取完自动关闭浏览器
CONTACTS_DECRYPT_KEY自定义加密密钥(须与查询端一致)

方式 B:手动加密

维护者若有本地明文 CSV:

python scripts/encrypt_contacts.py \
  --input path/to/contacts.csv \
  --output data/contacts.csv.enc

默认会删除输入明文;本地调试可加 --keep-plain

更新后仅提交 data/contacts.csv.enc

目录结构

clinical-site-contacts/
├── SKILL.md                  # Agent 指令(触发词、查询流程、回复格式)
├── README.md                 # 本文件
├── LICENSE                   # MIT
├── requirements.txt          # cryptography
├── data/
│   └── contacts.csv.enc      # 加密通讯录(Git 跟踪)
└── scripts/
    ├── contact_crypto.py     # 加解密模块
    ├── encrypt_contacts.py   # 维护者加密工具
    ├── query_contacts.py     # 查询脚本
    └── .contact_key          # 可选本地密钥(不提交)

数据字段

字段说明
医院医疗机构全称
联系人姓名
部门机构伦理
职位如机构办主任、伦理秘书
电话可能有多个,以逗号/顿号分隔
邮箱可能有多个
职责分工具体负责事项
对外接待时间办公/接待时段
办公室地址办公地点

免责声明

  • 数据为公开整理的机构伦理通讯录快照,不保证实时准确;重要事项请致电核实。
  • 更新数据时请遵守相应平台的使用条款;本 Skill 仅供临床试验从业同仁便利查询。
  • 通讯录含个人联系方式,请勿用于 spam 或无关营销。

License

MIT — 见 LICENSE