A simple tool which lets you scrape twitter accounts and crosspost them to bluesky accounts! Comes with a CLI and a webapp for managing profiles! Works with images/videos/link embeds/threads.
at main 82 lines 2.4 kB view raw
1{ 2 "name": "tweets-2-bsky", 3 "version": "2.0.0", 4 "description": "A powerful tool to crosspost Tweets to Bluesky, supporting threads, videos, and high-quality images.", 5 "type": "module", 6 "main": "dist/index.js", 7 "scripts": { 8 "setup": "npm install && npm run build", 9 "build": "npm run build:server && npm run build:web", 10 "build:server": "tsc", 11 "build:web": "vite build", 12 "rebuild:native": "bash scripts/rebuild-native.sh", 13 "postinstall": "bash scripts/rebuild-native.sh", 14 "run:once": "node dist/index.js --run-once --no-web", 15 "start": "node dist/index.js", 16 "cli": "tsx src/cli.ts", 17 "dev": "tsx src/index.ts", 18 "dev:web": "vite", 19 "import": "tsx src/index.ts --import-history", 20 "lint": "biome check --write .", 21 "preview:web": "vite preview", 22 "format": "biome format --write .", 23 "typecheck": "tsc --noEmit" 24 }, 25 "keywords": [ 26 "bluesky", 27 "twitter", 28 "crosspost", 29 "migration", 30 "thread", 31 "video" 32 ], 33 "author": "", 34 "license": "MIT", 35 "dependencies": { 36 "@atproto/api": "^0.18.9", 37 "@google/generative-ai": "^0.24.1", 38 "@the-convocation/twitter-scraper": "^0.21.1", 39 "axios": "^1.13.2", 40 "bcryptjs": "^3.0.3", 41 "better-sqlite3": "^12.5.0", 42 "cheerio": "^1.1.2", 43 "class-variance-authority": "^0.7.1", 44 "clsx": "^2.1.1", 45 "commander": "^14.0.2", 46 "cors": "^2.8.5", 47 "dotenv": "^17.2.3", 48 "express": "^5.2.1", 49 "franc-min": "^6.2.0", 50 "inquirer": "^13.1.0", 51 "iso-639-1": "^3.1.2", 52 "jsonwebtoken": "^9.0.3", 53 "lucide-react": "^0.553.0", 54 "node-cron": "^4.2.1", 55 "puppeteer-core": "^24.34.0", 56 "react": "^19.2.0", 57 "react-dom": "^19.2.0", 58 "sharp": "^0.34.5", 59 "tailwind-merge": "^3.3.1" 60 }, 61 "devDependencies": { 62 "@types/react": "^19.2.6", 63 "@types/react-dom": "^19.2.3", 64 "@vitejs/plugin-react": "^5.1.0", 65 "@biomejs/biome": "^1.9.4", 66 "@types/bcryptjs": "^2.4.6", 67 "@types/better-sqlite3": "^7.6.13", 68 "@types/cheerio": "^0.22.35", 69 "@types/cors": "^2.8.19", 70 "@types/express": "^5.0.6", 71 "@types/inquirer": "^9.0.9", 72 "@types/jsonwebtoken": "^9.0.10", 73 "@types/node": "^22.10.2", 74 "@types/sharp": "^0.31.1", 75 "autoprefixer": "^10.4.21", 76 "postcss": "^8.5.6", 77 "tailwindcss": "^3.4.18", 78 "tsx": "^4.19.2", 79 "typescript": "^5.7.2", 80 "vite": "^7.1.12" 81 } 82}