0xNyk/xint

GitHub: 0xNyk/xint

面向终端的X/Twitter情报工具,集搜索、监控、分析与AI能力于一体,专为OSINT研究和AI代理场景设计。

Stars: 39 | Forks: 2

xint — X Intelligence from your terminal

X Intelligence CLI — 在终端中搜索、监控、分析 X/Twitter 并与之互动。

License: MIT Bun Release Stars Tweet

## 为什么选择 xint? - **面向 AI 代理** — 设计为 Claude Code、OpenClaw 和其他编码代理的 [技能](#use-as-an-ai-agent-skill) - **面向研究人员** — 无需离开终端即可进行 OSINT、市场情报、趋势追踪 - **面向开发者** — JSONL/CSV 导出、Unix pipeline 集成、用于 AI 代理工具的 MCP server - **快速** — 基于 Bun 构建,类型化 TypeScript,智能缓存 [twint](https://github.com/twintproject/twint) 的精神继任者(2023 年归档)。 ## 安装 ``` curl -fsSL https://raw.githubusercontent.com/0xNyk/xint/main/install.sh | bash ``` 可选的固定版本: ``` XINT_INSTALL_VERSION= \ curl -fsSL https://raw.githubusercontent.com/0xNyk/xint/main/install.sh | bash ``` Homebrew(Apple Silicon 上的轻量级预构建二进制文件): ``` brew tap 0xNyk/xint brew install xint ``` Rust 变体显式安装: ``` brew install xint-rs ``` 手动源码安装: ``` git clone https://github.com/0xNyk/xint.git cd xint bun install ``` ## 快速参考 | 任务 | 命令 | |------|---------| | 搜索 | `xint search "AI agents"` | | 监控 | `xint watch "solana" -i 5m` | | 流式 | `xint stream` | | 个人资料 | `xint profile @elonmusk` | | 线程 | `xint thread 123456789` | | 关注者 | `xint diff @username` | | 书签 | `xint bookmarks` | | 列表 | `xint lists` | | 屏蔽 | `xint blocks` | | 静音 | `xint mutes` | | 关注 | `xint follow @username` | | 媒体 | `xint media ` | | 趋势 | `xint trends` | | AI 分析 | `xint analyze "best AI frameworks?"` | | 报告 | `xint report "crypto"` | | 文章 | `xint article --ai "summarize"` | | 能力 | `xint capabilities --json` | | TUI | `xint tui` | ### 简写 ``` xint s "query" # search xint w "query" # watch xint p @user # profile xint tr # trends xint bm # bookmarks ``` ### TUI 自定义 ``` # 内置主题:classic | neon | minimal | ocean | amber XINT_TUI_THEME=ocean xint tui # 禁用动画 hero line XINT_TUI_HERO=0 xint tui # 禁用菜单行中的图标 XINT_TUI_ICONS=0 xint tui # 强制使用 ASCII 边框 XINT_TUI_ASCII=1 xint tui # 可选的主题 token 文件 XINT_TUI_THEME_FILE=./tui-theme.tokens.example.json xint tui ``` ### TUI 自定义 ``` # 内置主题:classic | neon | minimal | ocean | amber XINT_TUI_THEME=ocean xint tui # 禁用动画 hero line XINT_TUI_HERO=0 xint tui # 禁用菜单行中的图标 XINT_TUI_ICONS=0 xint tui # 强制使用 ASCII 边框 XINT_TUI_ASCII=1 xint tui # 可选的主题 token 文件 XINT_TUI_THEME_FILE=./tui-theme.tokens.example.json xint tui ``` ## 设置 ### 1. X API Key 在你的 shell 或密钥管理器中设置本地 bearer token(不要提交凭证): - `X_BEARER_TOKEN` 从 [developer.x.com](https://developer.x.com) → Your Apps → App Settings 获取你的 bearer token。 ### 2. 可选:用于 AI 功能的 xAI 用于 `analyze`、`report --sentiment` 和 `article --ai`: - `XAI_API_KEY` ### 3. 可选:用于写入权限的 OAuth 用于书签、点赞、列表、屏蔽/静音和关注者追踪: - `X_CLIENT_ID` 运行 `xint auth setup` 以完成 OAuth 流程。 ## 部署模式 ### 自托管(OSS 默认) - 在此仓库本地运行所有内容。 - 除非你设置云端端点,否则包 API 调用是本地的。 - 适用于开发和私有工作流。 ### 托管云端控制平面(`xint-cloud`) - 将包 API 功能指向你托管的控制平面: - `XINT_PACKAGE_API_BASE_URL=http://localhost:8787/v1`(或你部署的 URL) - `XINT_PACKAGE_API_KEY=` - `XINT_WORKSPACE_ID=` - 配额/计划错误时显示的可选账单升级链接: - `XINT_BILLING_UPGRADE_URL=https://your-app/pricing` 注意: - 如果未设置 `XINT_PACKAGE_API_BASE_URL`,包 API MCP 工具将返回设置错误。 - `xint-cloud` 应保持私有;`xint` 和 `xint-rs` 保持为公开的 OSS 客户端。 ## 代理原生能力清单 `xint` 现在为代理运行时允许列表和工具路由提供一个机器可读的清单: ``` # 格式化的 JSON xint capabilities # 用于机器摄取的紧凑 JSON xint capabilities --compact ``` ## 搜索 ``` # Quick pulse xint search "AI agents" --quick # High-engagement from last hour xint search "react 19" --since 1h --sort likes --min-likes 50 # Full-archive deep dive xint search "bitcoin ETF" --full --pages 3 # With sentiment xint search "solana" --sentiment # Export xint search "startups" --csv > data.csv xint search "AI" --jsonl | jq '.text' ``` ### 选项 | 标志 | 描述 | |------|-------------| | `--sort` | `likes` · `impressions` · `retweets` · `recent` | | `--since` | `1h` · `3h` · `12h` · `1d` · `7d` | | `--full` | 搜索完整归档(可追溯至 2006 年) | | `--min-likes N` | 按互动量过滤 | | `--pages N` | 要获取的页数 (1-5) | | `--sentiment` | 为每条推文添加 AI 情感分析 | | `--quick` | 带缓存的快速模式 | ## 监控(实时) ``` # Monitor topic every 5 minutes xint watch "solana" --interval 5m # Watch user xint watch "@vitalikbuterin" -i 1m # Webhook to Slack xint watch "breaking" -i 30s --webhook https://example.com/webhook ``` Webhook 安全性: - 远程 webhook 必须使用 `https://` - 仅接受用于 localhost/loopback 目标的 `http://` - 可选的主机允许列表:`XINT_WEBHOOK_ALLOWED_HOSTS=hooks.example.com,*.internal.example` 按 `Ctrl+C` — 显示会话统计信息。 ## 流式(官方过滤流) ``` # List current stream rules xint stream-rules # Add a filtered-stream rule xint stream-rules add "from:elonmusk -is:retweet" --tag elon # Connect to stream xint stream # JSONL output + stop after 25 events xint stream --jsonl --max-events 25 ``` ## 关注者追踪 ``` # First run: creates snapshot xint diff @vitalikbuterin # Second run: shows changes xint diff @vitalikbuterin # Track following xint diff @username --following ``` 需要 OAuth(`xint auth setup`)。 ## 列表(OAuth) ``` # List your owned lists xint lists # Create a private list xint lists create "AI Researchers" --description "High-signal accounts" --private # Add/remove members xint lists members add @username xint lists members remove @username ``` ## 屏蔽与静音(OAuth) ``` # List blocked/muted users xint blocks xint mutes # Add/remove xint blocks add @username xint blocks remove @username xint mutes add @username xint mutes remove @username ``` ## 关注操作(OAuth) ``` xint follow @username xint unfollow @username ``` ## 媒体下载 ``` # Download media from a tweet ID xint media 1900100012345678901 # Download media from a tweet URL xint media https://x.com/user/status/1900100012345678901 # Custom output directory + JSON summary xint media 1900100012345678901 --dir ./downloads --json # Download only first video/gif xint media 1900100012345678901 --video-only --max-items 1 # Download only photos xint media 1900100012345678901 --photos-only # Custom filename template xint media 1900100012345678901 --name-template "{username}-{created_at}-{index}" ``` ## 情报报告 ``` # Generate report xint report "AI agents" --save # With sentiment + specific accounts xint report "crypto" --sentiment --accounts @aaboronkov,@solana ``` 报告包括:摘要、情感分布、热门推文、账户活动。 ## 文章分析 ``` # Fetch article xint article "https://example.com" # Fetch + AI summary xint article "https://example.com" --ai "Key takeaways?" # From X tweet xint article "https://x.com/user/status/123" --ai "Summarize" ``` 使用 xAI 的 `grok-4` 模型。 ## 用作 AI 代理技能 专为 AI 编码代理设计。添加为技能: ``` # Claude Code mkdir -p .claude/skills && cd .claude/skills git clone https://github.com/0xNyk/xint.git # OpenClaw mkdir -p skills && cd skills git clone https://github.com/0xNyk/xint.git ``` 然后只需问:*"Search X for what people say about React 19"* — 代理会读取 `SKILL.md` 并运行正确的命令。 ### MCP Server ``` xint mcp ``` 运行一个 AI 代理可以连接的 MCP server。 ``` # HTTP/SSE mode (local-only by default) xint mcp --sse --port=3000 # Optional: require bearer auth (recommended if binding beyond loopback) XINT_MCP_AUTH_TOKEN=replace-with-long-random-token xint mcp --sse --host=127.0.0.1 ``` 安全默认设置: - SSE 模式绑定到 `127.0.0.1`,除非设置了 `--host` / `XINT_MCP_HOST`。 - 如果主机非 loopback,则需要通过 `--auth-token` 或 `XINT_MCP_AUTH_TOKEN` 进行认证。 ## 费用 | 操作 | 费用 | |-----------|------| | 推文读取 | $0.005/tweet | | 完整归档 | $0.01/tweet | | 写入操作 | $0.01/action | ``` xint costs # Today's spend xint costs week # Last 7 days xint costs budget # Show/set limits ``` ## 包 API 账单 ``` # Show workspace plan, limits, and feature gates xint billing status # Show usage units by operation over a window xint billing usage --days=30 ``` 这些命令从本地/托管的包 API(`XINT_PACKAGE_API_BASE_URL`)读取。 对于托管账单同步,包 API 还支持: - `POST /v1/billing/webhook`(提供商无关的事件摄入) - `GET /v1/billing/events?limit=100`(工作区账单事件历史) ## 配置变量(仅限本地) | 变量 | 必需 | 描述 | |----------|----------|-------------| | `X_BEARER_TOKEN` | 是 | X API v2 bearer token | | `XAI_API_KEY` | 否 | 用于 analyze/report 的 xAI 密钥 | | `XINT_ARTICLE_TIMEOUT_SEC` | 否 | 文章获取超时秒数(默认 30,范围 5-120) | | `X_CLIENT_ID` | 否 | 用于书签/点赞/列表/屏蔽/静音的 OAuth | | `XINT_PACKAGE_API_BASE_URL` | 否 | MCP 包工具/账单的包 API 基础 URL | | `XINT_PACKAGE_API_KEY` | 否 | 用于包 API 认证的旧版单一 bearer 密钥 | | `XINT_PACKAGE_API_KEYS` | 否 | API 密钥到 `workspace_id` + `plan` 的 JSON 映射 | | `XINT_PACKAGE_API_PLAN` | 否 | 默认工作区计划(`free\|pro\|team\|enterprise`) | | `XINT_WORKSPACE_ID` | 否 | 本地 `xint billing *` 调用使用的工作区 ID | | `XINT_BILLING_WEBHOOK_SECRET` | 否 | 用于 `/v1/billing/webhook` 签名验证的 HMAC 密钥 | | `XINT_BILLING_UPGRADE_URL` | 否 | MCP 计划/配额错误中显示的升级 URL | ## 文件结构 ``` xint/ ├── xint.ts # CLI entry ├── lib/ # Core modules │ ├── api.ts # X API wrapper │ ├── oauth.ts # OAuth 2.0 PKCE │ ├── grok.ts # xAI integration │ ├── sentiment.ts # AI sentiment │ ├── watch.ts # Real-time monitoring │ └── format.ts # Output formatters ├── data/ │ ├── cache/ # Search cache (15min TTL) │ ├── exports/ # Saved results │ └── snapshots/ # Follower snapshots ├── SKILL.md # AI agent instructions └── .env.example # Template ``` ## 安全 - 来自环境变量的 Token — 绝不硬编码 - OAuth token 使用 `chmod 600` 存储 - Webhook:仅使用受信任的端点 - 在不受信任的环境中审查代理会话日志 有关完整详细信息,请参阅 [SECURITY.md](docs/security.md)。 ## 贡献 开源!请参阅 [CONTRIBUTING.md](CONTRIBUTING.md)。 ## 发布自动化 `xint` 是 `xint` 和 `xint-rs` 跨版本发布自动化的真实来源。 ``` # from xint/ ./scripts/release.sh --dry-run --allow-dirty ./scripts/release.sh 2026.2.18.4 --allow-dirty # disable default ClawdHub publish for one run ./scripts/release.sh 2026.2.18.4 --no-clawdhub # enable skills.sh as well ./scripts/release.sh 2026.2.18.4 --skillsh # disable GitHub auto-generated notes if you want manual sections only ./scripts/release.sh 2026.2.18.4 --no-auto-notes # write release report to a custom location ./scripts/release.sh 2026.2.18.4 --report-dir /tmp/xint-release-reports ``` 可选的路径覆盖: - `REPO_PATH_XINT`(在 `xint` 内部运行时默认为当前仓库) - `REPO_PATH_XINT_RS`(存在时默认为同级目录 `../xint-rs`) - `RELEASE_REPORT_DIR`(默认为 `xint/reports/releases`) 行为说明: - 默认:使用 `gh release create --generate-notes` - 手动覆盖:设置 `CHANGELOG_ADDED`、`CHANGELOG_CHANGED`、`CHANGELOG_FIXED`、`CHANGELOG_SECURITY` 中的任意一个 - 默认:当 `clawdhub` CLI 可用时发布到 ClawdHub(使用 `--no-clawdhub` 禁用) - 可选:使用 `--skillsh` 发布到 skills.sh(或使用 `--ai-skill` 同时发布到两者) 发布报告: - 默认:写入 `reports/releases/.md` - 包含每个仓库的提交列表、提交范围、文件更改、SHA、比较链接和发布 URL - 自动作为资产上传到两个 GitHub 发布(可以使用 `--no-report-asset` 禁用) - 自动嵌入到两个 GitHub 发布正文中(可以使用 `--no-report-body` 禁用) - 使用 `--no-report` 禁用 ## 许可证 [MIT](LICENSE) · [0xNyk](https://github.com/0xNyk)

Star History

标签:AI代理, Bun, ESC4, JSONL, MCP服务器, OSINT, Twitter, TypeScript, WSL, X平台, 命令控制, 威胁情报, 安全插件, 市场情报, 开发者工具, 情报分析, 数据导出, 数据采集, 智能体技能, 社交媒体监控, 网络安全, 网络诊断, 网络调试, 自动化, 自动化攻击, 趋势追踪, 隐私保护