Anon Tweet 是一个基于 React Router v7 构建的现代化全栈应用程序,旨在提供极致的推文匿名浏览体验。本项目集成了 Google Gemini AI 实现的翻译功能,支持推文的卡片导出。
本项目采用现代 React 全栈架构,利用 Bun 作为高性能运行时。
- Core Framework: React Router v7 (Fullstack, SSR/CSR)
- Language & Runtime: TypeScript, Bun
- AI & Automation:
- Google Gemini API (Translation Engine)
- Vercel AI SDK (Stream & State Management)
- UI System:
- Tailwind CSS v4 (Styling)
- coss/ui (Component Primitives)
- Lucide React (Icons)
- Data & State:
- Drizzle ORM + PostgreSQL (Optional, for caching)
- SWR (Data Fetching)
- Zustand (Client-side global state)
按照以下步骤在本地启动开发环境。
确保本地已安装 Bun。
# Clone repository
git clone https://github.com/Chilfish/anonTweet.git
cd anonTweet
# Install dependencies
bun install在项目根目录创建 .env 文件,并参照以下配置设置关键变量。
注意: AI 翻译功能依赖于 Google Gemini API,截图功能依赖于正确的 HOSTNAME 配置。
ENVIRONMENT="development" # development | production
HOSTNAME="http://localhost:9080" # ⚠️ 截图服务回调地址,生产环境请填写实际域名
# ⚠️ 必需。用于服务端逆向获取推文数据流。
# 若不配置,将受到严格的 Rate Limit 限制。
# 支持配置多个 Key(用英文逗号分隔)以实现轮询负载均衡。
TWEET_KEYS="your_twitter_auth_token_1,your_twitter_auth_token_2"
# 启用 AI 翻译功能
ENABLE_AI_TRANSLATION="true"
# Google Gemini API Key
GEMINI_API_KEY="AIzaSy..."
# 模型选择 (支持 gemini-2.0-flash-exp, gemini-1.5-pro 等)
GEMINI_MODEL="models/gemini-2.0-flash-exp"
# 如果不配置 DB_URL,系统将直接调用 API 而不使用持久化缓存。
# DB_URL="postgres://..."
ENABLE_DB_CACHE="false"
# 部署到 Vercel 时必须设置为 true,本地开发设为 false 或留空
VERCEL="false"本项目使用 Rettiwt-API 进行数据抓取。为获取完整访问权限并降低风控概率,需注入 Twitter 用户凭证。支持配置多个账号凭证以应对高频请求时的 Rate Limit 问题。
操作步骤:
- 安装浏览器扩展:
- Chrome/Chromium: X Auth Helper
- Firefox: Rettiwt Auth Helper
- 建议使用浏览器的无痕/隐私模式登录 Twitter/X 账号。
- 登录后打开扩展,点击
Get Key/Get API Key并复制生成的字符串。 - 将该字符串填入
.env的TWEET_KEYS字段(多个 Key 用逗号分隔)。
⚠️ Security Note: 该 Key 本质上是账号 Cookies 的 Base64 编码,拥有完全账户权限,安全等级等同于你的账号+密码。请勿泄露。⚠️ Session Keep-alive: 获取 Key 后,请勿手动点击登出 (Log out),否则服务端 Session 将失效。直接关闭浏览器窗口即可。
如果你启用了数据库(配置了 DB_URL 且 ENABLE_DB_CACHE=true),则需要初始化数据库 Schema。
# 将 Schema 推送到数据库 (Prototyping)
bun run db:push
# 或者生成迁移文件并执行 (Production)
# bun run db:generate
# bun run db:migrate启动开发服务器,默认运行在 http://localhost:9080。
bun run dev本项目针对 Vercel Serverless 环境进行了适配。
- 在 Vercel 项目设置中,务必添加环境变量
VERCEL="true"以激活 React Router 的适配器逻辑。 - 配置
GEMINI_API_KEY以启用线上的翻译服务。 - 确保
HOSTNAME设置为生产环境域名,否则推文截图功能将无法正确回调渲染。
项目包含部分定制的第三方库核心,位于 app/lib/ 目录下:
react-tweet: 经深度修改以适配 Tailwind v4,并增加了对 AI 翻译实体(Auto Translation Entities)的渲染支持。rettiwt-api: 针对最新的 Twitter GraphQL 接口进行了逆向工程适配,增强了数据获取的稳定性。