felo-ai 0.2.7 → 0.2.9
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/.github/workflows/publish-npm.yml +39 -0
- package/CHANGELOG.md +30 -30
- package/CONTRIBUTING.md +346 -346
- package/README.en.md +129 -129
- package/README.md +435 -414
- package/docs/EXAMPLES.md +632 -632
- package/docs/FAQ.md +479 -479
- package/felo-search/LICENSE +21 -21
- package/felo-search/README.md +440 -440
- package/felo-search/SKILL.md +291 -291
- package/felo-slides/LICENSE +21 -21
- package/felo-slides/README.md +87 -87
- package/felo-slides/SKILL.md +166 -166
- package/felo-slides/scripts/run_ppt_task.mjs +251 -251
- package/felo-superAgent/LICENSE +21 -0
- package/felo-superAgent/README.md +125 -0
- package/felo-superAgent/SKILL.md +165 -0
- package/felo-web-fetch/README.md +127 -78
- package/felo-web-fetch/SKILL.md +204 -200
- package/felo-web-fetch/scripts/run_web_fetch.mjs +316 -232
- package/felo-x-search/SKILL.md +204 -0
- package/felo-x-search/scripts/run_x_search.mjs +385 -0
- package/felo-youtube-subtitling/README.md +59 -59
- package/felo-youtube-subtitling/SKILL.md +161 -161
- package/felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs +239 -239
- package/package.json +37 -35
- package/src/cli.js +370 -252
- package/src/config.js +66 -66
- package/src/search.js +142 -142
- package/src/slides.js +332 -332
- package/src/superAgent.js +609 -0
- package/src/webFetch.js +148 -148
- package/src/xSearch.js +366 -0
- package/src/youtubeSubtitling.js +179 -179
- package/tests/config.test.js +78 -78
- package/tests/search.test.js +100 -100
package/README.md
CHANGED
|
@@ -1,414 +1,435 @@
|
|
|
1
|
-
# Felo AI CLI
|
|
2
|
-
|
|
3
|
-
**Ask anything. Get current answers. Generate slides from a prompt.**
|
|
4
|
-
|
|
5
|
-
[npm package: **felo-ai**](https://www.npmjs.com/package/felo-ai) — Real-time search, PPT generation, web fetch, and YouTube subtitles from the terminal. Also works as Claude Code skills. Supports Chinese, English, Japanese, and Korean.
|
|
6
|
-
|
|
7
|
-
[](https://www.npmjs.com/package/felo-ai) []()
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Install (CLI)
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
npm install -g felo-ai
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
Run without installing:
|
|
18
|
-
|
|
19
|
-
```bash
|
|
20
|
-
npx felo-ai search "Tokyo weather"
|
|
21
|
-
npx felo-ai slides "Introduction to React, 5 slides"
|
|
22
|
-
```
|
|
23
|
-
|
|
24
|
-
After install, the command is `felo` (package name: **felo-ai**).
|
|
25
|
-
|
|
26
|
-
### Configure API key
|
|
27
|
-
|
|
28
|
-
**Option 1: Persist with config (recommended)**
|
|
29
|
-
|
|
30
|
-
```bash
|
|
31
|
-
felo config set FELO_API_KEY your-api-key-here
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
The key is stored in `~/.felo/config.json` (Windows: `%USERPROFILE%\.felo\config.json`). You only need to set it once.
|
|
35
|
-
|
|
36
|
-
**Option 2: Environment variable**
|
|
37
|
-
|
|
38
|
-
```bash
|
|
39
|
-
# Linux/macOS
|
|
40
|
-
export FELO_API_KEY="your-api-key-here"
|
|
41
|
-
|
|
42
|
-
# Windows (PowerShell)
|
|
43
|
-
$env:FELO_API_KEY="your-api-key-here"
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
Get your API key from [felo.ai](https://felo.ai) (Settings → API Keys). Environment variable overrides config if both are set.
|
|
47
|
-
|
|
48
|
-
### Commands
|
|
49
|
-
|
|
50
|
-
| Command | Description |
|
|
51
|
-
| ------------------------------------ | ----------------------------------------------------- |
|
|
52
|
-
| `felo search "<query>"` | Search for current info (weather, news, prices, etc.) |
|
|
53
|
-
| `felo slides "<prompt>"` | Generate PPT; returns link when done |
|
|
54
|
-
| `felo web-fetch --url <url>` | Fetch webpage content (markdown/text/html) |
|
|
55
|
-
| `felo youtube-subtitling -v <url-or-id>` | Fetch YouTube video subtitles by video URL or ID |
|
|
56
|
-
| `felo config set FELO_API_KEY <key>` | Save API key to config |
|
|
57
|
-
| `felo config get FELO_API_KEY` | Print stored key |
|
|
58
|
-
| `felo config list` | List config keys |
|
|
59
|
-
| `felo config path` | Show config file path |
|
|
60
|
-
|
|
61
|
-
### Examples
|
|
62
|
-
|
|
63
|
-
**Search**
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
felo search "Tokyo weather"
|
|
67
|
-
felo search "MacBook Air M3 price"
|
|
68
|
-
felo search "React 19 new features" --verbose
|
|
69
|
-
felo search "Hangzhou tomorrow weather" --json
|
|
70
|
-
npx felo-ai search "Tokyo weather"
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
**Slides**
|
|
74
|
-
|
|
75
|
-
```bash
|
|
76
|
-
felo slides "Felo product intro, 3 slides"
|
|
77
|
-
felo slides "Introduction to React"
|
|
78
|
-
felo slides "Q4 2024 business review, 10 pages" --poll-timeout 300
|
|
79
|
-
npx felo-ai slides "Tokyo travel guide, 5 slides"
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Web fetch** (after `npm install -g felo-ai`)
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
# Packaged CLI
|
|
86
|
-
felo web-fetch --url "https://example.com"
|
|
87
|
-
felo web-fetch --url "https://example.com/article" --format markdown --readability
|
|
88
|
-
felo web-fetch --url "https://example.com" --target-selector "article.main" --format text
|
|
89
|
-
felo web-fetch --url "https://example.com" -j
|
|
90
|
-
npx felo-ai web-fetch --url "https://example.com" --format markdown
|
|
91
|
-
|
|
92
|
-
# From repo: run script directly (no install)
|
|
93
|
-
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --format markdown
|
|
94
|
-
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --readability -f text
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**How to pass parameters**
|
|
98
|
-
|
|
99
|
-
| Parameter | CLI option | Example | Description |
|
|
100
|
-
|-----------|------------|---------|--------------|
|
|
101
|
-
| URL (required) | `-u`, `--url` | `--url "https://example.com"` | Page to fetch |
|
|
102
|
-
| Output format | `-f`, `--format` | `--format text` or `-f markdown` | `html`, `text`, or `markdown` (default: markdown) |
|
|
103
|
-
| Target element | `--target-selector` | `--target-selector "article.main"` | CSS selector; only this element is fetched |
|
|
104
|
-
| Wait for element | `--wait-for-selector` | `--wait-for-selector ".content"` | Wait for selector before fetching (e.g. dynamic pages) |
|
|
105
|
-
| Readability | `--readability` | `--readability` | Main article content only (no nav/ads) |
|
|
106
|
-
| Crawl mode | `--crawl-mode` | `--crawl-mode fine` | `fast` (default) or `fine` |
|
|
107
|
-
| Timeout (seconds) | `-t`, `--timeout` | `--timeout 120` or `-t 90` | Request timeout (default: 60) |
|
|
108
|
-
| Full JSON response | `-j`, `--json` | `-j` or `--json` | Print full API response instead of content only |
|
|
109
|
-
|
|
110
|
-
Examples with multiple options:
|
|
111
|
-
|
|
112
|
-
```bash
|
|
113
|
-
felo web-fetch -u "https://example.com" -f text --readability -t 90
|
|
114
|
-
felo web-fetch --url "https://example.com" --target-selector "#main" --wait-for-selector ".loaded" --format markdown --json
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
Same `FELO_API_KEY` as search/slides.
|
|
118
|
-
|
|
119
|
-
**YouTube subtitling** (after `npm install -g felo-ai`)
|
|
120
|
-
|
|
121
|
-
```bash
|
|
122
|
-
# Packaged CLI
|
|
123
|
-
felo youtube-subtitling -v "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
124
|
-
felo youtube-subtitling -v "dQw4w9WgXcQ" --language zh-CN
|
|
125
|
-
felo youtube-subtitling -v "https://youtu.be/dQw4w9WgXcQ" --with-time -j
|
|
126
|
-
npx felo-ai youtube-subtitling -v "dQw4w9WgXcQ"
|
|
127
|
-
|
|
128
|
-
# From repo: run script directly (no install)
|
|
129
|
-
node felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs --video-code "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
130
|
-
node felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs -v "dQw4w9WgXcQ" -l zh-CN --with-time
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
Options: `-v/--video-code` (required: **YouTube video URL** or video ID), `-l/--language` (e.g. en, zh-CN), `--with-time`, `-j/--json`. Same `FELO_API_KEY` as other commands. See [felo-youtube-subtitling](./felo-youtube-subtitling/README.md).
|
|
134
|
-
|
|
135
|
-
### CLI FAQ
|
|
136
|
-
|
|
137
|
-
- **Key not found?** Run `felo config set FELO_API_KEY <key>` or set the `FELO_API_KEY` environment variable.
|
|
138
|
-
- **Request timeout?** Use `felo search "query" --timeout 120` (default 60 seconds). 5xx errors are retried automatically with backoff.
|
|
139
|
-
- **Slides taking long?** Use `felo slides "topic" --poll-timeout 300` (default 1200s) to limit wait.
|
|
140
|
-
- **Where is config stored?** Run `felo config path` to see the file (e.g. `~/.felo/config.json`).
|
|
141
|
-
- **Web fetch after install?** Use `felo web-fetch --url "<page url>"`. Other params: `--format markdown|text|html`, `--readability`, `--target-selector "selector"`, `--wait-for-selector "selector"`, `--crawl-mode fast|fine`, `--timeout 120`, `--json`. See the "How to pass parameters" table above. Same API key as other commands.
|
|
142
|
-
- **YouTube subtitles?** Use `felo youtube-subtitling -v "<url or video_id>"` (full YouTube link or 11-char ID). Optional: `-l/--language`, `--with-time`, `-j/--json`. See [felo-youtube-subtitling](./felo-youtube-subtitling/README.md).
|
|
143
|
-
|
|
144
|
-
---
|
|
145
|
-
|
|
146
|
-
## Claude Code Skills (optional)
|
|
147
|
-
|
|
148
|
-
This repo also provides **Claude Code** skills. If you use [Claude Code](https://claude.ai/code), you can install search and/or slides as skills so Claude can run them in chat.
|
|
149
|
-
|
|
150
|
-
### Quick Start (Search skill)
|
|
151
|
-
|
|
152
|
-
Install the skill:
|
|
153
|
-
|
|
154
|
-
```bash
|
|
155
|
-
npx @claude/skills add felo-search
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
Get your API key from [felo.ai](https://felo.ai) (Settings → API Keys), then configure:
|
|
159
|
-
|
|
160
|
-
**Linux/macOS:**
|
|
161
|
-
|
|
162
|
-
```bash
|
|
163
|
-
export FELO_API_KEY="your-api-key-here"
|
|
164
|
-
# Add to ~/.bashrc or ~/.zshrc for persistence
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
**Windows (PowerShell):**
|
|
168
|
-
|
|
169
|
-
```powershell
|
|
170
|
-
$env:FELO_API_KEY="your-api-key-here"
|
|
171
|
-
# For persistence, add to system environment variables
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
Test it:
|
|
175
|
-
|
|
176
|
-
```
|
|
177
|
-
Ask Claude: "What's the weather in Tokyo today?"
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
**You're done!** The skill triggers automatically for any question needing current information.
|
|
181
|
-
|
|
182
|
-
**Felo Slides (PPT):** In terminal run `felo slides "your topic"`. In Claude Code install with `npx @claude/skills add felo-slides`, then use `/felo-slides your topic`. See [felo-slides](./felo-slides/README.md).
|
|
183
|
-
|
|
184
|
-
**Felo Web Fetch:** In terminal run `felo web-fetch --url "https://example.com"` (see [felo-web-fetch](./felo-web-fetch/README.md)). In Claude Code you can install the skill and use it to fetch webpage content from a URL.
|
|
185
|
-
|
|
186
|
-
**Felo YouTube Subtitling:** In terminal run `felo youtube-subtitling -v "URL_or_VIDEO_ID"` (see [felo-youtube-subtitling](./felo-youtube-subtitling/README.md)). Fetches subtitles/captions; accepts full YouTube link or video ID.
|
|
187
|
-
|
|
188
|
-
---
|
|
189
|
-
|
|
190
|
-
## Usage Examples
|
|
191
|
-
|
|
192
|
-
### Daily life
|
|
193
|
-
|
|
194
|
-
**Weather**
|
|
195
|
-
|
|
196
|
-
```
|
|
197
|
-
You: What's the weather in Tokyo today?
|
|
198
|
-
Claude: [Current temperature, conditions, forecast]
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
**Restaurants & food**
|
|
202
|
-
|
|
203
|
-
```
|
|
204
|
-
You: Best ramen in Osaka
|
|
205
|
-
Claude: [Top-rated ramen shops with addresses, ratings, reviews]
|
|
206
|
-
```
|
|
207
|
-
|
|
208
|
-
**Shopping & prices**
|
|
209
|
-
|
|
210
|
-
```
|
|
211
|
-
You: iPhone 15 Pro price comparison
|
|
212
|
-
Claude: [Prices from different retailers with links]
|
|
213
|
-
```
|
|
214
|
-
|
|
215
|
-
**Travel**
|
|
216
|
-
|
|
217
|
-
```
|
|
218
|
-
You: Things to do in Kyoto this weekend
|
|
219
|
-
Claude: [Events, attractions, seasonal activities]
|
|
220
|
-
```
|
|
221
|
-
|
|
222
|
-
### Developer scenarios
|
|
223
|
-
|
|
224
|
-
**Latest documentation**
|
|
225
|
-
|
|
226
|
-
```
|
|
227
|
-
You: React 19 new features
|
|
228
|
-
Claude: [Latest React 19 features with official docs links]
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
**Library comparison**
|
|
232
|
-
|
|
233
|
-
```
|
|
234
|
-
You: Vite vs Webpack 2024 comparison
|
|
235
|
-
Claude: [Performance, features, use cases comparison]
|
|
236
|
-
```
|
|
237
|
-
|
|
238
|
-
**Tech trends**
|
|
239
|
-
|
|
240
|
-
```
|
|
241
|
-
You: Latest AI developments January 2026
|
|
242
|
-
Claude: [Recent AI breakthroughs, company announcements]
|
|
243
|
-
```
|
|
244
|
-
|
|
245
|
-
### Multi-language queries
|
|
246
|
-
|
|
247
|
-
Works in Chinese (Simplified & Traditional), Japanese, Korean, and English. Ask in any language, get answers in that language.
|
|
248
|
-
|
|
249
|
-
**[See 40+ more examples →](./docs/EXAMPLES.md)**
|
|
250
|
-
|
|
251
|
-
---
|
|
252
|
-
|
|
253
|
-
## Installation details
|
|
254
|
-
|
|
255
|
-
### Prerequisites
|
|
256
|
-
|
|
257
|
-
- [Claude Code](https://claude.ai/code) CLI installed
|
|
258
|
-
- Node.js (for npx)
|
|
259
|
-
- Internet connection
|
|
260
|
-
|
|
261
|
-
### Manual installation
|
|
262
|
-
|
|
263
|
-
If quick install doesn’t work:
|
|
264
|
-
|
|
265
|
-
1. Clone this repository:
|
|
266
|
-
|
|
267
|
-
```bash
|
|
268
|
-
git clone https://github.com/Felo-Inc/felo-skills.git
|
|
269
|
-
cd felo-skills
|
|
270
|
-
```
|
|
271
|
-
|
|
272
|
-
2. Copy to Claude Code skills directory:
|
|
273
|
-
|
|
274
|
-
- **Linux/macOS:** `~/.claude/skills/`
|
|
275
|
-
- **Windows:** `C:\Users\<YourUsername>\.claude\skills\`
|
|
276
|
-
|
|
277
|
-
```bash
|
|
278
|
-
# Linux/macOS
|
|
279
|
-
cp -r felo-search ~/.claude/skills/
|
|
280
|
-
|
|
281
|
-
# Windows (PowerShell)
|
|
282
|
-
Copy-Item -Recurse felo-search "$env:USERPROFILE\.claude\skills\"
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
3. Get API key from [felo.ai](https://felo.ai) (Settings → API Keys)
|
|
286
|
-
|
|
287
|
-
4. Set environment variable (see Quick Start)
|
|
288
|
-
|
|
289
|
-
5. Restart Claude Code: `claude restart`
|
|
290
|
-
|
|
291
|
-
### Verify installation
|
|
292
|
-
|
|
293
|
-
```bash
|
|
294
|
-
claude skills list
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
You should see `felo-search` in the output.
|
|
298
|
-
|
|
299
|
-
Test: ask Claude _"Latest news about quantum computing"_. If you see an AI-generated answer, it’s working.
|
|
300
|
-
|
|
301
|
-
---
|
|
302
|
-
|
|
303
|
-
## FAQ
|
|
304
|
-
|
|
305
|
-
### Q: Skill not triggering automatically?
|
|
306
|
-
|
|
307
|
-
**A:** The skill triggers for questions needing current info (weather, news, prices, etc.). For manual trigger, use:
|
|
308
|
-
|
|
309
|
-
```
|
|
310
|
-
/felo-search your query here
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
### Q: "FELO_API_KEY not set" error?
|
|
314
|
-
|
|
315
|
-
**A:** Set the environment variable (see Quick Start), then restart Claude Code.
|
|
316
|
-
|
|
317
|
-
### Q: Environment variable not persisting?
|
|
318
|
-
|
|
319
|
-
**A:** Add to your shell profile: **bash** `~/.bashrc`, **zsh** `~/.zshrc`, **Windows** system environment variables.
|
|
320
|
-
|
|
321
|
-
### Q: "INVALID_API_KEY" error?
|
|
322
|
-
|
|
323
|
-
**A:** Your API key is incorrect or revoked. Generate a new one at [felo.ai](https://felo.ai) (Settings → API Keys).
|
|
324
|
-
|
|
325
|
-
### Q: Does it work in Chinese/Japanese/Korean?
|
|
326
|
-
|
|
327
|
-
**A:** Yes. Multi-language queries are supported; ask in any language.
|
|
328
|
-
|
|
329
|
-
### Q: Rate limits?
|
|
330
|
-
|
|
331
|
-
**A:** Check your Felo account tier at [felo.ai](https://felo.ai). Free tier available.
|
|
332
|
-
|
|
333
|
-
### Q: Can I use it offline?
|
|
334
|
-
|
|
335
|
-
**A:** No, it requires an internet connection to the Felo API.
|
|
336
|
-
|
|
337
|
-
### Q: How fast are responses?
|
|
338
|
-
|
|
339
|
-
**A:** Typically 2–5 seconds depending on query complexity.
|
|
340
|
-
|
|
341
|
-
**[Full FAQ →](./docs/FAQ.md)**
|
|
342
|
-
|
|
343
|
-
---
|
|
344
|
-
|
|
345
|
-
## Available Skills
|
|
346
|
-
|
|
347
|
-
### felo-search
|
|
348
|
-
|
|
349
|
-
Real-time web search with AI-generated answers.
|
|
350
|
-
|
|
351
|
-
**Triggers automatically for:**
|
|
352
|
-
|
|
353
|
-
- Current events & news
|
|
354
|
-
- Weather, prices, reviews
|
|
355
|
-
- Location info (restaurants, attractions)
|
|
356
|
-
- Latest documentation & tech trends
|
|
357
|
-
- Product comparisons
|
|
358
|
-
- Any question with "latest", "recent", "best", "how to"
|
|
359
|
-
|
|
360
|
-
**[View skill documentation →](./felo-search/)**
|
|
361
|
-
|
|
362
|
-
### felo-slides
|
|
363
|
-
|
|
364
|
-
Generate PPT: in terminal use `felo slides "your topic"`, in Claude Code use `/felo-slides your topic`. **[View skill documentation →](./felo-slides/)**
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
- **[
|
|
389
|
-
- **[
|
|
390
|
-
- **[
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
1
|
+
# Felo AI CLI
|
|
2
|
+
|
|
3
|
+
**Ask anything. Get current answers. Generate slides from a prompt.**
|
|
4
|
+
|
|
5
|
+
[npm package: **felo-ai**](https://www.npmjs.com/package/felo-ai) — Real-time search, PPT generation, web fetch, and YouTube subtitles from the terminal. Also works as Claude Code skills. Supports Chinese, English, Japanese, and Korean.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/felo-ai) []()
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Install (CLI)
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm install -g felo-ai
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
Run without installing:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
npx felo-ai search "Tokyo weather"
|
|
21
|
+
npx felo-ai slides "Introduction to React, 5 slides"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
After install, the command is `felo` (package name: **felo-ai**).
|
|
25
|
+
|
|
26
|
+
### Configure API key
|
|
27
|
+
|
|
28
|
+
**Option 1: Persist with config (recommended)**
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
felo config set FELO_API_KEY your-api-key-here
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
The key is stored in `~/.felo/config.json` (Windows: `%USERPROFILE%\.felo\config.json`). You only need to set it once.
|
|
35
|
+
|
|
36
|
+
**Option 2: Environment variable**
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
# Linux/macOS
|
|
40
|
+
export FELO_API_KEY="your-api-key-here"
|
|
41
|
+
|
|
42
|
+
# Windows (PowerShell)
|
|
43
|
+
$env:FELO_API_KEY="your-api-key-here"
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Get your API key from [felo.ai](https://felo.ai) (Settings → API Keys). Environment variable overrides config if both are set.
|
|
47
|
+
|
|
48
|
+
### Commands
|
|
49
|
+
|
|
50
|
+
| Command | Description |
|
|
51
|
+
| ------------------------------------ | ----------------------------------------------------- |
|
|
52
|
+
| `felo search "<query>"` | Search for current info (weather, news, prices, etc.) |
|
|
53
|
+
| `felo slides "<prompt>"` | Generate PPT; returns link when done |
|
|
54
|
+
| `felo web-fetch --url <url>` | Fetch webpage content (markdown/text/html) |
|
|
55
|
+
| `felo youtube-subtitling -v <url-or-id>` | Fetch YouTube video subtitles by video URL or ID |
|
|
56
|
+
| `felo config set FELO_API_KEY <key>` | Save API key to config |
|
|
57
|
+
| `felo config get FELO_API_KEY` | Print stored key |
|
|
58
|
+
| `felo config list` | List config keys |
|
|
59
|
+
| `felo config path` | Show config file path |
|
|
60
|
+
|
|
61
|
+
### Examples
|
|
62
|
+
|
|
63
|
+
**Search**
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
felo search "Tokyo weather"
|
|
67
|
+
felo search "MacBook Air M3 price"
|
|
68
|
+
felo search "React 19 new features" --verbose
|
|
69
|
+
felo search "Hangzhou tomorrow weather" --json
|
|
70
|
+
npx felo-ai search "Tokyo weather"
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
**Slides**
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
felo slides "Felo product intro, 3 slides"
|
|
77
|
+
felo slides "Introduction to React"
|
|
78
|
+
felo slides "Q4 2024 business review, 10 pages" --poll-timeout 300
|
|
79
|
+
npx felo-ai slides "Tokyo travel guide, 5 slides"
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Web fetch** (after `npm install -g felo-ai`)
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# Packaged CLI
|
|
86
|
+
felo web-fetch --url "https://example.com"
|
|
87
|
+
felo web-fetch --url "https://example.com/article" --format markdown --readability
|
|
88
|
+
felo web-fetch --url "https://example.com" --target-selector "article.main" --format text
|
|
89
|
+
felo web-fetch --url "https://example.com" -j
|
|
90
|
+
npx felo-ai web-fetch --url "https://example.com" --format markdown
|
|
91
|
+
|
|
92
|
+
# From repo: run script directly (no install)
|
|
93
|
+
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --format markdown
|
|
94
|
+
node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --readability -f text
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**How to pass parameters**
|
|
98
|
+
|
|
99
|
+
| Parameter | CLI option | Example | Description |
|
|
100
|
+
|-----------|------------|---------|--------------|
|
|
101
|
+
| URL (required) | `-u`, `--url` | `--url "https://example.com"` | Page to fetch |
|
|
102
|
+
| Output format | `-f`, `--format` | `--format text` or `-f markdown` | `html`, `text`, or `markdown` (default: markdown) |
|
|
103
|
+
| Target element | `--target-selector` | `--target-selector "article.main"` | CSS selector; only this element is fetched |
|
|
104
|
+
| Wait for element | `--wait-for-selector` | `--wait-for-selector ".content"` | Wait for selector before fetching (e.g. dynamic pages) |
|
|
105
|
+
| Readability | `--readability` | `--readability` | Main article content only (no nav/ads) |
|
|
106
|
+
| Crawl mode | `--crawl-mode` | `--crawl-mode fine` | `fast` (default) or `fine` |
|
|
107
|
+
| Timeout (seconds) | `-t`, `--timeout` | `--timeout 120` or `-t 90` | Request timeout (default: 60) |
|
|
108
|
+
| Full JSON response | `-j`, `--json` | `-j` or `--json` | Print full API response instead of content only |
|
|
109
|
+
|
|
110
|
+
Examples with multiple options:
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
felo web-fetch -u "https://example.com" -f text --readability -t 90
|
|
114
|
+
felo web-fetch --url "https://example.com" --target-selector "#main" --wait-for-selector ".loaded" --format markdown --json
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
Same `FELO_API_KEY` as search/slides.
|
|
118
|
+
|
|
119
|
+
**YouTube subtitling** (after `npm install -g felo-ai`)
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# Packaged CLI
|
|
123
|
+
felo youtube-subtitling -v "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
124
|
+
felo youtube-subtitling -v "dQw4w9WgXcQ" --language zh-CN
|
|
125
|
+
felo youtube-subtitling -v "https://youtu.be/dQw4w9WgXcQ" --with-time -j
|
|
126
|
+
npx felo-ai youtube-subtitling -v "dQw4w9WgXcQ"
|
|
127
|
+
|
|
128
|
+
# From repo: run script directly (no install)
|
|
129
|
+
node felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs --video-code "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
|
|
130
|
+
node felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs -v "dQw4w9WgXcQ" -l zh-CN --with-time
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Options: `-v/--video-code` (required: **YouTube video URL** or video ID), `-l/--language` (e.g. en, zh-CN), `--with-time`, `-j/--json`. Same `FELO_API_KEY` as other commands. See [felo-youtube-subtitling](./felo-youtube-subtitling/README.md).
|
|
134
|
+
|
|
135
|
+
### CLI FAQ
|
|
136
|
+
|
|
137
|
+
- **Key not found?** Run `felo config set FELO_API_KEY <key>` or set the `FELO_API_KEY` environment variable.
|
|
138
|
+
- **Request timeout?** Use `felo search "query" --timeout 120` (default 60 seconds). 5xx errors are retried automatically with backoff.
|
|
139
|
+
- **Slides taking long?** Use `felo slides "topic" --poll-timeout 300` (default 1200s) to limit wait.
|
|
140
|
+
- **Where is config stored?** Run `felo config path` to see the file (e.g. `~/.felo/config.json`).
|
|
141
|
+
- **Web fetch after install?** Use `felo web-fetch --url "<page url>"`. Other params: `--format markdown|text|html`, `--readability`, `--target-selector "selector"`, `--wait-for-selector "selector"`, `--crawl-mode fast|fine`, `--timeout 120`, `--json`. See the "How to pass parameters" table above. Same API key as other commands.
|
|
142
|
+
- **YouTube subtitles?** Use `felo youtube-subtitling -v "<url or video_id>"` (full YouTube link or 11-char ID). Optional: `-l/--language`, `--with-time`, `-j/--json`. See [felo-youtube-subtitling](./felo-youtube-subtitling/README.md).
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
## Claude Code Skills (optional)
|
|
147
|
+
|
|
148
|
+
This repo also provides **Claude Code** skills. If you use [Claude Code](https://claude.ai/code), you can install search and/or slides as skills so Claude can run them in chat.
|
|
149
|
+
|
|
150
|
+
### Quick Start (Search skill)
|
|
151
|
+
|
|
152
|
+
Install the skill:
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
npx @claude/skills add felo-search
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
Get your API key from [felo.ai](https://felo.ai) (Settings → API Keys), then configure:
|
|
159
|
+
|
|
160
|
+
**Linux/macOS:**
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
export FELO_API_KEY="your-api-key-here"
|
|
164
|
+
# Add to ~/.bashrc or ~/.zshrc for persistence
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Windows (PowerShell):**
|
|
168
|
+
|
|
169
|
+
```powershell
|
|
170
|
+
$env:FELO_API_KEY="your-api-key-here"
|
|
171
|
+
# For persistence, add to system environment variables
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Test it:
|
|
175
|
+
|
|
176
|
+
```
|
|
177
|
+
Ask Claude: "What's the weather in Tokyo today?"
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
**You're done!** The skill triggers automatically for any question needing current information.
|
|
181
|
+
|
|
182
|
+
**Felo Slides (PPT):** In terminal run `felo slides "your topic"`. In Claude Code install with `npx @claude/skills add felo-slides`, then use `/felo-slides your topic`. See [felo-slides](./felo-slides/README.md).
|
|
183
|
+
|
|
184
|
+
**Felo Web Fetch:** In terminal run `felo web-fetch --url "https://example.com"` (see [felo-web-fetch](./felo-web-fetch/README.md)). In Claude Code you can install the skill and use it to fetch webpage content from a URL.
|
|
185
|
+
|
|
186
|
+
**Felo YouTube Subtitling:** In terminal run `felo youtube-subtitling -v "URL_or_VIDEO_ID"` (see [felo-youtube-subtitling](./felo-youtube-subtitling/README.md)). Fetches subtitles/captions; accepts full YouTube link or video ID.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Usage Examples
|
|
191
|
+
|
|
192
|
+
### Daily life
|
|
193
|
+
|
|
194
|
+
**Weather**
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
You: What's the weather in Tokyo today?
|
|
198
|
+
Claude: [Current temperature, conditions, forecast]
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
**Restaurants & food**
|
|
202
|
+
|
|
203
|
+
```
|
|
204
|
+
You: Best ramen in Osaka
|
|
205
|
+
Claude: [Top-rated ramen shops with addresses, ratings, reviews]
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**Shopping & prices**
|
|
209
|
+
|
|
210
|
+
```
|
|
211
|
+
You: iPhone 15 Pro price comparison
|
|
212
|
+
Claude: [Prices from different retailers with links]
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
**Travel**
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
You: Things to do in Kyoto this weekend
|
|
219
|
+
Claude: [Events, attractions, seasonal activities]
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
### Developer scenarios
|
|
223
|
+
|
|
224
|
+
**Latest documentation**
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
You: React 19 new features
|
|
228
|
+
Claude: [Latest React 19 features with official docs links]
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
**Library comparison**
|
|
232
|
+
|
|
233
|
+
```
|
|
234
|
+
You: Vite vs Webpack 2024 comparison
|
|
235
|
+
Claude: [Performance, features, use cases comparison]
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
**Tech trends**
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
You: Latest AI developments January 2026
|
|
242
|
+
Claude: [Recent AI breakthroughs, company announcements]
|
|
243
|
+
```
|
|
244
|
+
|
|
245
|
+
### Multi-language queries
|
|
246
|
+
|
|
247
|
+
Works in Chinese (Simplified & Traditional), Japanese, Korean, and English. Ask in any language, get answers in that language.
|
|
248
|
+
|
|
249
|
+
**[See 40+ more examples →](./docs/EXAMPLES.md)**
|
|
250
|
+
|
|
251
|
+
---
|
|
252
|
+
|
|
253
|
+
## Installation details
|
|
254
|
+
|
|
255
|
+
### Prerequisites
|
|
256
|
+
|
|
257
|
+
- [Claude Code](https://claude.ai/code) CLI installed
|
|
258
|
+
- Node.js (for npx)
|
|
259
|
+
- Internet connection
|
|
260
|
+
|
|
261
|
+
### Manual installation
|
|
262
|
+
|
|
263
|
+
If quick install doesn’t work:
|
|
264
|
+
|
|
265
|
+
1. Clone this repository:
|
|
266
|
+
|
|
267
|
+
```bash
|
|
268
|
+
git clone https://github.com/Felo-Inc/felo-skills.git
|
|
269
|
+
cd felo-skills
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
2. Copy to Claude Code skills directory:
|
|
273
|
+
|
|
274
|
+
- **Linux/macOS:** `~/.claude/skills/`
|
|
275
|
+
- **Windows:** `C:\Users\<YourUsername>\.claude\skills\`
|
|
276
|
+
|
|
277
|
+
```bash
|
|
278
|
+
# Linux/macOS
|
|
279
|
+
cp -r felo-search ~/.claude/skills/
|
|
280
|
+
|
|
281
|
+
# Windows (PowerShell)
|
|
282
|
+
Copy-Item -Recurse felo-search "$env:USERPROFILE\.claude\skills\"
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
3. Get API key from [felo.ai](https://felo.ai) (Settings → API Keys)
|
|
286
|
+
|
|
287
|
+
4. Set environment variable (see Quick Start)
|
|
288
|
+
|
|
289
|
+
5. Restart Claude Code: `claude restart`
|
|
290
|
+
|
|
291
|
+
### Verify installation
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
claude skills list
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
You should see `felo-search` in the output.
|
|
298
|
+
|
|
299
|
+
Test: ask Claude _"Latest news about quantum computing"_. If you see an AI-generated answer, it’s working.
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## FAQ
|
|
304
|
+
|
|
305
|
+
### Q: Skill not triggering automatically?
|
|
306
|
+
|
|
307
|
+
**A:** The skill triggers for questions needing current info (weather, news, prices, etc.). For manual trigger, use:
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
/felo-search your query here
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### Q: "FELO_API_KEY not set" error?
|
|
314
|
+
|
|
315
|
+
**A:** Set the environment variable (see Quick Start), then restart Claude Code.
|
|
316
|
+
|
|
317
|
+
### Q: Environment variable not persisting?
|
|
318
|
+
|
|
319
|
+
**A:** Add to your shell profile: **bash** `~/.bashrc`, **zsh** `~/.zshrc`, **Windows** system environment variables.
|
|
320
|
+
|
|
321
|
+
### Q: "INVALID_API_KEY" error?
|
|
322
|
+
|
|
323
|
+
**A:** Your API key is incorrect or revoked. Generate a new one at [felo.ai](https://felo.ai) (Settings → API Keys).
|
|
324
|
+
|
|
325
|
+
### Q: Does it work in Chinese/Japanese/Korean?
|
|
326
|
+
|
|
327
|
+
**A:** Yes. Multi-language queries are supported; ask in any language.
|
|
328
|
+
|
|
329
|
+
### Q: Rate limits?
|
|
330
|
+
|
|
331
|
+
**A:** Check your Felo account tier at [felo.ai](https://felo.ai). Free tier available.
|
|
332
|
+
|
|
333
|
+
### Q: Can I use it offline?
|
|
334
|
+
|
|
335
|
+
**A:** No, it requires an internet connection to the Felo API.
|
|
336
|
+
|
|
337
|
+
### Q: How fast are responses?
|
|
338
|
+
|
|
339
|
+
**A:** Typically 2–5 seconds depending on query complexity.
|
|
340
|
+
|
|
341
|
+
**[Full FAQ →](./docs/FAQ.md)**
|
|
342
|
+
|
|
343
|
+
---
|
|
344
|
+
|
|
345
|
+
## Available Skills
|
|
346
|
+
|
|
347
|
+
### felo-search
|
|
348
|
+
|
|
349
|
+
Real-time web search with AI-generated answers.
|
|
350
|
+
|
|
351
|
+
**Triggers automatically for:**
|
|
352
|
+
|
|
353
|
+
- Current events & news
|
|
354
|
+
- Weather, prices, reviews
|
|
355
|
+
- Location info (restaurants, attractions)
|
|
356
|
+
- Latest documentation & tech trends
|
|
357
|
+
- Product comparisons
|
|
358
|
+
- Any question with "latest", "recent", "best", "how to"
|
|
359
|
+
|
|
360
|
+
**[View skill documentation →](./felo-search/)**
|
|
361
|
+
|
|
362
|
+
### felo-slides
|
|
363
|
+
|
|
364
|
+
Generate PPT: in terminal use `felo slides "your topic"`, in Claude Code use `/felo-slides your topic`. **[View skill documentation →](./felo-slides/)**
|
|
365
|
+
|
|
366
|
+
### felo-web-fetch
|
|
367
|
+
|
|
368
|
+
Fetch and extract webpage content: in terminal use `felo web-fetch --url "https://example.com"`, in Claude Code use `/felo-web-fetch https://example.com`. **[View skill documentation →](./felo-web-fetch/)**
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## Contributing
|
|
373
|
+
|
|
374
|
+
We welcome contributions:
|
|
375
|
+
|
|
376
|
+
- Report bugs or request features
|
|
377
|
+
- Improve documentation
|
|
378
|
+
- Add new skills
|
|
379
|
+
|
|
380
|
+
Run CLI tests: `npm test`
|
|
381
|
+
|
|
382
|
+
**[Contributing guide →](./CONTRIBUTING.md)**
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## Links
|
|
387
|
+
|
|
388
|
+
- **[npm: felo-ai](https://www.npmjs.com/package/felo-ai)** — CLI package
|
|
389
|
+
- **[Felo Open Platform](https://openapi.felo.ai/docs/)** — Get your API key
|
|
390
|
+
- **[API Documentation](https://openapi.felo.ai/docs/api-reference/v2/chat.html)** — API reference
|
|
391
|
+
- **[Claude Code](https://claude.ai/code)** — AI assistant CLI
|
|
392
|
+
- **[Full examples](./docs/EXAMPLES.md)** — 40+ usage examples
|
|
393
|
+
- **[FAQ](./docs/FAQ.md)** — Troubleshooting
|
|
394
|
+
- **[GitHub Issues](https://github.com/Felo-Inc/felo-skills/issues)** — Report bugs
|
|
395
|
+
|
|
396
|
+
---
|
|
397
|
+
|
|
398
|
+
## Publishing to npm (maintainers)
|
|
399
|
+
|
|
400
|
+
自动发布由 GitHub Actions 在**推送 tag** 时执行(参考 [editablejs/editable](https://github.com/editablejs/editable/blob/main/.github/workflows/main.yml) 的流程思路)。
|
|
401
|
+
|
|
402
|
+
1. **配置 NPM_TOKEN**
|
|
403
|
+
在 [npm Access Tokens](https://www.npmjs.com/account/tokens) 创建 **Automation** 类型、具备 Publish 权限的 token,在仓库 **Settings → Secrets and variables → Actions** 里添加名为 `NPM_TOKEN` 的 secret。
|
|
404
|
+
|
|
405
|
+
2. **发布新版本**
|
|
406
|
+
更新 `package.json` 的 `version`,提交并推送,然后打 tag 并推送:
|
|
407
|
+
```bash
|
|
408
|
+
git tag v0.2.8
|
|
409
|
+
git push origin v0.2.8
|
|
410
|
+
```
|
|
411
|
+
CI 会跑测试并通过 `npm publish` 发布到 [npm](https://www.npmjs.com/package/felo-ai)。
|
|
412
|
+
|
|
413
|
+
---
|
|
414
|
+
|
|
415
|
+
## Support
|
|
416
|
+
|
|
417
|
+
- **Documentation**: [FAQ](./docs/FAQ.md) and skill READMEs
|
|
418
|
+
- **Issues**: [GitHub Issues](https://github.com/Felo-Inc/felo-skills/issues)
|
|
419
|
+
- **Email**: support@felo.ai
|
|
420
|
+
|
|
421
|
+
---
|
|
422
|
+
|
|
423
|
+
## Version history
|
|
424
|
+
|
|
425
|
+
See [CHANGELOG.md](./CHANGELOG.md) for release notes (e.g. breaking changes such as `web-extract` → `web-fetch` in v0.2.7).
|
|
426
|
+
|
|
427
|
+
---
|
|
428
|
+
|
|
429
|
+
## License
|
|
430
|
+
|
|
431
|
+
MIT — see [LICENSE](./felo-search/LICENSE) in the repo for details.
|
|
432
|
+
|
|
433
|
+
---
|
|
434
|
+
|
|
435
|
+
Made with ❤️ by the Felo team
|