A graphical user interface (GUI) to interact with the tiktok-uploader CLI tool. This project is built with Next.js, NextUI, and packaged as a desktop application using Tauri.
- 👋 Introduction
- ⚙️ How it Works
- 🗺️ Roadmap / TODO
- 🔧 Original CLI Tool
- 🙏 Acknowledgements
- 💾 Installation
- 🚀 Usage
- 🤝 Contributing
- 📜 License
This application provides a visual way to upload videos to TikTok, leveraging the power of the tiktok-uploader CLI in the background. Instead of using the command line, you can manage your uploads through a user-friendly interface.
This project is currently under active development. The UI is mostly built, but backend integration is pending.
Legend:
- ⏳ TODO
- [~] 🏗️ In Progress / Partially Implemented (UI Only)
- ✅ Done
- 🏗️ 📹 Video Selection: Select single or multiple videos via file dialog or drag-and-drop (UI Done).
- ⏳ 📁 File Handling: Process and temporarily store selected video file paths for upload.
- ⏳ 🐍
tiktok-uploaderIntegration:- ⏳ 🦀 Create Tauri commands (Rust) to invoke the
tiktok-uploaderPython script/CLI. - ⏳ ➡️ Pass video path, description, hashtags, mentions, privacy settings, etc., from the UI to the backend command.
- ⏳ 📊 Handle output/progress/errors from the Python script and display them in the UI.
- ⏳ 🦀 Create Tauri commands (Rust) to invoke the
- 🏗️ 📝 Video Metadata Input: Enter Title/Caption, Hashtags, Mentions (UI Done).
- 🏗️ 🔒 Privacy Settings: Configure 'Allow Comments', 'Allow Duets', 'Allow Stitches' (UI Done).
- ⏳ 👥 Audience Control: Select 'Public', 'Friends', 'Private' (UI might need adjustment based on CLI capabilities).
- 🏗️ 📅 Scheduling: Select date and time for scheduled uploads (UI Done, backend logic needed).
- 🏗️ 📚 Batch Upload: UI for managing multiple videos with individual or common settings (UI Done, backend logic needed).
- ⏳ 🛒 TikTok Shop / Affiliate Links: Integrate Product ID input with CLI option (if supported).
- ⏳ 🔑 Authentication:
- ⏳ 📄 UI for selecting
cookies.txtfile path. - ⏳ 💾 Securely store and load the cookies path.
- ⏳ ➡️ Pass cookies path/content to the
tiktok-uploadercommand. - ⏳ ✅ Display authentication status (e.g., "Cookies Loaded" / "Cookies Missing").
- ⏳ 📄 UI for selecting
- ⏳ 🌐 Browser Selection: Allow users to choose the browser for Selenium (Chrome, Firefox, etc.) if needed.
- ⏳ 🔗 Proxy Configuration: UI and backend logic for setting proxy details (Host, Port, User, Pass).
- ⏳ 👻 Headless Mode: Option to run the browser headlessly.
- ⏳ 🛠️ Environment Setup:
- 🏗️ 🔄 Upload Progress: Display real-time progress during upload (Requires feedback from Python script).
- ⏳ 📈 Upload History: Persistently store and display a history of successful, failed, and scheduled uploads.
- ⏳ 🐛 Error Handling: Provide clear feedback for common errors (invalid cookies, network issues, TikTok blocks, invalid video format, etc.).
- ⏳ 🌍 Internationalization (i18n): Fully translate UI elements based on language selection (Currently separate READMEs).
- ✅ Basic UI Structure: Next.js frontend with shadcn/ui components.
- ✅ Tauri Integration: Basic setup for packaging as a desktop app.
- ⏳ 🗃️ Refine State Management: Move beyond local
useStatefor persistent data (history, settings). - ⏳ 🧪 Testing: Add unit/integration tests.
This application uses the tiktok-uploader library, which employs Selenium to automate the upload process in a web browser. It requires your TikTok session cookies to authenticate.
- Authentication: You'll need to export your cookies from TikTok.com using a browser extension (like "Get cookies.txt") and upload the
cookies.txtfile in the application's settings. - Supported Browsers: Chrome (Recommended), Firefox, Edge, Safari, Chromium.
- Proxies: Proxy configuration is supported (primarily via Chrome) to help avoid rate limits.
- Potential Issues: Uploads might fail due to TikTok's detection methods, expired cookies, network issues, or uploading too frequently.
⚠️
This interface relies on the tiktok-uploader CLI tool by wkaisertexas. Please refer to the original documentation for details on the CLI's features and options.
- Huge thanks to wkaisertexas for creating the original tiktok-uploader CLI tool, which this project builds upon.
- The initial frontend structure was generated using v0.dev by Vercel.
- The application icon (
app-icon.svg) was generated by ChatGPT. - This project was developed with the assistance of Cursor and Gemini 2.5 Pro. ✨
To run this project locally, follow these steps:
- Clone repository (If needed):
git clone https://github.com/thanhnn16/tiktok-uploader-gui.git cd tiktok-uploader-gui - Install dependencies:
This project uses
bunas the package manager.Note: Tauri dependencies (Rust, etc.) are also required. See the Tauri prerequisites guide.bun install
-
Run development server:
bun run dev
Open http://localhost:3000 in your browser to see the application.
-
Build the application for production:
bun run build
-
Run production server:
bun run start
The Next.js application is wrapped using Tauri to create a cross-platform desktop app. The Tauri-specific code resides in the src-tauri directory.
-
Run Tauri development mode: This will build the frontend and launch the desktop application with hot-reloading.
bun run tauri dev
-
Build Tauri application: This will bundle the frontend and the Rust backend into a distributable desktop application for your platform.
bun run tauri build
The output can be found in
src-tauri/target/release/bundle/.
Contributions are welcome! Please open an issue or pull request if you have suggestions or bug fixes. 🙌
This project is licensed under the MIT License.