skillfree 0.1.63 → 0.1.65
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/SKILL.md +178 -100
- package/bin/skillfree.js +2 -1
- package/package.json +1 -1
- package/scripts/commands/pilot.js +48 -1
package/SKILL.md
CHANGED
|
@@ -10,161 +10,239 @@ metadata: {"openclaw": {"primaryEnv": "SKILLFREE_API_KEY", "emoji": "🦞", "hom
|
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
##
|
|
14
|
-
|
|
15
|
-
| 任务类型 | 严选工具 | 计费方式 |
|
|
16
|
-
|---------|---------|---------|
|
|
17
|
-
| ✍️ 写代码 / 重构 / 技术文档 | Claude Sonnet 4.6 | 按 token |
|
|
18
|
-
| 📄 文档分析 / 报告生成 | GPT-5.4 | 按 token |
|
|
19
|
-
| 🖼️ 图文多模态理解 | Gemini 3.1 Pro | 按 token |
|
|
20
|
-
| 🎨 图像生成 | nano banana 2 / pro | 按次 |
|
|
21
|
-
| 🎬 视频生成 | Veo 3.1 Fast / Veo 3.1 | 按秒 |
|
|
22
|
-
| 📑 扫描文档 OCR | 合合 图文混排 | 按量 |
|
|
23
|
-
| 🌐 实时网页搜索 | Tavily | 按次 |
|
|
24
|
-
| 📊 演示文稿 / PPT 生成 | **AI 演示文稿生成** ✨ | **按实际页数** |
|
|
13
|
+
## 🚀 核心命令总览
|
|
25
14
|
|
|
26
|
-
|
|
15
|
+
所有功能通过 `skillfree pilot` 子命令调用,`--type` 参数指定任务类型:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
skillfree pilot --type <类型> [参数...]
|
|
19
|
+
```
|
|
27
20
|
|
|
28
|
-
|
|
21
|
+
支持的类型:`chat` | `image` | `video` | `ocr` | `presentation` | `pharma`
|
|
29
22
|
|
|
30
|
-
|
|
23
|
+
---
|
|
31
24
|
|
|
32
|
-
|
|
33
|
-
|--------|------|------|------|
|
|
34
|
-
| `claude-sonnet-4-6` | Claude Sonnet 4.6 ⭐ | ¥30/1M | ¥150/1M |
|
|
35
|
-
| `claude-sonnet-4-6-cc` | Claude Sonnet 4.6 CC | ¥30/1M | ¥150/1M |
|
|
36
|
-
| `claude-opus-4-6` | Claude Opus 4.6 | ¥150/1M | ¥750/1M |
|
|
25
|
+
## 💬 对话(chat)
|
|
37
26
|
|
|
38
|
-
|
|
27
|
+
```bash
|
|
28
|
+
# 快捷方式(默认 claude-sonnet-4-6)
|
|
29
|
+
skillfree chat "帮我写一个 Python 爬虫"
|
|
30
|
+
|
|
31
|
+
# 指定模型
|
|
32
|
+
skillfree pilot --type chat --prompt "分析这段代码的性能问题" --model gpt-5.4
|
|
33
|
+
|
|
34
|
+
# 支持的模型ID
|
|
35
|
+
# claude-sonnet-4-6 写代码/技术文档 ⭐ 推荐
|
|
36
|
+
# claude-opus-4-6 复杂推理/长文档
|
|
37
|
+
# gpt-5.4 文档分析/报告生成 ⭐ 推荐
|
|
38
|
+
# gpt-5.4-mini 简单任务/低成本
|
|
39
|
+
# gemini-3.1-pro-preview 图文多模态 ⭐ 推荐
|
|
40
|
+
# gemini-3.1-flash-lite-preview 超长文档/低成本
|
|
41
|
+
```
|
|
39
42
|
|
|
40
43
|
---
|
|
41
44
|
|
|
42
|
-
|
|
45
|
+
## 🎨 图像生成(image)
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# 生成图片(默认模型 gemini-3.1-flash-image-preview,即 nano banana 2)
|
|
49
|
+
skillfree pilot --type image --prompt "一只赛博朋克风格的龙虾"
|
|
50
|
+
|
|
51
|
+
# 指定尺寸(默认 1024x1024)
|
|
52
|
+
skillfree pilot --type image --prompt "极简主义海报" --size 1024x1792
|
|
53
|
+
|
|
54
|
+
# 保存到本地文件
|
|
55
|
+
skillfree pilot --type image --prompt "科技感 logo" --output ./logo.png
|
|
43
56
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
| `gpt-5.4-mini` | GPT-5.4 Mini | ¥10/1M | ¥60/1M |
|
|
57
|
+
# 使用高质量版本(nano banana pro,画质更好,价格更高)
|
|
58
|
+
skillfree pilot --type image --prompt "写实风格产品渲染图" --model gemini-3-pro-image-preview
|
|
59
|
+
```
|
|
48
60
|
|
|
49
|
-
|
|
61
|
+
**可用模型:**
|
|
62
|
+
- `gemini-3.1-flash-image-preview` — nano banana 2,¥0.40/次 ⭐
|
|
63
|
+
- `gemini-3-pro-image-preview` — nano banana pro,¥1.40/次
|
|
50
64
|
|
|
51
65
|
---
|
|
52
66
|
|
|
53
|
-
|
|
67
|
+
## 🎬 视频生成(video)
|
|
54
68
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
| `gemini-3.1-flash-lite-preview` | Gemini 3.1 Flash Lite | ¥1.1/1M | ¥4.3/1M |
|
|
69
|
+
```bash
|
|
70
|
+
# 生成视频(异步任务,提交后等待完成)
|
|
71
|
+
skillfree pilot --type video --prompt "无人机俯拍城市夜景,流光溢彩"
|
|
59
72
|
|
|
60
|
-
|
|
73
|
+
# 指定时长(4 | 6 | 8 秒,默认 8 秒)
|
|
74
|
+
skillfree pilot --type video --prompt "海浪拍打礁石" --seconds 6
|
|
61
75
|
|
|
62
|
-
|
|
76
|
+
# 指定分辨率(默认 1920x1080)
|
|
77
|
+
skillfree pilot --type video --prompt "宇宙星云" --size 3840x2160
|
|
78
|
+
|
|
79
|
+
# 保存视频到本地
|
|
80
|
+
skillfree pilot --type video --prompt "春天樱花飘落" --output ./sakura.mp4
|
|
81
|
+
```
|
|
63
82
|
|
|
64
|
-
|
|
83
|
+
**注意:** 视频生成为异步任务,命令会自动等待并轮询结果,完成后自动下载。
|
|
65
84
|
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
| `gemini-3-pro-image-preview` | **nano banana pro** | ¥1.40/次 |
|
|
85
|
+
**可用模型:**
|
|
86
|
+
- `veo-3.1-fast-generate-preview` — Veo 3.1 Fast,¥1.5/秒 ⭐
|
|
87
|
+
- `veo-3.1-generate-preview` — Veo 3.1 高质量,¥3.5/秒
|
|
70
88
|
|
|
71
89
|
---
|
|
72
90
|
|
|
73
|
-
|
|
91
|
+
## 📑 OCR 文档识别(ocr)
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
# 识别本地 PDF 文件(输出到终端)
|
|
95
|
+
skillfree pilot --type ocr --file /path/to/document.pdf
|
|
96
|
+
|
|
97
|
+
# 识别结果保存为 Markdown 文件
|
|
98
|
+
skillfree pilot --type ocr --file /path/to/scanned_report.pdf --output result.md
|
|
99
|
+
|
|
100
|
+
# 识别图片文件
|
|
101
|
+
skillfree pilot --type ocr --file /path/to/invoice.jpg --output invoice.md
|
|
102
|
+
```
|
|
74
103
|
|
|
75
|
-
|
|
76
|
-
|--------|------|------|-------|-----|
|
|
77
|
-
| `veo-3.1-fast-generate-preview` | **Veo 3.1 Fast** ⭐ | ¥1.5/s | ¥1.5/s | ¥3.5/s |
|
|
78
|
-
| `veo-3.1-generate-preview` | **Veo 3.1** | ¥3.5/s | ¥3.5/s | ¥5.5/s |
|
|
104
|
+
**适合场景:** 扫描版合同、学术论文、含表格财务文档、图文混排材料
|
|
79
105
|
|
|
80
|
-
|
|
106
|
+
**注意:** OCR 使用合合信息图文混排解析引擎(模型ID:`hehe-tywd`),输出格式为 Markdown,表格以 HTML 形式保留。
|
|
81
107
|
|
|
82
108
|
---
|
|
83
109
|
|
|
84
|
-
|
|
110
|
+
## 📊 演示文稿生成(presentation)
|
|
85
111
|
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
112
|
+
```bash
|
|
113
|
+
# 快捷方式(最简单)
|
|
114
|
+
skillfree ppt "百图生科融资路演BP,AI驱动蛋白质大模型药物发现平台"
|
|
89
115
|
|
|
90
|
-
|
|
116
|
+
# 完整命令
|
|
117
|
+
skillfree pilot --type presentation --prompt "2025年中国新能源汽车市场分析报告"
|
|
91
118
|
|
|
92
|
-
|
|
119
|
+
# 指定语言(默认 zh-cn)
|
|
120
|
+
skillfree pilot --type presentation --prompt "Product Launch Deck for SaaS CRM tool" --language en
|
|
121
|
+
|
|
122
|
+
# 异步任务,自动等待完成并输出预览链接
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**返回内容:** 在线预览链接 + PDF 导出地址,约 30~60 秒生成完成。
|
|
93
126
|
|
|
94
|
-
|
|
127
|
+
**支持语言:** `zh-cn`(简体)· `zh-tw`(繁体)· `en`(英文)· `ja`(日文)· `ko`(韩文)等 50+ 语言
|
|
95
128
|
|
|
96
|
-
|
|
129
|
+
**计费方式:** 按实际生成页数,约 ¥0.30~0.40/页,生成失败自动退款。
|
|
97
130
|
|
|
98
131
|
---
|
|
99
132
|
|
|
100
|
-
##
|
|
133
|
+
## 💊 医药数据查询(pharma)
|
|
101
134
|
|
|
102
|
-
|
|
135
|
+
查询全球药物研发管线、中国临床试验、中国药品申报等数据,数据来源:摩熵数科(PharmCube)。
|
|
103
136
|
|
|
104
|
-
|
|
137
|
+
```bash
|
|
138
|
+
# 按靶点查询研发管线(最常用)
|
|
139
|
+
skillfree pilot --type pharma --target "STAT6"
|
|
140
|
+
skillfree pilot --type pharma --target "PD-1"
|
|
141
|
+
|
|
142
|
+
# 按药品名称查询
|
|
143
|
+
skillfree pilot --type pharma --drug "信迪利单抗"
|
|
144
|
+
skillfree pilot --type pharma --drug "度普利尤单抗"
|
|
145
|
+
|
|
146
|
+
# 按适应症查询
|
|
147
|
+
skillfree pilot --type pharma --indication "特应性皮炎"
|
|
148
|
+
skillfree pilot --type pharma --indication "非小细胞肺癌"
|
|
105
149
|
|
|
106
|
-
|
|
150
|
+
# 按公司查询
|
|
151
|
+
skillfree pilot --type pharma --company "信达生物"
|
|
107
152
|
|
|
108
|
-
|
|
153
|
+
# 按研发阶段筛选
|
|
154
|
+
skillfree pilot --type pharma --target "IL-4" --status "III期临床"
|
|
109
155
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
- 产品发布 / 项目汇报 / 周会材料
|
|
113
|
-
- 提案文档、课件、培训材料
|
|
156
|
+
# 翻页(默认第1页)
|
|
157
|
+
skillfree pilot --type pharma --target "STAT6" --page 2
|
|
114
158
|
|
|
115
|
-
|
|
159
|
+
# 查询药物详情(需要先查管线获取 keyid)
|
|
160
|
+
skillfree pilot --type pharma --model bcpm-drug-detail --keyid <keyid>
|
|
116
161
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
| 丰富(10-12页)| **约 ¥3.5~4.5** | 详细大纲输入 |
|
|
162
|
+
# 查询中国临床试验
|
|
163
|
+
skillfree pilot --type pharma --model bcpm-cn-clinical --drug "度普利尤单抗"
|
|
164
|
+
skillfree pilot --type pharma --model bcpm-cn-clinical --sponsor "信达生物"
|
|
121
165
|
|
|
122
|
-
|
|
123
|
-
|
|
166
|
+
# 查询中国药品申报/评审
|
|
167
|
+
skillfree pilot --type pharma --model bcpm-cn-evaluation --drug "PD-1"
|
|
124
168
|
|
|
125
|
-
|
|
169
|
+
# 保存结果为 JSON 文件
|
|
170
|
+
skillfree pilot --type pharma --target "STAT6" --output result.json
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
**可用数据表(model):**
|
|
174
|
+
|
|
175
|
+
| model | 说明 | 主要参数 |
|
|
176
|
+
|-------|------|---------|
|
|
177
|
+
| `bcpm-drug-dev`(默认)| 全球药物研发管线 | --target / --drug / --indication / --company / --status |
|
|
178
|
+
| `bcpm-drug-detail` | 药物详细信息(含销售额、适应症进展)| --keyid(必填)|
|
|
179
|
+
| `bcpm-cn-clinical` | 中国临床试验注册 | --drug / --sponsor / --indication |
|
|
180
|
+
| `bcpm-cn-evaluation` | 中国药品申报/评审 | --drug / --company |
|
|
126
181
|
|
|
127
|
-
|
|
182
|
+
**典型两步工作流:**
|
|
128
183
|
|
|
129
184
|
```bash
|
|
130
|
-
#
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
"inputs": {
|
|
137
|
-
"text": "百图生科融资路演BP,AI驱动蛋白质大模型药物发现平台,xTrimoPGLM千亿参数,已融资2亿美元",
|
|
138
|
-
"language": "zh-cn"
|
|
139
|
-
}
|
|
140
|
-
}'
|
|
141
|
-
# 返回:{ "task_id": "xxx", "status": "processing", "estimated_credits": 300 }
|
|
142
|
-
|
|
143
|
-
# 第二步:轮询结果(每隔 8~10 秒查一次)
|
|
144
|
-
curl https://skillfree.tech/v1/tasks/{task_id} \
|
|
145
|
-
-H "Authorization: Bearer YOUR_API_KEY"
|
|
146
|
-
# 完成:{ "status": "completed", "result_url": "https://...", "credits_used": 273 }
|
|
147
|
-
# 失败:{ "status": "failed", "error": "...", "credits_used": 0 }
|
|
185
|
+
# 第一步:查管线,找到目标药物的 keyid
|
|
186
|
+
skillfree pilot --type pharma --target "STAT6"
|
|
187
|
+
# 输出中会显示每个药物的 keyid
|
|
188
|
+
|
|
189
|
+
# 第二步:用 keyid 查详情(含全球销售额、各适应症研发现状)
|
|
190
|
+
skillfree pilot --type pharma --model bcpm-drug-detail --keyid 0b0566619e92554c97b384c0e4c9ddfd
|
|
148
191
|
```
|
|
149
192
|
|
|
150
|
-
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## 🌐 实时搜索(search)
|
|
151
196
|
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
197
|
+
```bash
|
|
198
|
+
# 基本搜索(默认返回 5 条结果 + AI 摘要)
|
|
199
|
+
skillfree pilot --type search --prompt "STAT6抑制剂最新临床进展"
|
|
200
|
+
|
|
201
|
+
# 指定返回结果数量
|
|
202
|
+
skillfree pilot --type search --prompt "2025年中国新能源汽车市场规模" --limit 10
|
|
203
|
+
|
|
204
|
+
# 保存完整 JSON 结果
|
|
205
|
+
skillfree pilot --type search --prompt "度普利尤单抗竞品分析" --output result.json
|
|
206
|
+
|
|
207
|
+
# 使用高级搜索(更深度,费用略高)
|
|
208
|
+
skillfree pilot --type search --prompt "PD-1抑制剂市场格局" --model tavily-search-advanced
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**输出内容:** AI 摘要 + 各结果的标题、链接、摘要片段
|
|
157
212
|
|
|
158
|
-
|
|
213
|
+
**可用模型:**
|
|
214
|
+
- `tavily-search`(默认)— 标准搜索
|
|
215
|
+
- `tavily-search-advanced` — 深度搜索,结果更全面
|
|
159
216
|
|
|
160
217
|
---
|
|
161
218
|
|
|
162
|
-
##
|
|
219
|
+
## 🔧 其他常用命令
|
|
163
220
|
|
|
164
221
|
```bash
|
|
165
|
-
skillfree models
|
|
166
|
-
skillfree
|
|
167
|
-
skillfree
|
|
222
|
+
skillfree models # 查看所有可用模型和定价
|
|
223
|
+
skillfree models --type chat # 只看对话模型
|
|
224
|
+
skillfree balance # 查看账户余额和 credits
|
|
225
|
+
skillfree auth login # 登录账号
|
|
226
|
+
skillfree auth status # 查看当前登录状态
|
|
227
|
+
skillfree update # 更新到最新版本
|
|
168
228
|
```
|
|
169
229
|
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## 🧭 任务类型 → 推荐命令速查
|
|
233
|
+
|
|
234
|
+
| 用户说的 | 应该调用的命令 |
|
|
235
|
+
|---------|-------------|
|
|
236
|
+
| 写代码/技术问题 | `skillfree chat "..."` |
|
|
237
|
+
| 分析文档/报告 | `skillfree pilot --type chat --model gpt-5.4 --prompt "..."` |
|
|
238
|
+
| 画一张图/生成图片 | `skillfree pilot --type image --prompt "..."` |
|
|
239
|
+
| 生成视频/做视频 | `skillfree pilot --type video --prompt "..."` |
|
|
240
|
+
| 识别PDF/OCR扫描件 | `skillfree pilot --type ocr --file <路径>` |
|
|
241
|
+
| 做PPT/演示文稿 | `skillfree ppt "..."` |
|
|
242
|
+
| 查药物/查靶点/查临床 | `skillfree pilot --type pharma --target "..."` |
|
|
243
|
+
| 搜索网页/查新闻/实时信息 | `skillfree pilot --type search --prompt "..."` |
|
|
244
|
+
| 查账户余额 | `skillfree balance` |
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
170
248
|
充值地址:https://skillfree.tech/app/billing
|
package/bin/skillfree.js
CHANGED
|
@@ -37,7 +37,7 @@ auth
|
|
|
37
37
|
program
|
|
38
38
|
.command('pilot')
|
|
39
39
|
.description('AI 智能调度:chat | image | video | ocr | presentation | pharma')
|
|
40
|
-
.option('--type <type>', '调用类型: chat | image | video | ocr | presentation | pharma', 'chat')
|
|
40
|
+
.option('--type <type>', '调用类型: chat | image | video | ocr | presentation | pharma | search', 'chat')
|
|
41
41
|
.option('--prompt <text>', '输入提示词')
|
|
42
42
|
.option('--file <path>', '输入文件路径(ocr 用)')
|
|
43
43
|
.option('--output <path>', '输出文件路径')
|
|
@@ -53,6 +53,7 @@ program
|
|
|
53
53
|
.option('--sponsor <sponsor>', '医药查询:申办单位(临床试验用)')
|
|
54
54
|
.option('--keyid <keyid>', '医药查询:药物 keyid(drug-detail 用)')
|
|
55
55
|
.option('--page <page>', '医药查询:页码', '1')
|
|
56
|
+
.option('--limit <n>', '搜索结果数量(search 用,默认 5)')
|
|
56
57
|
.action(async (flags) => {
|
|
57
58
|
const { pilot } = require('../scripts/commands/pilot')
|
|
58
59
|
await pilot(flags).catch(e => { console.error('❌', e.message); process.exit(1) })
|
package/package.json
CHANGED
|
@@ -156,6 +156,53 @@ async function pilot(flags) {
|
|
|
156
156
|
return
|
|
157
157
|
}
|
|
158
158
|
|
|
159
|
+
// ── SEARCH(Tavily 实时网页搜索)────────────────────────────────────────────
|
|
160
|
+
if (type === 'search') {
|
|
161
|
+
if (!prompt) throw new Error('--prompt 是必需的(搜索关键词)')
|
|
162
|
+
const searchModel = model || 'tavily-search'
|
|
163
|
+
const apiKey = getApiKey()
|
|
164
|
+
|
|
165
|
+
console.log(`🔍 搜索中:${prompt}\n`)
|
|
166
|
+
|
|
167
|
+
const res = await fetch(`${BASE_URL}/v1/search`, {
|
|
168
|
+
method: 'POST',
|
|
169
|
+
headers: { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json' },
|
|
170
|
+
body: JSON.stringify({
|
|
171
|
+
model: searchModel,
|
|
172
|
+
query: prompt,
|
|
173
|
+
include_answer: true,
|
|
174
|
+
include_images: false,
|
|
175
|
+
max_results: flags.limit ? Number(flags.limit) : 5,
|
|
176
|
+
}),
|
|
177
|
+
})
|
|
178
|
+
|
|
179
|
+
const data = await res.json()
|
|
180
|
+
if (!res.ok || data.error) throw new Error(data.error?.message || `HTTP ${res.status}`)
|
|
181
|
+
|
|
182
|
+
// 格式化输出
|
|
183
|
+
if (data.answer) {
|
|
184
|
+
console.log(`💡 AI 摘要\n${'─'.repeat(50)}`)
|
|
185
|
+
console.log(data.answer)
|
|
186
|
+
console.log()
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
if (data.results?.length) {
|
|
190
|
+
console.log(`📄 搜索结果(共 ${data.results.length} 条)\n${'─'.repeat(50)}`)
|
|
191
|
+
data.results.forEach((r, i) => {
|
|
192
|
+
console.log(`${i + 1}. ${r.title}`)
|
|
193
|
+
console.log(` 🔗 ${r.url}`)
|
|
194
|
+
if (r.content) console.log(` ${r.content.slice(0, 200).replace(/\n/g, ' ')}...`)
|
|
195
|
+
console.log()
|
|
196
|
+
})
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
if (output) {
|
|
200
|
+
fs.writeFileSync(output, JSON.stringify(data, null, 2))
|
|
201
|
+
console.log(`✅ 完整结果已保存到 ${output}`)
|
|
202
|
+
}
|
|
203
|
+
return
|
|
204
|
+
}
|
|
205
|
+
|
|
159
206
|
// ── PRESENTATION(AI 演示文稿,异步轮询)────────────────────────────────────
|
|
160
207
|
if (type === 'presentation') {
|
|
161
208
|
const { createPresentation } = require('./presentation')
|
|
@@ -260,7 +307,7 @@ async function pilot(flags) {
|
|
|
260
307
|
return
|
|
261
308
|
}
|
|
262
309
|
|
|
263
|
-
throw new Error(`不支持的类型: ${type}\n可选: chat | image | video | ocr | presentation | pharma`)
|
|
310
|
+
throw new Error(`不支持的类型: ${type}\n可选: chat | image | video | ocr | presentation | pharma | search`)
|
|
264
311
|
}
|
|
265
312
|
|
|
266
313
|
module.exports = { pilot }
|