felo-ai 0.2.9 → 0.2.10

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,14 @@ 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.10] - 2026-03-10
9
+
10
+ ### Fixed
11
+
12
+ - 修复 `felo-x-search` API 请求路径缺少 `/v2` 前缀的问题。
13
+
14
+ ---
15
+
8
16
  ## [0.2.7] - 2025-03-06
9
17
 
10
18
  ### Breaking Changes
@@ -26,5 +34,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
26
34
 
27
35
  Earlier releases: search, slides, web fetch, youtube-subtitling features.
28
36
 
37
+ [0.2.10]: https://github.com/Felo-Inc/felo-skills/compare/v0.2.9...v0.2.10
29
38
  [0.2.7]: https://github.com/Felo-Inc/felo-skills/compare/v0.2.6...v0.2.7
30
39
  [0.2.6]: https://github.com/Felo-Inc/felo-skills/releases/tag/v0.2.6
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 fetch, and YouTube subtitles 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
 
@@ -53,6 +53,7 @@ Get your API key from [felo.ai](https://felo.ai) (Settings → API Keys). Enviro
53
53
  | `felo slides "<prompt>"` | Generate PPT; returns link when done |
54
54
  | `felo web-fetch --url <url>` | Fetch webpage content (markdown/text/html) |
55
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 |
56
57
  | `felo config set FELO_API_KEY <key>` | Save API key to config |
57
58
  | `felo config get FELO_API_KEY` | Print stored key |
58
59
  | `felo config list` | List config keys |
@@ -132,6 +133,32 @@ node felo-youtube-subtitling/scripts/run_youtube_subtitling.mjs -v "dQw4w9WgXcQ"
132
133
 
133
134
  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
 
136
+ **X (Twitter) search** (after `npm install -g felo-ai`)
137
+
138
+ ```bash
139
+ # Search tweets
140
+ felo x "AI news"
141
+ felo x "AI news" --limit 10 --json
142
+
143
+ # Search users
144
+ felo x "OpenAI" --user
145
+
146
+ # Get user info
147
+ felo x --id "elonmusk" --user
148
+
149
+ # Get user tweets
150
+ felo x --id "elonmusk" --user --tweets
151
+ felo x --id "elonmusk" --user --tweets --include-replies --limit 20
152
+
153
+ # Get tweet replies
154
+ felo x --id "1234567890"
155
+
156
+ # From repo: run script directly (no install)
157
+ node felo-x-search/scripts/run_x_search.mjs "AI news"
158
+ ```
159
+
160
+ Options: `[query]` or `-q/--query` (search keyword), `--id` (tweet IDs or usernames, comma-separated), `--user` (user mode), `--tweets` (get user tweets), `-l/--limit`, `--cursor`, `--include-replies`, `--query-type`, `--since-time`, `--until-time`, `-j/--json`, `-t/--timeout`. Same `FELO_API_KEY` as other commands. See [felo-x-search](./felo-x-search/SKILL.md).
161
+
135
162
  ### CLI FAQ
136
163
 
137
164
  - **Key not found?** Run `felo config set FELO_API_KEY <key>` or set the `FELO_API_KEY` environment variable.
@@ -140,6 +167,7 @@ Options: `-v/--video-code` (required: **YouTube video URL** or video ID), `-l/--
140
167
  - **Where is config stored?** Run `felo config path` to see the file (e.g. `~/.felo/config.json`).
141
168
  - **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
169
  - **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).
170
+ - **X (Twitter) search?** Use `felo x "<query>"` to search tweets, `felo x "<query>" --user` to search users, `felo x --id "<username>" --user` for user info, `felo x --id "<username>" --user --tweets` for user tweets, `felo x --id "<tweet_id>"` for tweet replies. See [felo-x-search](./felo-x-search/SKILL.md).
143
171
 
144
172
  ---
145
173
 
@@ -185,6 +213,8 @@ Ask Claude: "What's the weather in Tokyo today?"
185
213
 
186
214
  **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
215
 
216
+ **Felo X Search:** In terminal run `felo x "query"` to search tweets, users, and replies on X (Twitter) (see [felo-x-search](./felo-x-search/SKILL.md)). In Claude Code install the skill and use it to search X content.
217
+
188
218
  ---
189
219
 
190
220
  ## Usage Examples
@@ -367,6 +397,10 @@ Generate PPT: in terminal use `felo slides "your topic"`, in Claude Code use `/f
367
397
 
368
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/)**
369
399
 
400
+ ### felo-x-search
401
+
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)**
403
+
370
404
  ---
371
405
 
372
406
  ## Contributing
@@ -0,0 +1,81 @@
1
+ # Felo X Search Skill
2
+
3
+ Search X (Twitter) tweets, users, and replies using the [Felo X Search API](https://openapi.felo.ai/docs/api-reference/v2/x-search.html).
4
+
5
+ ## Features
6
+
7
+ - **Search tweets** by keyword with advanced query support
8
+ - **Search users** by keyword
9
+ - **Get user info** by username (batch supported)
10
+ - **Get user tweets** by username, with optional replies
11
+ - **Get tweet replies** by tweet ID
12
+ - Same `FELO_API_KEY` as other Felo skills
13
+
14
+ ## Quick Start
15
+
16
+ ### 1) Configure API key
17
+
18
+ At [felo.ai](https://felo.ai) -> Settings -> API Keys, create a key, then:
19
+
20
+ ```bash
21
+ # Linux/macOS
22
+ export FELO_API_KEY="your-api-key-here"
23
+ ```
24
+
25
+ ```powershell
26
+ # Windows PowerShell
27
+ $env:FELO_API_KEY="your-api-key-here"
28
+ ```
29
+
30
+ ### 2) Run
31
+
32
+ ```bash
33
+ # From repo: script
34
+ node felo-x-search/scripts/run_x_search.mjs "AI news"
35
+
36
+ # After npm install -g felo-ai: CLI
37
+ felo x "AI news"
38
+ ```
39
+
40
+ ## All parameters
41
+
42
+ | Parameter | Option | Example |
43
+ |-----------|--------|---------|
44
+ | Search keyword | `[query]` or `-q, --query` | `felo x "AI news"` or `-q "AI news"` |
45
+ | Tweet IDs or usernames | `--id` | `--id "elonmusk"` or `--id "123,456"` |
46
+ | User mode | `--user` | `--user` |
47
+ | Get user tweets | `--tweets` | `--tweets` (with `--id --user`) |
48
+ | Result limit | `-l, --limit` | `--limit 20` |
49
+ | Pagination cursor | `--cursor` | `--cursor "abc123"` |
50
+ | Include replies | `--include-replies` | `--include-replies` (with `--tweets`) |
51
+ | Query type filter | `--query-type` | `--query-type "Latest"` |
52
+ | Start time filter | `--since-time` | `--since-time "2026-01-01"` |
53
+ | End time filter | `--until-time` | `--until-time "2026-03-01"` |
54
+ | Full JSON response | `-j, --json` | `-j` |
55
+ | Timeout (seconds) | `-t, --timeout` | `-t 60` |
56
+
57
+ ## Usage patterns
58
+
59
+ **Search mode** (with query):
60
+
61
+ ```bash
62
+ felo x "AI news" # Search tweets (default)
63
+ felo x "OpenAI" --user # Search users
64
+ felo x "AI" --limit 10 --json # Search with limit, raw JSON output
65
+ ```
66
+
67
+ **Lookup mode** (with --id):
68
+
69
+ ```bash
70
+ felo x --id "elonmusk" --user # Get user info
71
+ felo x --id "elonmusk,OpenAI" --user # Batch user info
72
+ felo x --id "elonmusk" --user --tweets # Get user tweets
73
+ felo x --id "elonmusk" --user --tweets --limit 20 # With limit
74
+ felo x --id "1234567890" # Get tweet replies
75
+ ```
76
+
77
+ ## When to use (Agent)
78
+
79
+ Trigger keywords: twitter, tweet, X user, X search, tweets from, replies to, trending on X, 推特, 推文, `/felo-x-search`.
80
+
81
+ See [SKILL.md](SKILL.md) for full agent instructions and API parameters.
@@ -62,7 +62,7 @@ async function fetchWithRetry(url, init, timeoutMs) {
62
62
 
63
63
  async function postApi(apiBase, apiKey, path, body, timeoutMs) {
64
64
  const res = await fetchWithRetry(
65
- `${apiBase}${path}`,
65
+ `${apiBase}/v2${path}`,
66
66
  {
67
67
  method: 'POST',
68
68
  headers: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "felo-ai",
3
- "version": "0.2.9",
3
+ "version": "0.2.10",
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",