Privacy & permissions
Privacy policy
YouTube Publisher is a local tool that uses the YouTube Data API to work with channels you authorize. This policy explains the data handled by the website and tool, where it is sent, and how to stop access and manage local records.
1. Information handled by this website
This website provides static product information, software downloads and a privacy policy. It has no registration, sign-in, video upload, payment or contact forms. Its only script is a local language switcher, which keeps your language choice in the URL. It uses no cookies, browser local storage, analytics scripts, advertising trackers, external fonts or embedded videos, and does not invoke the local tool to read your files.
When hosted on Cloudflare Pages, Cloudflare receives network request information needed to serve pages, such as IP addresses, browser request information and access times. Handling depends on the actual hosting configuration and the Cloudflare Privacy Policy. This policy does not promise that the host keeps no access logs. External websites handle data under their own policies when you follow their links.
2. Data accessed and stored by the local tool
- Authorization and channels: Google OAuth client configuration, access tokens, refresh tokens, granted scopes, local account aliases, and linked channel IDs and names. The tool queries channel identity through the API to check that tasks belong to the authorized channel.
- Files and metadata: Videos, thumbnails, captions, file paths and fingerprints that you select or place in designated folders, plus upload settings such as titles, descriptions, tags, languages, audience declarations and playlists.
- Operations and API results: Task queues, schedules, upload offsets, resumable session URLs, video IDs, processing states, errors, estimated API usage and duplicate-prevention records in the local database. Resumable session URLs should also be treated as sensitive.
This local data supports authorization, uploading and configuring videos, recovering tasks, checking processing, preventing duplicates and showing progress. The current code has no functionality to sell this data, use it for advertising profiles or train general-purpose AI models. It also has no developer server that centrally collects this local data.
3. OAuth permissions and how they are used
The tool currently requests https://www.googleapis.com/auth/youtube.force-ssl. According to Google’s scope documentation, this scope permits viewing, editing and permanently deleting YouTube videos, ratings, comments and captions. It is broader than upload-only access. Granting the scope does not mean the tool performs every operation it permits.
The tool currently uses this permission to verify channels; upload videos, thumbnails and captions; read video and processing status; verify and add playlist items; and update video status as configured. The app interface and folder watcher upload privately first. Compatibility command-line options can schedule public release when explicitly configured. Cleaning local history or files does not delete videos on YouTube.
Authorization takes place on Google’s official page with a local loopback callback. The tool does not receive your Google password. Offline access allows refresh tokens to renew access tokens. Background processing does not open authorization pages automatically; expired authorization or insufficient permissions require your attention. Continued access and verification depend on Google’s rules and project status. This site does not guarantee permanent authorization or verification approval.
4. Local storage and safeguards
The default application data directory is ~/.video_publisher, adjustable through VP_HOME or startup arguments. The OAuth client file is client_secret.json in that directory. Each account’s authorization record is stored in tokens/youtube_<account-alias>.json, including its channel binding and credentials. Refreshed credentials are written back locally.
Credentials are local plaintext files, without application-level encryption. The code uses file permissions (0600 for sensitive files and 0700 for private directories), locks and atomic writes to reduce unintended access and write conflicts. These measures do not guarantee absolute security. Protect your system account, disk and backups. Do not share the data directory, credentials or resumable URLs. Backups, syncing and third-party services you enable may create additional copies.
The local app’s browser interface uses browser local storage only to save its interface language (Chinese or English). This preference is not sent to this website. You can change the language in the app or clear local storage for the app page through your browser. This setting changes the interface language only; it does not translate video content or generate captions.
5. Who receives data
- Google / YouTube: OAuth authorization and refresh requests, along with videos, thumbnails, captions and metadata you schedule for upload, are sent directly to Google / YouTube APIs. The tool also requests channel, playlist and video processing information. Google handles received data under the Google Privacy Policy. YouTube API functionality is also subject to the YouTube Terms of Service.
- Optional notifications: The tool can show local macOS notifications. Reminders are sent to the Telegram Bot API only after you configure Telegram notifications yourself. They may include a task title or ID and status description. Notification content excludes OAuth tokens, resumable URLs and raw server responses. Sending reminders still uses your configured bot credentials and destination chat ID. Telegram handles received information under its privacy policy.
- Website hosting: Cloudflare handles website requests separately from the local tool’s upload workflow. These static pages do not receive your OAuth credentials, working files or task database.
6. Retention and cleanup
Credentials remain locally until you sign out or delete them yourself. Eligible history details are cleaned up after 30 days by default; automatic cleanup can be adjusted or disabled. Hiding a task does not delete it. After detail cleanup, minimal duplicate-prevention records, completion ledgers and necessary scheduling records remain; cleanup does not erase all data.
App-managed staging copies are kept for 24 hours after confirmed successful YouTube processing by default, then cleaned up. Failed, recoverable or uncertain tasks are not automatically removed under this success rule. Claiming a folder may move files, and archived files may be the only originals. Deleting archived source files requires the relevant setting or an explicit manual action. These cleanup operations do not delete original files added manually. Actual retention depends on task status, settings and whether the tool is running.
7. Stop access, revoke authorization and delete data
- Stop future tasks: Pause automatic processing in the local tool. For active tasks, cancel and wait for the current network operation to return. Closing this website does not stop the local tool.
- Clear local credentials: Use account sign-out or the local command
python youtube_auth.py logout --account <account-alias>. Signing out clears that account’s local credential fields but keeps its channel binding. It does not call Google’s revocation endpoint or delete backups or uploaded content. - Revoke access at Google: Open Google Account third-party connections, find the relevant OAuth application and remove its access. The local tool can no longer use that authorization to access the API. Local data and remote videos are not automatically deleted.
- Delete local data: Use the tool’s history and file cleanup controls. To remove all application data, stop the local service first, confirm the actual data directory, backups and file locations, then delete application data, credentials and backups you no longer need. This may remove recovery and duplicate-prevention records. Avoid deleting the only copy of your files.
- Manage YouTube content: Uploaded videos, captions and other channel content must be managed separately through YouTube Studio or Google’s controls. Local deletion and authorization revocation do not delete remote content.
8. Privacy questions and policy updates
For questions about the tool’s data handling, contact the provider through the original channel where you obtained it. The project documentation currently provides no confirmed public support email. This page does not publish an unverified operator identity or contact address. Do not send passwords, OAuth client files, tokens, private videos or complete local configuration when asking for help.
This policy describes the current code and website. Changes to functionality, third-party transfers or hosting configuration should be reflected here with an updated effective date. This site does not claim that the tool has passed Google OAuth verification or a YouTube compliance audit.
Need to stop authorized access quickly? Pause local tasks, sign out, then remove the application in Google Account third-party connections. Check the local device, backups and YouTube Studio separately when deleting data.