HEPHEISTO A.R.E.S
Google Apps Script · Operations Console

AutomatisiertesAutomated YouTube-DeploymentYouTube Deployment

Automated Recording & Enlisted Statistics

A.R.E.S verwandelt eine Google-Tabelle in ein Kommandozentrum für deinen Enlisted-YouTube-Kanal: Dateinamen, Thumbnails, Titel, Tags, Beschreibungen, Timestamps, Shorts und Playlists — generiert und veröffentlicht aus einer einzigen Zeile. A.R.E.S turns a Google Sheet into a command center for your Enlisted YouTube channel: filenames, thumbnails, titles, tags, descriptions, timestamps, shorts and playlists — generated and published from a single row.

Coming SoonComing Soon Wie es funktioniertHow it works
HEPHEISTO logo
7
Werkzeuge im MenüTools in the menu
2
Verzahnte SystemeConnected systems
2
OBS-HotkeysOBS hotkeys
0
Hardcoded SecretsHardcoded secrets
Mission Briefing

Eine Tabelle. Der komplette Publishing-Workflow.One sheet. The complete publishing workflow.

A.R.E.S ist ein Google-Apps-Script-Projekt, das direkt in Google Sheets läuft. Du pflegst deine Gameplay-Aufnahmen in Zeilen — A.R.E.S erledigt alles, was danach kommt, über die YouTube Data API, die Google Docs API und Google Drive. A.R.E.S is a Google Apps Script project that runs right inside Google Sheets. You keep your gameplay recordings in rows — A.R.E.S handles everything that follows, via the YouTube Data API, the Google Docs API and Google Drive.

PHASE 01

ErfassenCapture

Battle, Fraktion, Tier, Map, Typ & Modus in eine Zeile eintragen.Enter battle, faction, tier, map, type & mode into a row.

PHASE 02

BenennenName

Standardisierter Dateiname + Overlay-Textdateien für die Aufnahme.Standardized filename + overlay text files for recording.

PHASE 03

AnreichernEnrich

Thumbnail, Timestamps aus Drive, KI-Titel & -Beschreibung.Thumbnail, timestamps from Drive, AI title & description.

PHASE 04

VeröffentlichenPublish

Geplanter Upload an YouTube inkl. automatischer Playlist-Zuordnung.Scheduled upload to YouTube incl. automatic playlist assignment.

PHASE 05

NachverfolgenTrack

Status springt stündlich von „Planned" auf „Published".Status flips hourly from "Planned" to "Published".

ARES · Row Action Log
[10:42:01] ▶ Generate Filename (Row)
[10:42:01] → 2026-06-02-08-30-br3-germany-stalingrad-invasion-attack
[10:42:02] Overlay-TXT geschrieben · Status → DraftOverlay TXT written · Status → Draft
[10:42:18] ▶ Generate YouTube Data (Row)
[10:42:19]Template geladen · Platzhalter ersetzt · Timestamps eingefügtTemplate loaded · placeholders replaced · timestamps inserted
[10:42:20] Video aktualisiert · Playlist zugeordnet · Status → PlannedVideo updated · playlist assigned · Status → Planned
[11:00:00] ⏲ autoUpdatePlannedStatusHourly()
[11:00:00] ✓ Status → Published
Loadout

Die sieben WerkzeugeThe seven tools

Jeder Eintrag erscheint im 🔥 A.R.E.S 🔥-Menü deiner Tabelle und arbeitet immer mit der aktuell ausgewählten Zeile.Each entry appears in the 🔥 A.R.E.S 🔥 menu of your sheet and always works on the currently selected row.

🏷️

Filename Generator

Baut aus Datum, Tier, Fraktion, Battle, Map, Typ und Modus einen sauberen Dateinamen. Schreibt zusätzlich Overlay-Textdateien (z. B. fraction.txt, map.txt) nach Google Drive.Builds a clean filename from date, tier, faction, battle, map, type and mode. Also writes overlay text files (e.g. fraction.txt, map.txt) to Google Drive.

Drive · Step-Workflow
🎬

YouTube Data Generator

Lädt ein Google-Docs-Template, ersetzt {{Platzhalter}} aus der Zeile, fügt Timestamps ein und aktualisiert das Video als privaten, geplanten Upload.Loads a Google Docs template, replaces {{placeholders}} from the row, inserts timestamps and updates the video as a private, scheduled upload.

YouTube API · Docs
🖼️

Thumbnail Generator

Spricht eine externe Thumbnail-API (ARES_API_BASE) an, wählt aus Projekt-Templates und optionalem Hintergrundbild und liefert eine fertige Vorschau-URL.Calls an external thumbnail API (ARES_API_BASE), picks from project templates and an optional background image and returns a ready preview URL.

External API
🎞️

Shorts Generator

Findet den passenden Short per Dateiname, baut Titel/Beschreibung/Hashtags — optional per OpenAI — und hängt das Video an die Shorts-Playlist.Finds the matching short by filename, builds title/description/hashtags — optionally via OpenAI — and attaches the video to the shorts playlist.

YouTube API · AI optional
📥

Timestamp Import

Liest .txt-Dateien aus einem Drive-Ordner, erkennt Fraktion & Tier, schreibt Timestamps, legt Shorts an und archiviert die Quelldatei. Live-Log inklusive.Reads .txt files from a Drive folder, detects faction & tier, writes timestamps, creates shorts and archives the source file. Live log included.

Drive · Live Import
🧭

Tools & NavigationTools & Navigation

Sprung zur nächsten freien Zeile, Querverweise zwischen Battles / Shorts / Timestamps, Direktlinks zu YouTube & Studio sowie ein Sheet-Schema-Export als JSON.Jump to the next free row, cross-references between Battles / Shorts / Timestamps, direct links to YouTube & Studio, plus a sheet schema export as JSON.

Utilities
System Architecture

Modularer AufbauModular structure

Der Code liegt unter src/ und wird per clasp in Google Apps Script deployt. Feature-Logik ist nach Domänen getrennt; geteilte Helfer und Konfiguration liegen zentral.The code lives under src/ and is deployed to Google Apps Script via clasp. Feature logic is split by domain; shared helpers and configuration live centrally.

config.gsScript-Properties, Validierung & das Configuration-Modal. Keine hardcoded Defaults — fehlt etwas, erzwingt A.R.E.S die Einrichtung.Script properties, validation & the configuration modal. No hardcoded defaults — if something is missing, A.R.E.S forces setup.
menu.gsonOpen() baut das A.R.E.S-Menü mit Tools- und Configuration-Untermenüs auf.onOpen() builds the A.R.E.S menu with Tools and Configuration submenus.
global.gsGeteilte Logik: Playlist-Regeln, Datums-Parsing, Status-Sets, stündliches Status-Update.Shared logic: playlist rules, date parsing, status sets, hourly status update.
youtubeVideo/Modal, Template-Parsing & Upload für vollständige Gameplay-Videos.Modal, template parsing & upload for full gameplay videos.
youtubeShorts/Shorts-Modal, KI-Backend (OpenAI), Konfiguration & Helfer.Shorts modal, AI backend (OpenAI), configuration & helpers.
filename/Schrittweiser Filename-Workflow inkl. Overlay-TXT-Generierung.Step-by-step filename workflow incl. overlay TXT generation.
helpers/ · tools/String-/Sheet-Helfer, Navigations-Sprünge und der JSON-Schema-Exporter.String/sheet helpers, navigation jumps and the JSON schema exporter.
src/ · tree
src/
├─ config.gs · menu.gs · global.gs
├─ youtubeVideo/
│  ├─ YoutubeVideoMain.gs
│  ├─ YoutubeVideoHelper.gs
│  ├─ YoutubeVideoTemplates.gs
│  └─ YoutubeVideoView.html
├─ youtubeShorts/
│  ├─ YoutubeShortsMain.gs
│  ├─ YoutubeShortsAI.gs
│  └─ YoutubeShortsView.html
├─ filename/ · helpers/ · tools/
└─ appsscript.json
Multi-Channel: Über .clasp/ sind mehrere Deployments hinterlegt — derselbe Code wird per npm run push:all auf mehrere Kanäle gespielt. Multiple deployments are configured under .clasp/ — the same code is pushed to several channels via npm run push:all.
Field Recorder · OBS

Das Aufnahme-GegenstückThe recording counterpart

A.R.E.S besteht aus zwei verzahnten Systemen. Im Sheet planst und veröffentlichst du — auf deinem PC läuft parallel obs_marker.lua, ein OBS-Script, das während der Aufnahme Marker setzt, Highlights mit eindeutigen IDs versieht und Dateien automatisch passend benennt. A.R.E.S consists of two interlocking systems. In the sheet you plan and publish — on your PC, obs_marker.lua runs alongside it, an OBS script that sets markers during recording, tags highlights with unique IDs and renames files automatically.

🔥 A.R.E.S Sheet

Google Apps Script · Planung & UploadGoogle Apps Script · planning & upload
  • schreibt Overlay-TXT + video-file-name.txtwrites overlay TXT + video-file-name.txt
  • importiert Marker-TXT zurückimports the marker TXT back
  • erzeugt Shorts aus Highlight-IDscreates shorts from highlight IDs
Geteilte Dateien
(Drive / Sync)
Shared files
(Drive / sync)
video-file-name.txt
fraction.txt · map.txt …
|UID| Highlight

🎥 OBS Marker

Lua-Script · Aufnahme am PCLua script · recording on PC
  • liest Overlays als Live-Text im Streamreads overlays as live text in the stream
  • setzt Marker & vergibt Highlight-UIDssets markers & assigns highlight UIDs
  • benennt Aufnahme + Marker-TXT umrenames recording + marker TXT

Marker per HotkeyMarkers via hotkey

Zwei frei belegbare Hotkeys schreiben Zeitmarken direkt in die Marker-Datei.Two freely assignable hotkeys write time markers straight into the marker file.

F1
New SquadNormaler Marker zum Jetzt-ZeitpunktNormal marker at the current time
F2
HighlightMarker −10 s + eindeutige Highlight-UIDMarker −10 s + unique highlight UID
Die UID ist die Brücke: F2 erzeugt eine ID wie |1768350042-3492|. Genau dieses Muster liest das Sheet beim Import aus und legt daraus automatisch einen Short namens UID.mkv an.The UID is the bridge: F2 generates an ID like |1768350042-3492|. The sheet reads exactly this pattern on import and automatically creates a short named UID.mkv from it.

Beim AufnahmestoppWhen recording stops

  • Letzter Marker wird zu Battle Results, Marker-TXT wird geschrieben.Last marker becomes Battle Results, the marker TXT is written.
  • Aufnahme & TXT werden auf video-file-name.txt umbenannt — mit ±1 s-Fallback, falls OBS' Zeitstempel abweicht.Recording & TXT are renamed to video-file-name.txt — with a ±1 s fallback if OBS' timestamp drifts.
  • Backtrack-Clips werden nach Highlight-UID in einen Unterordner einsortiert.Backtrack clips are sorted into a subfolder by highlight UID.
  • Verbrauchte Overlay-Dateien werden aufgeräumt.Used overlay files are cleaned up.
2026-06-02 08-30-15.txt
00:00 New Squad
02:14 New Squad
04:51 Highlight |1768350042-3492|
07:38 New Squad
09:02 Highlight |1768350199-8120|
12:47 Battle Results
Kein Fokusverlust:No focus loss: Beim Aufnahmestart erzeugt das Script bewusst keine Ordner und keine Popups — du bleibst im Spiel. Aufräum- und Sortier-Schritte (mit kurzen PowerShell-Aufrufen) passieren erst beim Stop. On recording start the script deliberately creates no folders and no popups — you stay in the game. Cleanup and sorting steps (with short PowerShell calls) only happen on stop.

OBS einrichtenSet up OBS

Script in OBS ladenLoad the script in OBS

In OBS (getestet mit 31.1.2) unter Werkzeuge → Scripts die Datei obs_marker.lua hinzufügen.In OBS (tested with 31.1.2), add obs_marker.lua under Tools → Scripts.

Ordner & Username setzenSet folders & username

In den Script-Eigenschaften die beiden Ordner und optional den A.R.E.S-Username angeben:In the script properties, set the two folders and optionally the A.R.E.S username:

SettingBeschreibungDescription
marker_folderOBS-Aufnahmeordner — hier landen Aufnahme & Marker-TXTOBS recording folder — where recording & marker TXT land
overlay_folderSynchronisierter Overlay-Ordner (Drive/Nextcloud) mit den TXT-Dateien aus dem SheetSynced overlay folder (Drive/Nextcloud) with the TXT files from the sheet
ares_usernameOptional — zur Zuordnung passend zum SheetOptional — to match the sheet

Hotkeys zuweisenAssign hotkeys

Unter Einstellungen → Hotkeys die Aktionen Create Marker (z. B. F1) und Marker -10 Seconds (z. B. F2) belegen. Fertig — ab jetzt setzt du Marker direkt aus dem Spiel.Under Settings → Hotkeys, bind the actions Create Marker (e.g. F1) and Marker -10 Seconds (e.g. F2). Done — from now on you set markers straight from the game.

Im A.R.E.S Beispiel-Sheet (Weg A) ist die passende Ordnerstruktur bereits beschrieben. Lege deinen overlay_folder auf denselben synchronisierten Ordner, in den der Filename Generator schreibt.The matching folder structure is already described in the A.R.E.S example sheet (Path A). Point your overlay_folder at the same synced folder the filename generator writes to.
Deployment Protocol

EinrichtungSetup

So richtest du A.R.E.S ein — alles was du brauchst ist eine eigene Kopie des Beispiel-Sheets.Here is how you set up A.R.E.S — all you need is your own copy of the example sheet.

A.R.E.S Beispiel-Sheet kopierenCopy the A.R.E.S example sheet

Öffne das von HEPHEISTO bereitgestellte Beispiel-Spreadsheet und erstelle dir eine eigene Kopie über Datei → Kopie erstellen. Der komplette A.R.E.S-Code und alle Tabellenblätter sind bereits enthalten.Open the example spreadsheet provided by HEPHEISTO and make your own copy via File → Make a copy. The complete A.R.E.S code and all sheets are already included.

Coming SoonComing Soon

Berechtigungen bestätigenAuthorize permissions

Lade deine Kopie neu — das Menü 🔥 A.R.E.S 🔥 erscheint. Beim ersten Ausführen einer Aktion fragt Google nach Berechtigungen für YouTube, Docs und Drive. Bestätige diese mit deinem Kanal-Account.Reload your copy — the 🔥 A.R.E.S 🔥 menu appears. On the first action, Google asks for permissions for YouTube, Docs and Drive. Confirm them with your channel account.

Die YouTube Data API v3 ist im Beispiel-Sheet bereits als Advanced Service aktiviert.The YouTube Data API v3 is already enabled as an Advanced Service in the example sheet.

Variablen definierenDefine your variables

Öffne ⚙️ Configuration → 💎 Variables und trage deine eigenen Werte ein. Diese werden sicher in den Script Properties gespeichert.Open ⚙️ Configuration → 💎 Variables and enter your own values. They are stored securely in the script properties.

PropertyBeschreibungDescription
ARES_USERNAMEKanal-/Projekt-KennungChannel / project identifier
ARES_API_BASEBasis-URL der Thumbnail-APIBase URL of the thumbnail API
ARES_TEMPLATE_VIDEO_DOC_IDGoogle-Doc-ID des Video-TemplatesGoogle Doc ID of the video template
ARES_TEMPLATE_SHORTS_DOC_IDGoogle-Doc-ID des Shorts-TemplatesGoogle Doc ID of the shorts template
OPENAI_API_KEYOptional — schaltet die KI-Metadaten für Shorts freiOptional — unlocks AI metadata for shorts

LoslegenGet going

Trage deine erste Aufnahme im Battles-Sheet ein, wähle die Zeile und starte über das A.R.E.S-Menü. Fertig. Optional: einen stündlichen Trigger für autoUpdatePlannedStatusHourly anlegen.Enter your first recording in the Battles sheet, select the row and start from the A.R.E.S menu. Done. Optional: add an hourly trigger for autoUpdatePlannedStatusHourly.

Field Manual

Häufige FragenFrequently asked questions

Antworten auf das, was beim Einsatz von A.R.E.S typischerweise aufkommt.Answers to what typically comes up when running A.R.E.S.

Nein. Den eigentlichen Video-Upload machst du wie gewohnt in YouTube. A.R.E.S findet das passende Video bzw. nutzt den Link aus der Zeile und aktualisiert dann Metadaten — Titel, Beschreibung, Tags, Sichtbarkeit, geplanter Veröffentlichungszeitpunkt — und ordnet Playlists zu.No. The actual video upload you do in YouTube as usual. A.R.E.S finds the matching video or uses the link from the row and then updates metadata — title, description, tags, visibility, scheduled publish time — and assigns playlists.
Kopiere einfach das Beispiel-Sheet: kein Node.js, kein clasp, alles vorbereitet.Just copy the example sheet: no Node.js, no clasp, everything is ready to go.
Nein. Der Key ist optional und schaltet lediglich die KI-Buttons im Shorts-Generator frei. Ohne Key arbeitet A.R.E.S mit den aus der Zeile abgeleiteten Standardwerten und Templates weiter.No. The key is optional and only unlocks the AI buttons in the shorts generator. Without it, A.R.E.S works with the defaults and templates derived from the row.
Im Sheet Playlists hinterlegst du Regeln aus Fraction, Tier, Type und Format mit der jeweiligen Playlist-ID. Beim Upload sucht A.R.E.S die erste passende Zeile und fügt das Video automatisch dieser Playlist hinzu — für Videos und Shorts getrennt.In the Playlists sheet you define rules from faction, tier, type and format with the corresponding playlist ID. On upload, A.R.E.S finds the first matching row and adds the video to that playlist automatically — separately for videos and shorts.
A.R.E.S liest .txt-Dateien aus einem Drive-Ordner, erkennt Fraktion und Tier aus dem Dateinamen, schreibt die Zeitmarken ins Timestamps-Sheet und legt aus markierten Highlights automatisch Short-Einträge an. Verarbeitete Dateien wandern in einen Archiv-Ordner. Ein Live-Log zeigt den Fortschritt.A.R.E.S reads .txt files from a Drive folder, detects faction and tier from the filename, writes the timestamps into the Timestamps sheet and automatically creates short entries from flagged highlights. Processed files move to an Archiv folder. A live log shows the progress.
Der Filename-Generator schreibt kleine Textdateien (z. B. fraction.txt, map.txt, br-fraction.txt) nach Drive. Diese kannst du in deiner Aufnahme- oder Rendering-Software als Text-Overlays einbinden, sodass Battle-Infos automatisch im Bild erscheinen.The filename generator writes small text files (e.g. fraction.txt, map.txt, br-fraction.txt) to Drive. You can wire these into your recording or rendering software as text overlays, so battle info appears in the frame automatically.
Nein. API-Basis, Username, Template-IDs und OpenAI-Key liegen ausschließlich in den Script Properties und werden über das Configuration-Modal gepflegt. Der Code enthält bewusst keine hardcoded Defaults.No. API base, username, template IDs and the OpenAI key live exclusively in the script properties and are managed via the configuration modal. The code deliberately contains no hardcoded defaults.
Das Menü wird von onOpen() beim Laden der Tabelle erzeugt. Lade das Spreadsheet neu und stelle sicher, dass ein Sheet Statistics existiert (der Counter in A18 wird beim Öffnen hochgezählt).The menu is created by onOpen() when the sheet loads. Reload the spreadsheet and make sure a Statistics sheet exists (the counter in A18 is incremented on open).
Über zwei geteilte Dateiformate in einem synchronisierten Ordner: Das Sheet schreibt Overlay-TXT und video-file-name.txt, OBS liest diese, setzt während der Aufnahme Marker und vergibt Highlight-UIDs wie |1768350042-3492|. Die fertige Marker-TXT wandert zurück ins Sheet, das daraus Timestamps und Shorts erzeugt. Die UID ist dabei die eindeutige Klammer zwischen Aufnahme und Veröffentlichung.Via two shared file formats in a synced folder: the sheet writes overlay TXT and video-file-name.txt, OBS reads these, sets markers during recording and assigns highlight UIDs like |1768350042-3492|. The finished marker TXT travels back into the sheet, which generates timestamps and shorts from it. The UID is the unique link between recording and publishing.
Nein. Das OBS-Script erzeugt beim Aufnahmestart bewusst keine Ordner und keine PowerShell-Fenster — du verlierst nie den Fokus aufs Spiel. Aufräumen, Umbenennen und Einsortieren passieren erst beim Aufnahmestopp, wo kurze Popups unkritisch sind.No. On recording start the OBS script deliberately creates no folders and no PowerShell windows — you never lose focus on the game. Cleanup, renaming and sorting only happen on recording stop, where brief popups don't matter.