twenty-crm

🗂️ 自托管 CRM 自动化命令行工具

基于 Twenty CRM 官方 API 标准,提供 Shell 命令行工具,让用户通过 REST/GraphQL 高效管理自托管 CRM 客户数据。

收藏
10.2k
安装
2.4k
版本
v1.0.0
CLS 安全性认证2026-05-17
点击查看完整报告 >

使用说明

Twenty CRM Skill 是一套专为自托管 Twenty CRM 实例设计的命令行工具集,通过封装 REST 和 GraphQL API 调用,为用户提供高效的数据管理能力。该技能基于 Shell 脚本构建,支持公司、客户等常见 CRM 对象的增删改查操作,同时保留底层 API 调用的灵活性,适合需要自动化 CRM 工作流的技术用户。

核心用法

用户需先创建 config/twenty.env 配置文件,设定 TWENTY_BASE_URLTWENTY_API_KEY 两项参数。技能提供两类接口:底层 helper 脚本(twenty-rest-get.shtwenty-graphql.sh 等)支持任意 API 端点访问;高层封装脚本(twenty-create-company.shtwenty-find-companies.sh)则针对常用操作提供快捷命令。所有脚本自动加载环境变量,使用标准 curl 进行 HTTP 通信,并支持 JSON 数据的构造与解析。

显著优点

该技能的最大优势在于轻量化和标准化。相比重量级 CRM 客户端,它仅依赖系统自带的 bash、curl 和 python3,无需安装额外的运行时或依赖包。安全设计方面,API 密钥通过外部配置文件管理,避免了硬编码泄露风险;脚本启用 set -euo pipefail 确保执行健壮性。功能上同时支持 REST 和 GraphQL,既满足简单查询需求,也能处理复杂的数据关联操作。

潜在缺点与局限性

作为 T3 来源的个人开发者作品,虽然代码经过安全审计,但长期维护和支持的稳定性不及官方工具。技术层面,配置文件路径被硬编码为特定用户目录,跨平台使用可能需要手动调整。twenty-find-companies.sh 的查询参数缺乏 URL 编码处理,使用特殊字符可能导致查询失败;twenty-create-company.sh 生成的临时文件未主动清理。此外,该技能假设用户熟悉命令行操作和 Twenty CRM 的数据模型,对非技术用户不够友好。

适合的目标群体

主要面向已部署 Twenty CRM 的中小企业技术团队、DevOps 工程师和系统管理员。特别适合需要将 CRM 数据操作集成到 CI/CD 流程、定时任务或其他自动化脚本中的场景。对于习惯使用命令行进行数据批量处理、迁移或备份的开发人员,该工具能显著提升工作效率。

使用风险

常规风险包括 API 密钥的管理不当可能导致未授权访问,建议配置文件设置 600 权限并定期轮换密钥。网络传输方面,若未使用 HTTPS,CRM 数据可能面临中间人攻击。操作风险上,DELETE 操作不可逆,且缺乏二次确认机制;GraphQL 查询的复杂性可能影响性能。此外,由于依赖外部 Python3 进行 JSON 处理,在极简环境中可能存在兼容性问题。

安全解读

核心用法

Twenty CRM Skill 提供了一套完整的命令行工具集,用于与自托管的 Twenty 客户关系管理系统进行交互。支持双协议接入:REST API(/rest/... 端点)用于常规 CRUD 操作,GraphQL(/graphql 端点)用于复杂查询。用户需在 config/twenty.env 中配置基础 URL 和 Bearer Token 后,即可调用封装好的脚本:

  • 数据查询twenty-rest-get.sh 支持带过滤和分页的灵活查询
  • 数据写入twenty-rest-post.sh/patch.sh/delete.sh 覆盖完整的生命周期管理
  • GraphQL 查询twenty-graphql.sh 直接执行自定义查询语句
  • 快捷操作twenty-create-company.shtwenty-find-companies.sh 提供常用场景的快速封装

显著优点

1. 零依赖轻量设计:仅依赖系统内置工具(curl、python3),无需额外安装 Node/Python 包,部署极快
2. 安全编程规范:全脚本采用 set -euo pipefail 严格模式,有效防止未定义变量和管道错误

3. 凭证管理安全:API 密钥和实例 URL 完全外置,无硬编码风险,符合十二因素应用原则

4. 协议灵活双模:同时支持 REST 的简洁性和 GraphQL 的查询能力,适应不同技术偏好

5. 开源透明可信:MIT 许可证,代码可完整审计,维护者为 GitHub 组织账号

潜在缺点与局限性

1. 输入验证待完善:URL 查询参数未自动编码(RISK-002),搜索含特殊字符时需手动处理;临时文件使用固定路径而非 mktemp(RISK-001)
2. 错误处理较基础:HTTP 非 200 响应时缺乏结构化错误解析,需用户自行判断

3. 功能覆盖有限:当前仅封装了公司(Company)对象的快捷操作,联系人、商机等其他实体需自行构造 REST/GraphQL

4. 认证刷新依赖用户:Token 过期时需手动更新配置文件,无自动刷新机制

适合人群

  • 技术型销售运营团队:熟悉命令行、需要批量导入/查询客户数据的非开发人员
  • DevOps/SRE 工程师:需要将 CRM 数据同步纳入 CI/CD 或监控体系的自动化场景
  • Twenty 自托管用户:已部署私有实例、希望避免浏览器操作的技术团队
  • 低代码集成场景:作为数据桥梁,连接 Twenty 与其他内部系统的临时方案

常规风险

| 风险类型 | 说明 | 缓解措施 |
|---------|------|---------|
| 凭证泄露 | 环境文件权限配置不当可能导致 API Key 暴露 | 设置 `chmod 600 config/twenty.env`,避免提交至版本控制 |
| 误操作数据 | DELETE/PATCH 无二次确认,可能意外修改生产数据 | 建议先在测试实例验证,或配合 `--dry-run` 逻辑使用 |
| 网络传输安全 | 若使用 HTTP 而非 HTTPS,Bearer Token 可能被截获 | 强制配置 HTTPS 端点,定期检查证书有效性 |
| 输入注入 | 未编码的参数理论上存在结构破坏风险 | 避免在搜索词中使用 `%`、`&`、`=` 等特殊字符,或手动编码 |

总体评估

这是一款设计精良、安全可靠的轻量级 CRM 连接器,代码质量达到生产级标准(Grade S)。尽管存在两处低危最佳实践建议,核心功能稳定透明,特别适合已采用 Twenty 作为 CRM 的技术团队构建自动化工作流。

twenty-crm 内容

scripts文件夹
手动下载zip · 5.3 kB
twenty-config.shtext/x-shellscript
请选择文件