A personal, self-hosted pipeline for producing and publishing my own videos.
Single operator · not a public service · no third-party accounts
aura-stream is a set of tools I built for myself to run one part-time video production workflow end to end: picking a topic, drafting a script, generating visuals and narration with AI models, assembling the cut, publishing it to a YouTube channel I own, and then reading the performance figures of those same videos so I can decide what to make next.
It runs on my own computer. There is no hosted product, no sign-up, and no way for anyone else to log in or connect their account. I am the only user, and the only channels it touches are ones I own and operate.
One authorisation per channel. videos.insert uploads to the channel that owns the
credential used for the request, so each of my channels is authorised separately and has its own stored
refresh token. Expected volume is at most two or three uploads per week across the channels
I own.
| Operation | Scope requested | Why |
|---|---|---|
videos.insertplanned |
youtube.upload |
Upload one finished video file to the channel that owns the credential. Title, description, tags and
privacy status are entered by me in the client's upload form — which offers
public, unlisted and private — before any request is sent. Nothing is uploaded without me
completing and submitting that form for that specific video.
The upload response returns the video resource, including the video ID, so the local project record can cite the exact upload it produced. No read scope is requested — the response alone is sufficient. |
| YouTube Analytics planned |
— (not yet requested) |
Later, read aggregate retention, click-through rate and average view duration for my own videos only, to judge which formats work. The scope for this is deliberately not requested until the feature is actually built. |
Producing a video does involve third-party AI services: text-to-video and image models and a text-to-speech provider receive the prompts and generate the footage and narration used in the video. That is how the video gets made, and it happens before anything touches YouTube.
Those services never receive YouTube data. They do not receive OAuth tokens, video IDs, channel identifiers, or performance metrics. The two halves of the pipeline are separate: generation happens first with no YouTube involvement, then the finished file is uploaded to YouTube and the resulting ID stays on my own machine.
The OAuth refresh token for each authorised channel is stored on my own machine by a local service bound to
127.0.0.1, which is not reachable from the internet. Tokens are never embedded in the components
that make API calls, and are never sent anywhere other than Google's token endpoint.
I can revoke this client's access at any time via the Google security settings page, which invalidates the stored token.
What is stored, for how long, and how it is deleted: Privacy Policy.
This client is an API Client of YouTube API Services. Its use of those services is governed by the YouTube Terms of Service, and Google's handling of data is described in the Google Privacy Policy.