个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证Self-hosted web workspace and Android companion that organises your YouTube playlists with channel rules and AI suggestions you approve. By Atomic 22 Industries.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗A place for every video. motus.leap is a self-hosted web workspace that brings order to your YouTube™ library with channel-to-playlist rules and AI suggestions you review, plus an optional Android companion app. Nothing moves until you confirm it.
Published by Atomic 22 Industries.
Website · Help · Android download (0.5.3) · Report an issue
Status: in active development. The Android app (0.5.3) is a signed release; the server is something you run and configure yourself. There is no hosted public service.
| Piece | Where it runs | What it does |
|---|---|---|
| Web workspace | Your browser | The main interface: rules, scans, review queue, AI Hub, settings. |
| motus.leap server | A server you configure (FastAPI) | Stores YouTube™ credentials, runs background jobs, talks to YouTube and your AI provider, serves the web workspace. Must be reachable over HTTPS for the Android app. |
| Android app (optional) | Your phone, Android 8.0+ | Companion to the same server. Signs in with Google in the system browser. |
| YouTube™ and AI provider | Third-party services | Authorised separately on the server. |
Signing in to motus.leap and authorising the server to access your YouTube account are separate steps. Downloading the APK alone does not create a server or connect a YouTube account.
git clone https://github.com/dave-patrick/motus.leap.git
cd motus.leap
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt
playwright install chromium # needed for Watch Later features
Create a .env file (or set environment variables) with at least:
GOOGLE_OAUTH_CLIENT_ID=your-client-id.apps.googleusercontent.com
GOOGLE_OAUTH_CLIENT_SECRET=your-client-secret
GOOGLE_OAUTH_REDIRECT_URI=http://localhost:8000/api/auth/google/callback
FRONTEND_URL=http://localhost:8000
TUBE_MANAGER_SECRET_KEY=a-long-random-string
TUBE_MANAGER_DATA_DIR=./data
Add the same redirect URI to your OAuth client in Google Cloud, then start the server:
uvicorn app:app --host 0.0.0.0 --port 8000
Open http://localhost:8000, sign in with Google, connect your YouTube account, and add an AI provider in AI Hub → Providers if you want suggestions.
render.yaml defines a single web service with a persistent disk at /app/data. Set GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET in the Render dashboard, and point the OAuth redirect URI at https://<your-service>.onrender.com/api/auth/google/callback. The Android sign-in handoff store is in memory, so keep the service to a single process.
| Variable | Required | Purpose |
|---|---|---|
GOOGLE_OAUTH_CLIENT_ID | Yes | Google OAuth web client ID (YOUTUBE_CLIENT_ID is accepted as an alias). |
GOOGLE_OAUTH_CLIENT_SECRET | Yes | Google OAuth client secret (YOUTUBE_CLIENT_SECRET alias). |
GOOGLE_OAUTH_REDIRECT_URI | Yes | OAuth callback, ending in /api/auth/google/callback. |
FRONTEND_URL | Yes | Public base URL of your server. |
TUBE_MANAGER_SECRET_KEY | Yes | Secret used to sign sessions. Use a long random value. |
TUBE_MANAGER_DATA_DIR | Recommended | Where users, settings, caches and scan results are stored. |
TUBE_MANAGER_ADMIN_PASSWORD | Optional | Initial admin password. If unset, a random one is generated and written to the log. |
YOUTUBE_DAILY_QUOTA | Optional | Daily YouTube API quota for the quota guard (default 1500000). Set this to your approved allowance. |
YOUTUBE_API_KEY | Optional | API key for read-only YouTube requests. |
EXTRA_ALLOWED_ORIGINS | Optional | Extra CORS origins, comma separated. |
REDIS_URL | Optional | Use Redis for caching instead of in-memory. |
SENTRY_DSN | Optional | Error reporting. |
CSP_STRICT | Optional | Enable the stricter Content Security Policy. |
AI provider keys are added in the web workspace (AI Hub → Providers), not as environment variables. Saved keys are never shown again in the interface.
The Android companion is a native app (not a WebView) for Android 8.0 or newer.
23:25:B2:87:5C:6B:50:7C:15:7D:E7:FD:0F:81:72:B3:A1:89:8D:F3:41:AD:63:F0:E5:F5:DE:F1:56:10:F4:14 (Atomic 22 Industries). Check it with apksigner verify --print-certs motus.leap-0.5.3.apk.android/README.md (JDK 17+, Android SDK 36). ./gradlew assembleDebug builds a debug APK; release builds need the signing key described there.Earlier 0.5.x downloads were debug-signed. Android won't let a release-signed app update a debug-signed one, so uninstall the old app once before installing 0.5.3. You'll need to enter your server address and sign in again; your library stays on the server.
cli.py offers a few direct commands against the YouTube API:
python cli.py list "Playlist name"
python cli.py add <video-url> "Playlist name"
python cli.py remove <video-url> "Playlist name"
python cli.py create <video-url> "New playlist"
python cli.py scan [--force]
python cli.py auto-sort
pip install pytest pytest-asyncio pytest-cov
python -m pytest tests/ -q
CI runs the test suite on Python 3.11 and 3.12 (.github/workflows/test.yml), builds the Android app (android-build.yml) and publishes the website from site/ to GitHub Pages (pages.yml).
| Path | Contents |
|---|---|
app.py, server.py | FastAPI application entry points |
api/, routers/ | REST endpoints: auth, playlists, maintenance, rules, bulk operations |
services/ | YouTube client, AI classifier and chat, background worker, scans, quota ledger |
core/ | HTTP client, caching, config, logging, rate limiting, observability |
models/ | Data types |
web/ | The web workspace (HTML, JS, CSS) |
android/ | Android companion app |
site/ | Public landing page and help (live) |
tests/ | Unit, integration, security and load tests |
documentation/, docs/ | Publishing notes, release notes, audits |
android/README.md: Android build, sign-in and release historydocumentation/PUBLISHING.md: how the website and releases are publisheddocumentation/RELEASE-0.5.1.md: release notesApache-2.0. See LICENSE.
YouTube™ is a trademark of Google LLC. motus.leap is an independent project and is not affiliated with, endorsed by, or sponsored by Google LLC or YouTube.