opphub
偶合 OppHub - 把偶合账号接入 OpenClaw,录入公司、查商机、收推送。 Skill: opphub Owner: mtty-ai Summary: 偶合 OppHub - 把偶合账号接入 OpenClaw,录入公司、查商机、收推送。 Tags: latest:5.0.0 Version history: v5.0.0 | 2026-07-27T08:56:48.339Z | user OPC → User 全量重命名: /api/opc/ → /api/user/, token 字段 opc_id → user_id. check-update.js 加 stripPrefix 函数 (v4.0.1 漏定义, 修 plugin cron 'skill 没查到' 错误) Archive index: Archive v5.0.0: 49 files, 223936 bytes Files: _meta.json (125b), bin/opphub (7499b), bin/opphub-check-
Rank
62
Safety
84
Downloads
1.7k
Updated
Oct 10, 2026
Version
5.0.0
Source
CLAWHUB
About
What it does, and when to use it.
Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.
Avoid when
- Contract metadata is missing or unavailable for deterministic execution.
Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing
Public facts
Every fact links back to the source it came from.
- Vendor
- Clawhubvendor · observed Oct 10, 2026
- Protocol compatibility
- OpenClawcompatibility · observed Oct 10, 2026
- Adoption signal
- 1.7K downloadsadoption · observed Oct 10, 2026
- Latest release
- 5.0.0release · observed Jul 27, 2026
- Handshake status
- UNKNOWNsecurity
Install and run
Setup complexity: low.
clawhub skill install s17ampw22fp45rj3rm81m8ssd989v9cx:opphub- Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.
- Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.
Contract: missing
curl -s "https://www.xpersona.co/api/v1/agents/clawhub-mtty-ai-opphub/snapshot"
Documentation
CLAWHUB
136,490 characters of source documentation, loaded on request.
Extracted files
5 files captured from the source.
SKILL.md
---
name: opphub
version: 5.0.0
description: 偶合 OppHub - 把偶合账号接入 OpenClaw,录入公司、查商机、收推送。
author: mtty-ai
homepage: https://github.com/mtty-ai/opphub-skill
entry: bin/opphub
defaultLocale: zh-CN
requires:
bins:
- node>=18
- openclaw
- jq
- curl
- security
- openssl
- xdg-open
env: []
platform:
darwin: full
linux: full
windows: none
metadata:
api: https://api.opphub.ruiplus.cn
deviceFlow:
authorize: https://api.opphub.ruiplus.cn/api/oauth/device/code
token: https://api.opphub.ruiplus.cn/api/oauth/device/token
userinfo: https://api.opphub.ruiplus.cn/api/oauth/userinfo
refreshToken:
endpoint: https://api.opphub.ruiplus.cn/api/oauth/token
client_id: opphub-plugin
scope: profile ws:read ws:write
---
# 偶合 OppHub
把偶合账号接入 OpenClaw,录入公司、查商机、收推送。
支持 3 种触发方式:
- IM 群聊 / 私聊 @bot(飞书 / 微信 / 钉钉 / Telegram 等)
- OpenClaw 后台直接调用
- cron 定时任务
具体 IM 取决于 OpenClaw runtime 已装的 channel plugin。
---
## 一句话介绍
录入公司、查商机、收推送,3 件事 bot 都替你跑。
---
## 安装
```bash
openclaw skills install @mtty-ai/opphub
openclaw plugins install clawhub:@mtty-ai/opphub
```
两条都要装:
- `opphub` skill:在 IM 里跟 bot 对话
- `opphub` plugin:装好后 bot 收得到推送,登录态写 macOS Keychain
装完自动重启 gateway。
依赖 runtime 自动校验,不缺。
---
## 五步上手
### 1. 注册偶合账号
去 <https://api.opphub.ruiplus.cn/register>,邮箱/手机号 + 6 位验证码。
### 2. 验证 plugin 装好
```bash
opphub plugin-check --json
```
返 `installed: true` 就 OK。没装好跑 `openclaw plugins install clawhub:@mtty-ai/opphub` 重装。
### 3. @bot 说"偶合登录"
bot 走 OAuth device flow:
- bot 私聊发你激活链接(不会在群里贴验证码)
- 你打开链接点同意
- 登录态自动写 Keychain,下次不用再登
### 4. @bot 说"偶合配置"
bot 列出你本机已装的 IM 通道(飞书/微信/钉钉/Telegram 等),你选一个作**默认推送通道**。后续商机推送、cron 提醒都走这个通道。
跳过这步也行——bot 会用 server 端上次选的通道;不放心就先跑一次确认。
### 5. @bot 说"偶合录入 [公司名]"
bot 自动 6 步跑完,只问你一次"是否入库":
- 联网查工商 / 业务 / 招聘 / 项目
- 推断行业(MCN / SaaS / 律所 / 制造)
- 拆能力卡片 + 上下游
- 给你 1 张清单确认
- 批量入库(幂等,重复跑不冲突)
- 跑上下游匹配,列结果
> 第 4 步拆出能力后, bot **不直接入库**, 先给一张确认清单 (含 4 种 entryType: 我能提供/我想找/我的依赖/同行关系).
> 用户回复:
> - 「确认」 → bot 调 `knowledge-submit --confirm` 入库
> - 「删 <type.dimension>」 → bot 去掉某条重发清单
> - 「重抽」 → 回到阶段 1 重新联网查
> - 「改 <字段>」 → 改解析字段后重发清单
---
## 常用命令
| 触发方式 | bot 做的 |
|---|---|
| 偶合登录 | OAuth 登录 |
| 偶合状态 | 看登录态 + 推送通道 + 知识库 |
| 偶合配置 | 选默认推送通道 |
| 偶合录入 [公司] | 录入公司能力画像 |
| 偶合录入关联公司 + 合同 xls | 解析合同拆上下游 |
**触发方式**:群里 @bot、私聊 bot、OpenClaw 后台调用、cron 定时都可以。
---
## 常见问题
**没收到推送?**
确认 plugin 装好:`opphub plugin-check --json`。没装就跑 `openclaw plugins install clawhub:@mtty-ai/opphub`。
**token 过期了?**
@bot 说"偶合登录"重新走一遍。
**浏览器没弹?**
复制 bot 私聊里的链接手动打开。
**录入撞同行业了?**
bot 会弹卡片让你选行业。
**录入冲突了?**
bot 会列新旧版本让你选保留哪个。
---
## 卸载
```bash
openclaw plugins uninstall clawhub:@mtty-ai/opphub
openclaw skills uninstall @mtty-ai/opphub
```
Keychain 里的登录态要手动清:macOS Keychain 搜 `opphub:default` 删除。
---
## 反馈
issue: https://github.com/mtty-ai/opphub-skill/issuesREADME.md
# 偶合 OppHub · OpenClaw Skill OpenClaw bot skill · device flow 登录 · 与 opphub-plugin 共 Keychain 详见 SKILL.md (本仓 bot skill 模式说明, 由 OpenClaw 加载)
_meta.json
{
"ownerId": "kn7ethqpnt6p4vba8zp33jx2hh89vmkc",
"slug": "opphub",
"version": "5.0.0",
"publishedAt": 1785142608339
}CHANGELOG.md
# Changelog
公开版仅保留用户可感知的功能变更。内部迭代历史不入仓。
## v5.0.0 (2026-07-24) ⚠️ BREAKING
### 加 (New)
- **架构重写**:skill 不再写死任何业务词 / 行业模板 / 平台字典
- 删除 `INDUSTRY_TEMPLATES` (mcn/saas/law/mfg 4 个行业的所有 abilities/upstream/downstream/peer 列表)
- 删除 `INDUSTRY_SIGNALS` (token 频率猜行业)
- 删除 `PLATFORM_TERMS` / `GENERIC_TERMS` / `TAIL_GENERIC` / `MID_GENERIC` (所有 stop word 词表)
- skill 现在认任何中文公司 rawText:律所 / 餐饮 / 制造 / 数字营销 / … 都用同一套代码
- **LLM 任务包**:每张卡 + JSON 输出都含
- `evidenceCandidates` (string[30]): n-gram 频次排名 + 长度加分
- `evidenceAnswerPrompt` (string): 单卡 LLM 选择规则 + JSON 输出格式
- `llmInstruction` (string): 顶层 LLM 一次性任务流 (read → pick → rewrite → submit)
- 占位符 `(证据词: <待 LLM 填写>)` 在 rawText 里等 LLM 填
- **heading 驱动拆卡**:
- rawText `## 业务描述` 节下 `### 维度名` 直接生成 ability 卡片
- `### 上游依赖 / 下游客户 / 同业联盟` 子标题自动判定 type (无需模板)
- 其它行业 (律所/餐饮等) 写啥拆啥: `### 公司诉讼` / `### 火锅堂食` 都能识别
### 改 (Changed)
- 数据流从 "skill 输出 → 用户确认 → LLM 再审 → submit" 多步,简化为 "skill 输出 LLM 任务包 → LLM 一次性完成 → submit"
- 无行业推断 (token 频率猜), 行业归属由 LLM 在对话里判断并传入
### 弃用 (Deprecated)
- 任何用户写死的维度词表 (e.g. 老 v4.x 模板里硬编码的"达人营销"/"短视频内容制作")
### 测 (Test)
- 11 个单元测试: 通用性守卫 (源码不许有业务词) / heading 拆 / n-gram 候选 / 占位符 / LLM 提示
- 用 `npm test` 跑
## v4.0.10 (2026-07-24)
### 加 (New)
- **knowledge-card evidence 提取加固** (extractEvidenceFromDesc):
- 长度上限 6→8, 让 "短视频内容制作"/"店铺代运营" 等 7-8 字短语能拆出
- 新增 PLATFORM_TERMS 优先扫 (抖音/快手/小红书/B站/视频号 等 14 平台)
- 解决 "精选小红书博主合作" 短语被 6 字限制吞掉的 case, 拆出关键词 "小红书"
- 尾部泛词剥离 (等等/行业/领域/场景/赛道/玩法/业务/服务/平台/资源)
- 列表前缀剥离 (包括/比如/例如/以及)
- 人称前缀剥除 (我们/你/他/她/它)
### 测 (Test)
- 单元测试 9 → 12 (新增 3 个边缘 case 覆盖人称/列表前缀/跨公司对比)
- `npm test` 全部 12 测试通过 (~600ms)
## v4.0.9 (2026-07-24)
### 修 (Fixed)
- **knowledge-card 证据词提取**: 之前用模板写死的 `purpose` 字符串当证据词源, 不同公司卡片雷达词趋同 (e.g. 都显示 "KOL 投放"/"媒介代理")。现在从 rawText 自然语言描述里挖真实关键词 (拆标点 + 滤停用前缀 + 限 2-6 字名词性片段), 两家公司 evidence 完全独立。
- **证据词格式统一**: 修复 `buildCard()` 漏传 `evidenceList` 参数 bug。所有卡片现在统一输出 `(证据词: kw1, kw2, ...)` 格式, 去掉旧 `(证据: rawText 包含 "${dim}")` 兜底文案 (前端 regex 解析不到)。
- **雷达不再有杂质**: 前端雷达原显示 "蓝色光标"/"宝马等"等公司名/团队背景, 现在都是真实能力词 (达人筛选/店铺搭建/活动策划等)。
- **extractParsedFields 城市检测**: 不再被同业联盟里 `无忧传媒(北京...)` 这类字符串污染。限定到「地址字段 || 工商信息节」内查找城市。
- **knowledge-discover 骨架校验**: 加 `SKELETON_PATTERNS` 检测, rawText 含 `(名称 / 法人 / 注册资本...)` 等填空内容时直接拒绝 (skeleton_unfilled), 强制 LLM 用 web_search 搜真实数据。
- **knowledge-discover 搜索指令内嵌**: `--name` 模式输出 `_explicitInstructions` 字段, 列出每节搜索命令 + 禁止传空骨架警告。
### 加 (New)
- 9 个单元测试覆盖 `extractEvidenceFromDesc` / `extractDimDesc` / `extractParsedFields` 三大核心逻辑。用 `npm test` 跑 (`tests/unit-knowledge-card.js`)。
### 测 (Test)
- `node --test tests/unit-knowledge-card.js` 全部 9 测试通过 (~450ms)
- `npm test` 端到端验证脚本 (`tests/e2e-verify.js`) 不动
## v4.0.0 (2026-07-22)
### 加 (New)
- OAuth Device Flow 登录 + token 自动写 macOS Keychain / Linux AES-256-GCM 加密文件
- 6 步闭环引导: 注册 → 登录 → 装 plugin → 配默认通道 → 知识库 → 商机匹配
- 开放式知识库录入: discover (生成 rawText 骨架) + card (按行业拆能力卡片) + submit (idempotent 入库 + 冲突检测)
- 关联公司录入: relate (xls/html 合同解析, 拆 top 客户 / 供应商 / 类别聚合)
- bot turn 调用 LLM 工具 (web_seardocs/runtime-channel-renderer-v31-design.md
# opphub-skill v3.1 · OpenClaw runtime · channel-renderer 渲染层架构
> "原始内容归原始内容, 你得 写一个 飞书 card 的渲染层 当然未来也有其他通道需要特定的渲染"
> **含义**: runtime 渲染层是 OpenClaw 平台活, **不在 opphub skill v3.1 范围**
> **本文状态**: 独立存档, 等 OpenClaw runtime 团队接
---
## 0. 文档归属
| 项 | 归属 |
|---|---|
| **本档**(运行时渲染层) | OpenClaw runtime 团队 |
| opphub skill v3.1 doc | skill 层 (我开干的范围) |
| opphub-server schema v3.1 | server 层 (单独存档) |
---
> "原始内容归原始内容, 你得 写一个 飞书 card 的渲染层 当然未来也有其他通道需要特定的渲染"
> "只到 skill 开放完, 没开发完, 不会会话"
**含义**:
- skill 层只发 "IntentMessage 原始内容"(channel-agnostic)
- skill 层不拼飞书 card / Block Kit / InlineKeyboard
- runtime 渲染层是 OpenClaw 平台活, **不在 opphub skill v3.1 范围**
- server schema (`OpcKnowledgeEntry` 表) 也是单独一条线
---
| # | 任务 | 改动层 | 工时 | 依赖 |
|---|---|---|---|---|
| N10 | Skill 改造: 5 个 bin 都改用 `bot.skillApi.askInteractive/askFreeText/send`, 删硬编码飞书 JSON | Skill | 3h | 无 |
| N11 | SKILL.md frontmatter: `requires.tools` 加 `minimax__web_search / web_fetch / minimax__understand_image / pdf / memory_search / wiki_search` | Skill | 0.5h | 无 |
| N12 | OpenClaw runtime 新 API: `skillApi.send/askInteractive/askFreeText/getChannel` + 类型定义 + 8 个 Renderer (FeishuCard / FeishuGroup / WeixinText / SlackBlock / DiscordEmbed / TelegramInline / CliInquirer / WebForm) + FallbackText | Runtime | 8h | 无 (这是 OpenClaw runtime 改造, 不是 skill 改造) |
| N13 | E2E 多 channel 测试: 飞书 DM / 飞书群 / 微信 iLink / CLI 各跑一遍偶合配置 + 偶合画像 6 步 | 全链路 | 2h | N10 N12 |
| **N10-N13 合计** | | | **13.5h ≈ 1.7 天** | |
**总工时** v3.1: 19.5h (skill 6 步) + 13.5h (renderer) + 1h (server schema N4-N5) + 1h (server API N5) = **约 35h ≈ 4.5 天**
---
### 关键分工
```
┌─────────────────────────────────────────────────────┐
│ Skill / Plugin 层 │
│ 发 "原始内容" (IntentMessage, channel-agnostic) │
│ - prompt / options / actions / inputHint / links │
└──────────────────┬──────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────┐
│ OpenClaw runtime · Content Renderer 层 ★ 这里 ★ │
│ 每个 channel 一个 renderer: │
│ · FeishuCardRenderer (interactive card + actions) │
│ · FeishuGroupRenderer (同上,群 channel) │
│ · WeixinRenderer (文本 + emoji 协议) │
│ · SlackRenderer (Block Kit) │
│ · DiscordRenderer (Embed + Components) │
│ · TelegramRenderer (InlineKeyboard) │
│ · CliRenderer (inquirer.select / confirm) │
│ · WebRenderer (HTML form, 走 opphub-web) │
│ · FallbackTextRenderer (纯文本兜底) │
└──────────────────┬──────────────────────────────────┘
↓
Channel (IM / CLI / Web)
```
### Skill / Plugin API (IntentMessage 原始内容)
```ts
interface IntentMessage {
prompt: string; // 主文案 ("选默认推送通道")
options?: Array<{ // 选项 (pickOne 场景)
id: string; // 选中时回传 (feishu:pm)
label: string; // 显示 ("feishu:pm ⭐")
AionUi
Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!
activepieces
AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents
cherry-studio
AI productivity studio with smart chat, autonomous agents, and 300+ assistants.
CopilotKit
The Frontend for Agents & Generative UI. React + Angular
Machine-readable data
The same record, as JSON, for agents and crawlers.
{
"facts": [
{
"factKey": "vendor",
"category": "vendor",
"label": "Vendor",
"value": "Clawhub",
"href": "https://clawhub.ai/mtty-ai/skills/opphub",
"sourceUrl": "https://clawhub.ai/mtty-ai/skills/opphub",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T04:28:01.898Z",
"isPublic": true
},
{
"factKey": "protocols",
"category": "compatibility",
"label": "Protocol compatibility",
"value": "OpenClaw",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-mtty-ai-opphub/contract",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mtty-ai-opphub/contract",
"sourceType": "contract",
"confidence": "medium",
"observedAt": "2026-10-10T04:28:01.898Z",
"isPublic": true
},
{
"factKey": "traction",
"category": "adoption",
"label": "Adoption signal",
"value": "1.7K downloads",
"href": "https://clawhub.ai/mtty-ai/opphub",
"sourceUrl": "https://clawhub.ai/mtty-ai/opphub",
"sourceType": "profile",
"confidence": "medium",
"observedAt": "2026-10-10T04:28:01.898Z",
"isPublic": true
},
{
"factKey": "latest_release",
"category": "release",
"label": "Latest release",
"value": "5.0.0",
"href": "https://clawhub.ai/mtty-ai/opphub",
"sourceUrl": "https://clawhub.ai/mtty-ai/opphub",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-27T08:56:48.339Z",
"isPublic": true
},
{
"factKey": "handshake_status",
"category": "security",
"label": "Handshake status",
"value": "UNKNOWN",
"href": "https://www.xpersona.co/api/v1/agents/clawhub-mtty-ai-opphub/trust",
"sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-mtty-ai-opphub/trust",
"sourceType": "trust",
"confidence": "medium",
"observedAt": null,
"isPublic": true
}
],
"events": [
{
"eventType": "release",
"title": "Release 5.0.0",
"description": "OPC → User 全量重命名: /api/opc/ → /api/user/, token 字段 opc_id → user_id. check-update.js 加 stripPrefix 函数 (v4.0.1 漏定义, 修 plugin cron 'skill 没查到' 错误)",
"href": "https://clawhub.ai/mtty-ai/opphub",
"sourceUrl": "https://clawhub.ai/mtty-ai/opphub",
"sourceType": "release",
"confidence": "medium",
"observedAt": "2026-07-27T08:56:48.339Z",
"isPublic": true
}
]
}Record generated Oct 10, 2026.
