felo-ai 0.2.11 → 0.2.12

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/CHANGELOG.md CHANGED
@@ -5,6 +5,10 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [0.2.12] - 2026-03-102
9
+
10
+ Streamline the process and reduce the need for confirmation and selection.
11
+
8
12
  ## [0.2.10] - 2026-03-10
9
13
 
10
14
  ### Fixed
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  **Ask anything. Get current answers. Generate slides from a prompt.**
4
4
 
5
- [npm package: **felo-ai**](https://www.npmjs.com/package/felo-ai) Real-time search, PPT generation, web page extraction, YouTube subtitles, and X (Twitter) search from the terminal. Also works as Claude Code skills. Supports Chinese, English, Japanese, and Korean.
5
+ [npm package: **felo-ai**](https://www.npmjs.com/package/felo-ai) - Real-time search, PPT generation, web page extraction, YouTube subtitles, and X (Twitter) search from the terminal. Also works as Claude Code skills. Supports Chinese, English, Japanese, and Korean.
6
6
 
7
7
  [![npm version](https://img.shields.io/npm/v/felo-ai.svg)](https://www.npmjs.com/package/felo-ai) [![License](https://img.shields.io/badge/license-MIT-green)]()
8
8
 
@@ -43,21 +43,21 @@ export FELO_API_KEY="your-api-key-here"
43
43
  $env:FELO_API_KEY="your-api-key-here"
44
44
  ```
45
45
 
46
- Get your API key from [felo.ai](https://felo.ai) (Settings API Keys). Environment variable overrides config if both are set.
46
+ Get your API key from [felo.ai](https://felo.ai) (Settings > API Keys). Environment variable overrides config if both are set.
47
47
 
48
48
  ### Commands
49
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 x "<query>"` | Search X (Twitter) tweets, users, and replies |
57
- | `felo config set FELO_API_KEY <key>` | Save API key to config |
58
- | `felo config get FELO_API_KEY` | Print stored key |
59
- | `felo config list` | List config keys |
60
- | `felo config path` | Show config file path |
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 x "<query>"` | Search X (Twitter) tweets, users, and replies |
57
+ | `felo config set FELO_API_KEY <key>` | Save API key to config |
58
+ | `felo config get FELO_API_KEY` | Print stored key |
59
+ | `felo config list` | List config keys |
60
+ | `felo config path` | Show config file path |
61
61
 
62
62
  ### Examples
63
63
 
@@ -97,16 +97,16 @@ node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --read
97
97
 
98
98
  **How to pass parameters**
99
99
 
100
- | Parameter | CLI option | Example | Description |
101
- |-----------|------------|---------|--------------|
102
- | URL (required) | `-u`, `--url` | `--url "https://example.com"` | Page to fetch |
103
- | Output format | `-f`, `--format` | `--format text` or `-f markdown` | `html`, `text`, or `markdown` (default: markdown) |
104
- | Target element | `--target-selector` | `--target-selector "article.main"` | CSS selector; only this element is fetched |
105
- | Wait for element | `--wait-for-selector` | `--wait-for-selector ".content"` | Wait for selector before fetching (e.g. dynamic pages) |
106
- | Readability | `--readability` | `--readability` | Main article content only (no nav/ads) |
107
- | Crawl mode | `--crawl-mode` | `--crawl-mode fine` | `fast` (default) or `fine` |
108
- | Timeout (seconds) | `-t`, `--timeout` | `--timeout 120` or `-t 90` | Request timeout (default: 60) |
109
- | Full JSON response | `-j`, `--json` | `-j` or `--json` | Print full API response instead of content only |
100
+ | Parameter | CLI option | Example | Description |
101
+ | ------------------ | --------------------- | ---------------------------------- | ------------------------------------------------------ |
102
+ | URL (required) | `-u`, `--url` | `--url "https://example.com"` | Page to fetch |
103
+ | Output format | `-f`, `--format` | `--format text` or `-f markdown` | `html`, `text`, or `markdown` (default: markdown) |
104
+ | Target element | `--target-selector` | `--target-selector "article.main"` | CSS selector; only this element is fetched |
105
+ | Wait for element | `--wait-for-selector` | `--wait-for-selector ".content"` | Wait for selector before fetching (e.g. dynamic pages) |
106
+ | Readability | `--readability` | `--readability` | Main article content only (no nav/ads) |
107
+ | Crawl mode | `--crawl-mode` | `--crawl-mode fine` | `fast` (default) or `fine` |
108
+ | Timeout (seconds) | `-t`, `--timeout` | `--timeout 120` or `-t 90` | Request timeout (default: 60) |
109
+ | Full JSON response | `-j`, `--json` | `-j` or `--json` | Print full API response instead of content only |
110
110
 
111
111
  Examples with multiple options:
112
112
 
@@ -177,13 +177,31 @@ This repo also provides **Claude Code** skills. If you use [Claude Code](https:/
177
177
 
178
178
  ### Quick Start (Search skill)
179
179
 
180
- Install the skill:
180
+ **Quick Start**: Using the npm [skills](https://www.npmjs.com/package/skills) CLI:
181
181
 
182
182
  ```bash
183
- npx @claude/skills add felo-search
183
+ npx skills add Felo-Inc/felo-skills --skill felo-search
184
184
  ```
185
185
 
186
- Get your API key from [felo.ai](https://felo.ai) (Settings → API Keys), then configure:
186
+ Or manually copy to the skills directory:
187
+
188
+ **Linux/macOS:**
189
+
190
+ ```bash
191
+ git clone https://github.com/Felo-Inc/felo-skills.git && cd felo-skills
192
+ cp -r felo-search ~/.claude/skills/
193
+ ```
194
+
195
+ **Windows (PowerShell):**
196
+
197
+ ```powershell
198
+ git clone https://github.com/Felo-Inc/felo-skills.git; cd felo-skills
199
+ Copy-Item -Recurse felo-search "$env:USERPROFILE\.claude\skills\"
200
+ ```
201
+
202
+ See [Manual installation](#manual-installation) for details.
203
+
204
+ Get your API key from [felo.ai](https://felo.ai) (Settings > API Keys), then configure:
187
205
 
188
206
  **Linux/macOS:**
189
207
 
@@ -207,7 +225,7 @@ Ask Claude: "What's the weather in Tokyo today?"
207
225
 
208
226
  **You're done!** The skill triggers automatically for any question needing current information.
209
227
 
210
- **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).
228
+ **Felo Slides (PPT):** In terminal run `felo slides "your topic"`. In Claude Code install with `npx skills add Felo-Inc/felo-skills --skill felo-slides`, then use `/felo-slides your topic`. See [felo-slides](./felo-slides/README.md).
211
229
 
212
230
  **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.
213
231
 
@@ -276,7 +294,7 @@ Claude: [Recent AI breakthroughs, company announcements]
276
294
 
277
295
  Works in Chinese (Simplified & Traditional), Japanese, Korean, and English. Ask in any language, get answers in that language.
278
296
 
279
- **[See 40+ more examples ](./docs/EXAMPLES.md)**
297
+ **[See 40+ more examples >](./docs/EXAMPLES.md)**
280
298
 
281
299
  ---
282
300
 
@@ -290,7 +308,7 @@ Works in Chinese (Simplified & Traditional), Japanese, Korean, and English. Ask
290
308
 
291
309
  ### Manual installation
292
310
 
293
- If quick install doesn’t work:
311
+ If you don't want to use `npx skills add` or don't have the skills CLI, you can install it manually:
294
312
 
295
313
  1. Clone this repository:
296
314
 
@@ -312,7 +330,7 @@ If quick install doesn’t work:
312
330
  Copy-Item -Recurse felo-search "$env:USERPROFILE\.claude\skills\"
313
331
  ```
314
332
 
315
- 3. Get API key from [felo.ai](https://felo.ai) (Settings API Keys)
333
+ 3. Get API key from [felo.ai](https://felo.ai) (Settings > API Keys)
316
334
 
317
335
  4. Set environment variable (see Quick Start)
318
336
 
@@ -326,7 +344,7 @@ claude skills list
326
344
 
327
345
  You should see `felo-search` in the output.
328
346
 
329
- Test: ask Claude _"Latest news about quantum computing"_. If you see an AI-generated answer, its working.
347
+ Test: ask Claude _"Latest news about quantum computing"_. If you see an AI-generated answer, it's working.
330
348
 
331
349
  ---
332
350
 
@@ -350,7 +368,7 @@ Test: ask Claude _"Latest news about quantum computing"_. If you see an AI-gener
350
368
 
351
369
  ### Q: "INVALID_API_KEY" error?
352
370
 
353
- **A:** Your API key is incorrect or revoked. Generate a new one at [felo.ai](https://felo.ai) (Settings API Keys).
371
+ **A:** Your API key is incorrect or revoked. Generate a new one at [felo.ai](https://felo.ai) (Settings > API Keys).
354
372
 
355
373
  ### Q: Does it work in Chinese/Japanese/Korean?
356
374
 
@@ -366,9 +384,9 @@ Test: ask Claude _"Latest news about quantum computing"_. If you see an AI-gener
366
384
 
367
385
  ### Q: How fast are responses?
368
386
 
369
- **A:** Typically 25 seconds depending on query complexity.
387
+ **A:** Typically 2-5 seconds depending on query complexity.
370
388
 
371
- **[Full FAQ ](./docs/FAQ.md)**
389
+ **[Full FAQ >](./docs/FAQ.md)**
372
390
 
373
391
  ---
374
392
 
@@ -387,19 +405,19 @@ Real-time web search with AI-generated answers.
387
405
  - Product comparisons
388
406
  - Any question with "latest", "recent", "best", "how to"
389
407
 
390
- **[View skill documentation ](./felo-search/)**
408
+ **[View skill documentation >](./felo-search/)**
391
409
 
392
410
  ### felo-slides
393
411
 
394
- Generate PPT: in terminal use `felo slides "your topic"`, in Claude Code use `/felo-slides your topic`. **[View skill documentation ](./felo-slides/)**
412
+ Generate PPT: in terminal use `felo slides "your topic"`, in Claude Code use `/felo-slides your topic`. **[View skill documentation >](./felo-slides/)**
395
413
 
396
414
  ### felo-web-fetch
397
415
 
398
- 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/)**
416
+ 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/)**
399
417
 
400
418
  ### felo-x-search
401
419
 
402
- Search X (Twitter) tweets, users, and replies: in terminal use `felo x "query"`, in Claude Code use `/felo-x-search query`. **[View skill documentation ](./felo-x-search/SKILL.md)**
420
+ Search X (Twitter) tweets, users, and replies: in terminal use `felo x "query"`, in Claude Code use `/felo-x-search query`. **[View skill documentation >](./felo-x-search/SKILL.md)**
403
421
 
404
422
  ---
405
423
 
@@ -413,36 +431,36 @@ We welcome contributions:
413
431
 
414
432
  Run CLI tests: `npm test`
415
433
 
416
- **[Contributing guide ](./CONTRIBUTING.md)**
434
+ **[Contributing guide >](./CONTRIBUTING.md)**
417
435
 
418
436
  ---
419
437
 
420
438
  ## Links
421
439
 
422
- - **[npm: felo-ai](https://www.npmjs.com/package/felo-ai)** CLI package
423
- - **[Felo Open Platform](https://openapi.felo.ai/docs/)** Get your API key
424
- - **[API Documentation](https://openapi.felo.ai/docs/api-reference/v2/chat.html)** API reference
425
- - **[Claude Code](https://claude.ai/code)** AI assistant CLI
426
- - **[Full examples](./docs/EXAMPLES.md)** 40+ usage examples
427
- - **[FAQ](./docs/FAQ.md)** Troubleshooting
428
- - **[GitHub Issues](https://github.com/Felo-Inc/felo-skills/issues)** Report bugs
440
+ - **[npm: felo-ai](https://www.npmjs.com/package/felo-ai)** - CLI package
441
+ - **[Felo Open Platform](https://openapi.felo.ai/docs/)** - Get your API key
442
+ - **[API Documentation](https://openapi.felo.ai/docs/api-reference/v2/chat.html)** - API reference
443
+ - **[Claude Code](https://claude.ai/code)** - AI assistant CLI
444
+ - **[Full examples](./docs/EXAMPLES.md)** - 40+ usage examples
445
+ - **[FAQ](./docs/FAQ.md)** - Troubleshooting
446
+ - **[GitHub Issues](https://github.com/Felo-Inc/felo-skills/issues)** - Report bugs
429
447
 
430
448
  ---
431
449
 
432
450
  ## Publishing to npm (maintainers)
433
451
 
434
- 自动发布由 GitHub Actions 在**推送 tag** 时执行(参考 [editablejs/editable](https://github.com/editablejs/editable/blob/main/.github/workflows/main.yml) 的流程思路)。
452
+ This project uses GitHub Actions to automatically publish when **pushing a tag** (referencing the [editablejs/editable](https://github.com/editablejs/editable/blob/main/.github/workflows/main.yml) publishing workflow).
435
453
 
436
- 1. **配置 NPM_TOKEN**
437
- [npm Access Tokens](https://www.npmjs.com/account/tokens) 创建 **Automation** 类型、具备 Publish 权限的 token,在仓库 **Settings Secrets and variables Actions** 里添加名为 `NPM_TOKEN` 的 secret。
454
+ 1. **Configure NPM_TOKEN**
455
+ Generate an **Automation** type Publish token in [npm Access Tokens](https://www.npmjs.com/account/tokens). Add a secret named `NPM_TOKEN` in the repository's **Settings > Secrets and variables > Actions**.
438
456
 
439
- 2. **发布新版本**
440
- 更新 `package.json` `version`,提交并推送,然后打 tag 并推送:
457
+ 2. **Publish a new version**
458
+ Update the `version` in `package.json`, then commit and push the tag:
441
459
  ```bash
442
460
  git tag v0.2.8
443
461
  git push origin v0.2.8
444
462
  ```
445
- CI 会跑测试并通过 `npm publish` 发布到 [npm](https://www.npmjs.com/package/felo-ai)
463
+ CI will automatically run `npm publish` to publish to [npm](https://www.npmjs.com/package/felo-ai).
446
464
 
447
465
  ---
448
466
 
@@ -456,13 +474,13 @@ Run CLI tests: `npm test`
456
474
 
457
475
  ## Version history
458
476
 
459
- See [CHANGELOG.md](./CHANGELOG.md) for release notes (e.g. breaking changes such as `web-extract` `web-fetch` in v0.2.7).
477
+ See [CHANGELOG.md](./CHANGELOG.md) for release notes (e.g. breaking changes such as `web-extract` -> `web-fetch` in v0.2.7).
460
478
 
461
479
  ---
462
480
 
463
481
  ## License
464
482
 
465
- MIT see [LICENSE](./felo-search/LICENSE) in the repo for details.
483
+ MIT - see [LICENSE](./felo-search/LICENSE) in the repo for details.
466
484
 
467
485
  ---
468
486
 
package/docs/FAQ.md CHANGED
@@ -18,21 +18,25 @@ Quick answers to common questions about Felo Search skill.
18
18
 
19
19
  **A:** Install Node.js first.
20
20
 
21
- Download from [nodejs.org](https://nodejs.org) and install. Then retry:
21
+ Download from [nodejs.org](https://nodejs.org) and install. 然后可用一键安装:
22
+
22
23
  ```bash
23
- npx @claude/skills add felo-search
24
+ npx skills add Felo-Inc/felo-skills --skill felo-search
24
25
  ```
25
26
 
27
+ 若失败,请使用 [README 中的手动安装](https://github.com/Felo-Inc/felo-skills#manual-installation):将 `felo-search` 复制到 `~/.claude/skills/`(Windows: `%USERPROFILE%\.claude\skills\`)。
28
+
26
29
  ### Q: Permission denied during install
27
30
 
28
- **A:** Use elevated privileges.
31
+ **A:** 若复制目录时权限不足,可用一键安装(无需 sudo):
29
32
 
30
- **Linux/macOS:**
31
33
  ```bash
32
- sudo npx @claude/skills add felo-search
34
+ npx skills add Felo-Inc/felo-skills --skill felo-search
33
35
  ```
34
36
 
35
- **Windows:** Run PowerShell or CMD as Administrator.
37
+ **Linux/macOS 手动复制:** 确保 `~/.claude/skills/` 存在且有写权限后执行 `cp -r felo-search ~/.claude/skills/`。
38
+
39
+ **Windows:** 若复制到 `%USERPROFILE%\.claude\skills\` 失败,请以管理员身份运行 PowerShell。
36
40
 
37
41
  ### Q: Skill not showing up after install
38
42
 
@@ -32,10 +32,26 @@ Felo Search integrates [Felo AI](https://felo.ai) into Claude Code, enabling:
32
32
 
33
33
  ### Step 1: Install
34
34
 
35
+ **一键安装(推荐):**
36
+
37
+ ```bash
38
+ npx skills add Felo-Inc/felo-skills --skill felo-search
39
+ ```
40
+
41
+ **手动安装:** 若上述命令不可用,可克隆本仓库后将 `felo-search` 复制到 Claude Code 的 skills 目录:
42
+
43
+ **Linux/macOS:**
35
44
  ```bash
36
- npx @claude/skills add felo-search
45
+ cp -r felo-search ~/.claude/skills/
37
46
  ```
38
47
 
48
+ **Windows (PowerShell):**
49
+ ```powershell
50
+ Copy-Item -Recurse felo-search "$env:USERPROFILE\.claude\skills\"
51
+ ```
52
+
53
+ (Clone this repo first if needed: `git clone https://github.com/Felo-Inc/felo-skills.git`.)
54
+
39
55
  **Verify:** Restart Claude Code and run:
40
56
  ```bash
41
57
  claude skills list
@@ -64,48 +64,18 @@ For permanent configuration, add it to your shell profile (~/.bashrc, ~/.zshrc)
64
64
 
65
65
  ## How to Execute
66
66
 
67
- When this skill is triggered, execute the following steps using the Bash tool:
68
-
69
- ### Step 1: Check API Key
70
-
71
- Use the Bash tool to verify the API key is set:
72
-
73
- ```bash
74
- if [ -z "$FELO_API_KEY" ]; then
75
- echo "ERROR: FELO_API_KEY not set"
76
- exit 1
77
- fi
78
- echo "API key configured"
79
- ```
80
-
81
- If the API key is not set, inform the user with setup instructions and STOP.
82
-
83
- ### Step 2: Make API Request
84
-
85
- Extract the user's query and call the Felo API using a temporary JSON file to handle special characters:
67
+ When this skill is triggered, execute the search script using the Bash tool:
86
68
 
87
69
  ```bash
88
- # Create query JSON (replace USER_QUERY with actual query)
89
- cat > /tmp/felo_query.json << 'EOF'
90
- {"query": "USER_QUERY_HERE"}
91
- EOF
92
-
93
- # Call Felo API
94
- curl -s -X POST https://openapi.felo.ai/v2/chat \
95
- -H "Authorization: Bearer $FELO_API_KEY" \
96
- -H "Content-Type: application/json" \
97
- -d @/tmp/felo_query.json
98
-
99
- # Clean up
100
- rm -f /tmp/felo_query.json
70
+ ~/.agents/skills/felo-search/scripts/search.sh "USER_QUERY_HERE"
101
71
  ```
102
72
 
103
73
  **Notes:**
104
74
  - Replace `USER_QUERY_HERE` with the actual user query
105
- - Use heredoc (`cat > file << 'EOF'`) to properly handle Chinese, Japanese, and special characters
106
- - Use `-s` flag with curl for clean output
75
+ - The script handles API key validation, JSON escaping, and API calls
76
+ - Supports all special characters, Unicode (Chinese, Japanese, etc.), and quotes
107
77
 
108
- ### Step 3: Parse and Format Response
78
+ ### Parse and Format Response
109
79
 
110
80
  The API returns JSON with this structure:
111
81
  ```json
@@ -115,7 +85,7 @@ The API returns JSON with this structure:
115
85
  }
116
86
  ```
117
87
 
118
- Parse the JSON response and present it to the user in this format:
88
+ Present the response to the user in this format:
119
89
 
120
90
  ```
121
91
  ## Answer
@@ -144,16 +114,7 @@ Optimized search terms: Tokyo weather today, 東京 天気 今日
144
114
 
145
115
  **Bash command:**
146
116
  ```bash
147
- cat > /tmp/felo_query.json << 'EOF'
148
- {"query": "What's the weather in Tokyo today?"}
149
- EOF
150
-
151
- curl -s -X POST https://openapi.felo.ai/v2/chat \
152
- -H "Authorization: Bearer $FELO_API_KEY" \
153
- -H "Content-Type: application/json" \
154
- -d @/tmp/felo_query.json
155
-
156
- rm -f /tmp/felo_query.json
117
+ ~/.agents/skills/felo-search/scripts/search.sh "What's the weather in Tokyo today?"
157
118
  ```
158
119
 
159
120
  ### Example 2: Local news / events
@@ -171,16 +132,7 @@ Optimized search terms: Hangzhou recent news, Hangzhou events, 杭州 最近 新
171
132
 
172
133
  **Bash command:**
173
134
  ```bash
174
- cat > /tmp/felo_query.json << 'EOF'
175
- {"query": "What's new in Hangzhou recently"}
176
- EOF
177
-
178
- curl -s -X POST https://openapi.felo.ai/v2/chat \
179
- -H "Authorization: Bearer $FELO_API_KEY" \
180
- -H "Content-Type: application/json" \
181
- -d @/tmp/felo_query.json
182
-
183
- rm -f /tmp/felo_query.json
135
+ ~/.agents/skills/felo-search/scripts/search.sh "What's new in Hangzhou recently"
184
136
  ```
185
137
 
186
138
  ### Example 3: Travel / things to do
@@ -189,16 +141,7 @@ rm -f /tmp/felo_query.json
189
141
 
190
142
  **Bash command:**
191
143
  ```bash
192
- cat > /tmp/felo_query.json << 'EOF'
193
- {"query": "What are the best things to do in Taipei"}
194
- EOF
195
-
196
- curl -s -X POST https://openapi.felo.ai/v2/chat \
197
- -H "Authorization: Bearer $FELO_API_KEY" \
198
- -H "Content-Type: application/json" \
199
- -d @/tmp/felo_query.json
200
-
201
- rm -f /tmp/felo_query.json
144
+ ~/.agents/skills/felo-search/scripts/search.sh "What are the best things to do in Taipei"
202
145
  ```
203
146
 
204
147
  ### Example 4: Restaurants / recommendations
@@ -207,16 +150,7 @@ rm -f /tmp/felo_query.json
207
150
 
208
151
  **Bash command:**
209
152
  ```bash
210
- cat > /tmp/felo_query.json << 'EOF'
211
- {"query": "Popular restaurants in Tokyo"}
212
- EOF
213
-
214
- curl -s -X POST https://openapi.felo.ai/v2/chat \
215
- -H "Authorization: Bearer $FELO_API_KEY" \
216
- -H "Content-Type: application/json" \
217
- -d @/tmp/felo_query.json
218
-
219
- rm -f /tmp/felo_query.json
153
+ ~/.agents/skills/felo-search/scripts/search.sh "Popular restaurants in Tokyo"
220
154
  ```
221
155
 
222
156
  ## Error Handling
@@ -279,7 +213,7 @@ To use this skill, you need to set up your Felo API Key:
279
213
  - This skill should be used for any question requiring current information
280
214
  - Execute immediately using the Bash tool - don't just describe what you would do
281
215
  - Multi-language support: Fully supports Simplified Chinese, Traditional Chinese (Taiwan), Japanese, and English
282
- - Handle special characters properly: Use heredoc for JSON files to avoid encoding issues
216
+ - Handle special characters properly: Use the search script which handles JSON escaping via sed
283
217
  - Parse JSON response: Extract answer and query_analysis fields
284
218
  - Format nicely: Present results in a clean, readable format with proper markdown
285
219
  - The API returns results in the same language as the query when possible
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ set -e
3
+
4
+ # Cross-platform compatibility
5
+ if ! command -v curl &> /dev/null; then
6
+ echo "ERROR: curl is required but not installed"
7
+ exit 1
8
+ fi
9
+
10
+ # Check if API key is set
11
+ if [ -z "$FELO_API_KEY" ]; then
12
+ echo "ERROR: FELO_API_KEY not set"
13
+ echo ""
14
+ echo "To use this skill, you need to set up your Felo API Key:"
15
+ echo ""
16
+ echo "1. Get your API key from https://felo.ai (Settings → API Keys)"
17
+ echo "2. Set the environment variable:"
18
+ echo ""
19
+ echo " Linux/macOS/WSL:"
20
+ echo " export FELO_API_KEY=\"your-api-key-here\""
21
+ echo ""
22
+ echo " Windows (PowerShell):"
23
+ echo " \$env:FELO_API_KEY=\"your-api-key-here\""
24
+ echo ""
25
+ echo " Windows (CMD):"
26
+ echo " set FELO_API_KEY=your-api-key-here"
27
+ echo ""
28
+ echo "3. Restart Claude Code or reload the environment"
29
+ exit 1
30
+ fi
31
+
32
+ # Get query from first argument
33
+ QUERY="$1"
34
+
35
+ if [ -z "$QUERY" ]; then
36
+ echo "ERROR: No query provided"
37
+ echo "Usage: search.sh \"your search query\""
38
+ exit 1
39
+ fi
40
+
41
+ # Escape JSON string: replace backslash, then quotes, then control chars
42
+ # Compatible with sed on Linux, macOS, and Windows (Git Bash/WSL)
43
+ ESCAPED_QUERY=$(printf '%s\n' "$QUERY" | sed 's/\\/\\\\/g; s/"/\\"/g; s/ /\\t/g')
44
+
45
+ # Call Felo API
46
+ curl -s -X POST https://openapi.felo.ai/v2/chat \
47
+ -H "Authorization: Bearer $FELO_API_KEY" \
48
+ -H "Content-Type: application/json" \
49
+ -d "{\"query\": \"$ESCAPED_QUERY\"}"
@@ -13,11 +13,13 @@ Generate presentation slides with the Felo PPT Task API (asynchronous workflow).
13
13
 
14
14
  ### 1) Install the skill
15
15
 
16
+ **一键安装(推荐):**
17
+
16
18
  ```bash
17
- npx @claude/skills add felo-slides
19
+ npx skills add Felo-Inc/felo-skills --skill felo-slides
18
20
  ```
19
21
 
20
- Or install manually from this repository:
22
+ **手动安装:** 若上述命令不可用,从本仓库复制到 Claude Code skills 目录:
21
23
 
22
24
  ```bash
23
25
  # Linux/macOS
@@ -27,6 +29,8 @@ cp -r felo-slides ~/.claude/skills/
27
29
  Copy-Item -Recurse felo-slides "$env:USERPROFILE\.claude\skills\"
28
30
  ```
29
31
 
32
+ (Clone the repo first if needed: `git clone https://github.com/Felo-Inc/felo-skills.git`.)
33
+
30
34
  ### 2) Configure API key
31
35
 
32
36
  Create an API key at [felo.ai](https://felo.ai) -> Settings -> API Keys, then set:
@@ -31,8 +31,20 @@
31
31
 
32
32
  ### 1. 安装
33
33
 
34
+ **一键安装(推荐):**
35
+
34
36
  ```bash
35
- npx @claude/skills add felo-superAgent
37
+ npx skills add Felo-Inc/felo-skills --skill felo-superAgent
38
+ ```
39
+
40
+ **手动安装:** 若上述命令不可用,从本仓库复制到 Claude Code 的 skills 目录:
41
+
42
+ ```bash
43
+ # Linux/macOS
44
+ cp -r felo-superAgent ~/.claude/skills/
45
+
46
+ # Windows (PowerShell)
47
+ Copy-Item -Recurse felo-superAgent "$env:USERPROFILE\.claude\skills\"
36
48
  ```
37
49
 
38
50
  (若为本地 skill,确保 Cursor/Claude Code 已配置该 skill 路径。)
@@ -15,11 +15,13 @@ Extract structured webpage content from URLs with the Felo Web Extract API.
15
15
 
16
16
  ### 1) Install the skill
17
17
 
18
+ **一键安装(推荐):**
19
+
18
20
  ```bash
19
- npx @claude/skills add felo-web-fetch
21
+ npx skills add Felo-Inc/felo-skills --skill felo-web-fetch
20
22
  ```
21
23
 
22
- Or install manually from this repository:
24
+ **手动安装:** 若上述命令不可用,从本仓库复制到 Claude Code skills 目录:
23
25
 
24
26
  ```bash
25
27
  # Linux/macOS
@@ -29,6 +31,8 @@ cp -r felo-web-fetch ~/.claude/skills/
29
31
  Copy-Item -Recurse felo-web-fetch "$env:USERPROFILE\.claude\skills\"
30
32
  ```
31
33
 
34
+ (Clone the repo first if needed: `git clone https://github.com/Felo-Inc/felo-skills.git`.)
35
+
32
36
  ### 2) Configure API key
33
37
 
34
38
  Create API key at [felo.ai](https://felo.ai) -> Settings -> API Keys, then set:
@@ -0,0 +1,12 @@
1
+ {
2
+ "name": "Felo X Search",
3
+ "tagline": "Search X (Twitter) users, tweets, and replies via Felo API in Claude Code",
4
+ "description": "Felo X Search lets you look up X (Twitter) user profiles, search users and tweets, fetch user timelines, and get tweet replies directly from Claude Code. Uses the Felo Open API; requires a Felo API key. Supports user lookup, user search, user tweets, tweet search, and tweet replies with readable Markdown or raw JSON output.",
5
+ "category": "data",
6
+ "tags": ["twitter", "x", "search", "social", "felo", "api"],
7
+ "version": "1.0.0",
8
+ "license": "MIT",
9
+ "pricing": "free",
10
+ "support_url": "https://github.com/Felo-Inc/felo-skills/issues",
11
+ "homepage": "https://github.com/Felo-Inc/felo-skills"
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "felo-ai",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "description": "Felo AI CLI - real-time search, PPT generation, web fetch, and YouTube subtitles from the terminal",
5
5
  "type": "module",
6
6
  "main": "src/cli.js",
@@ -32,6 +32,7 @@
32
32
  "felo-search": "^0.1.1"
33
33
  },
34
34
  "scripts": {
35
- "test": "node --test tests/"
35
+ "test": "node --test tests/",
36
+ "publish": "npm publish"
36
37
  }
37
- }
38
+ }
@@ -0,0 +1,44 @@
1
+ #!/usr/bin/env bash
2
+ # Install felo-skills into OpenClaw's workspace skills directory
3
+ # Usage: ./scripts/openclaw-install.sh [--dry-run]
4
+
5
+ set -euo pipefail
6
+
7
+ SKILLS_DIR="${HOME}/.openclaw/workspace/skills"
8
+ REPO_DIR="$(cd "$(dirname "$0")/.." && pwd)"
9
+ DRY_RUN=false
10
+
11
+ [[ "${1:-}" == "--dry-run" ]] && DRY_RUN=true
12
+
13
+ # Find all SKILL.md files and install each skill
14
+ installed=0
15
+ skipped=0
16
+
17
+ while IFS= read -r skill_md; do
18
+ skill_dir="$(dirname "$skill_md")"
19
+ skill_name="$(basename "$skill_dir")"
20
+ target="${SKILLS_DIR}/${skill_name}"
21
+
22
+ if [[ -e "$target" ]]; then
23
+ skipped=$((skipped + 1))
24
+ continue
25
+ fi
26
+
27
+ if $DRY_RUN; then
28
+ echo " [dry-run] would install: $skill_name"
29
+ else
30
+ mkdir -p "$SKILLS_DIR"
31
+ ln -sf "$skill_dir" "$target"
32
+ echo " ✅ installed: $skill_name"
33
+ fi
34
+ installed=$((installed + 1))
35
+ done < <(find "$REPO_DIR" -name "SKILL.md" -not -path "*/.git/*")
36
+
37
+ if $DRY_RUN; then
38
+ echo ""
39
+ echo "Dry run complete. Would install $installed skill(s). ($skipped already exist)"
40
+ else
41
+ echo ""
42
+ echo "Done. Installed $installed skill(s). ($skipped already existed)"
43
+ echo "Restart OpenClaw (openclaw gateway restart) to pick up new skills."
44
+ fi
package/README.en.md DELETED
@@ -1,129 +0,0 @@
1
- # Felo AI
2
-
3
- **Ask anything. Get current answers powered by AI.**
4
-
5
- Felo AI provides a terminal CLI and Claude Code skill, with support for English, Chinese (Simplified & Traditional), Japanese, and Korean.
6
-
7
- [![License](https://img.shields.io/badge/license-MIT-green)]()
8
-
9
- ---
10
-
11
- ## Capabilities
12
-
13
- Felo AI offers **Real-time Search**, **PPT Generation**, **Web Fetch**, and **YouTube Subtitles**. Use them via the CLI in your terminal, or in Claude Code via skills (search can trigger automatically).
14
-
15
- ### Capability 1: Real-time Search
16
-
17
- Search the web for up-to-date information and get AI-synthesized answers. Ideal for weather, news, prices, documentation, tech updates, and any question that needs “right now” information.
18
-
19
- - **Multi-language**: Ask in your preferred language.
20
- - **Terminal**: `felo search "your question"`
21
- - **Claude Code**: After installing the skill, it triggers automatically, or type `/felo-ai your question`
22
- - **Examples**: `felo search "Tokyo weather"`, `felo search "React 19 new features" --verbose`
23
-
24
- ### Capability 2: Generate PPT (Felo Slides)
25
-
26
- Terminal: `felo slides "your topic"`. In Claude Code: install `npx @claude/skills add felo-slides`, then `/felo-slides your topic`. You get an online document link when done. Examples: `felo slides "Felo product intro, 3 slides"`, `felo slides "Introduction to React"`.
27
-
28
- ---
29
-
30
- ## Install & Configure
31
-
32
- ### Install CLI
33
-
34
- ```bash
35
- npm install -g felo-ai
36
- ```
37
-
38
- Run without installing: `npx felo-ai search "Tokyo weather"`
39
- After install, the command is `felo`.
40
-
41
- ### Configure API Key
42
-
43
- Recommended (persisted):
44
-
45
- ```bash
46
- felo config set FELO_API_KEY your-api-key-here
47
- ```
48
-
49
- Or set the environment variable: `export FELO_API_KEY="your-api-key-here"` (Linux/macOS), `$env:FELO_API_KEY="your-api-key-here"` (Windows PowerShell).
50
-
51
- Get your API key at [felo.ai](https://felo.ai) (Settings → API Keys).
52
-
53
- ### Commands
54
-
55
- | Command | Description |
56
- |---------|-------------|
57
- | `felo search "<query>"` | Real-time search |
58
- | `felo slides "<prompt>"` | Generate PPT |
59
- | `felo web-fetch --url <url>` | Fetch webpage content (markdown/text/html) |
60
- | `felo youtube-subtitling -v <url-or-id>` | Fetch YouTube video subtitles |
61
- | `felo config set FELO_API_KEY <key>` | Save API key |
62
- | `felo config get/list/path/unset` | View / list / path / remove config |
63
-
64
- ### Examples
65
-
66
- **Search**
67
-
68
- ```bash
69
- felo search "Tokyo weather"
70
- felo search "MacBook Air M3 price"
71
- felo search "React 19 new features" --verbose
72
- npx felo-ai search "Tokyo weather"
73
- ```
74
-
75
- **Slides**
76
-
77
- ```bash
78
- felo slides "Felo product intro, 3 slides"
79
- felo slides "Introduction to React"
80
- felo slides "Q4 2024 business review, 10 pages" --poll-timeout 300
81
- npx felo-ai slides "Tokyo travel guide, 5 slides"
82
- ```
83
-
84
- **Web fetch**
85
-
86
- ```bash
87
- felo web-fetch --url "https://example.com"
88
- felo web-fetch --url "https://example.com" --format text --readability
89
- node felo-web-fetch/scripts/run_web_fetch.mjs --url "https://example.com" --format markdown
90
- ```
91
-
92
- **YouTube subtitling**
93
-
94
- ```bash
95
- felo youtube-subtitling -v "https://www.youtube.com/watch?v=dQw4w9WgXcQ"
96
- felo youtube-subtitling -v "dQw4w9WgXcQ" --language en
97
- node felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs -v "dQw4w9WgXcQ" -l zh-CN
98
- ```
99
-
100
- ---
101
-
102
- ## Claude Code Skills
103
-
104
- **Search** — Install and use real-time search:
105
-
106
- ```bash
107
- npx @claude/skills add felo-search
108
- ```
109
-
110
- After setting `FELO_API_KEY`, ask Claude things like “What’s the weather in Tokyo today?” or “React 19 new features”; the search skill triggers automatically (or use `/felo-search your question`).
111
-
112
- **Slides (PPT)** — `npx @claude/skills add felo-slides`, then `/felo-slides your topic`. Same `FELO_API_KEY`. [Details →](./felo-slides/README.md)
113
-
114
- **Web Fetch** — `felo web-fetch --url "https://example.com"` or run `node felo-web-fetch/scripts/run_web_fetch.mjs` from repo. [Details →](./felo-web-fetch/README.md)
115
-
116
- **YouTube Subtitling** — `felo youtube-subtitling -v "URL_or_VIDEO_ID"` or run `node felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs` from repo. [Details →](./felo-youtube-subtitling/README.md)
117
-
118
- ---
119
-
120
- ## Links
121
-
122
- - [Felo Open Platform](https://openapi.felo.ai/docs/) — Get your API key
123
- - [API Documentation](https://openapi.felo.ai/docs/api-reference/v2/chat.html)
124
- - [More examples](./docs/EXAMPLES.md) | [FAQ](./docs/FAQ.md) | [GitHub Issues](https://github.com/Felo-Inc/felo-skills/issues)
125
-
126
- ---
127
-
128
- **Other languages:** [Chinese (Simplified)](README.zh-CN.md) | [Japanese](README.ja.md) | [Korean](README.ko.md) | [Chinese (Traditional)](README.zh-TW.md)
129
-