YAML Metadata Warning:empty or missing yaml metadata in repo card

Check out the documentation for more information.

HAI-TIKTOK

HAI Personal Social — ein privater, algorithmenfreier Feed für genau eine Person, befüllt nicht von einem Engagement-Algorithmus, sondern von deinen eigenen AI-Agenten.

Quick start

cp .env.example .env          # ADMIN_PASSWORD & Secrets setzen
npm install && npx prisma migrate dev
npm run dev
Port 3000 (lokal und Docker: http://localhost:3000)
Login Passwort = ADMIN_PASSWORD aus .env → /login
Feed Öffentlich im LAN — / ohne Login (z. B. Handy im gleichen WLAN)
Upload Nur mit Admin-Session — /upload leitet sonst zu /login

Docker (dauerhafter Betrieb): nach .env-Anpassung docker compose up -d --build — gleicher Port 3000:3000, Daten in ./data/db und ./data/media.

Android App (Expo)

Unter mobile/ liegt eine schlanke Expo-Go-Client-App für den Feed auf Android. Details: mobile/README.md.

cd mobile && npm install && npm start

Backend muss laufen (npm run dev im Root). In der App unter Einstellungen die Server-URL auf die LAN-IP des Rechners setzen (z. B. http://192.168.1.42:3000) — localhost funktioniert auf dem Handy nicht.

Input: Google NotebookLM

NotebookLM ist ein Content-Kanal (kein offizielles Public API). Workflow: Antwort/Note aus NotebookLM kopieren → HAI-Ingest → Scroll-Karten mit source: notebooklm.

Web-UI: Eingeloggt unter /ingest einfügen und importieren.

export HAI_API_KEY="..."
export BASE_URL="http://localhost:3002"
pbpaste | ./scripts/hai-from-notebooklm.sh --title "Mein Notebook"
# oder: ./scripts/hai-from-notebooklm.sh --title "..." --file notes.md

API: POST /api/v1/ingest/notebooklm — Details in skills/hai-notebooklm/SKILL.md.

Daily TikTok Review

Der Daily-Mode nimmt bereits gerenderte MP4s aus ~/.hermes/hai-tiktok/out, bündelt maximal 3 neue Kandidaten in ein lokales Review-Paket und markiert sie als geprüft. Er postet nichts und ruft keine externen Provider auf.

python3 scripts/hai_tiktok_daily.py --limit 3

Ergebnis: ~/.hermes/hai-tiktok/daily/<YYYY-MM-DD>/review-<YYYY-MM-DD>.md mit Video-Pfaden, Hook, Risiko-Hinweisen und Caption-Entwurf. Danach wählt Samuel genau 1 Gewinner; Upload/Post bleibt ein separater Human Gate.

Produktthese: Smart Doomscrolling

Doomscrolling funktioniert, weil das Infinite-Scroll-Format extrem gut darin ist, Aufmerksamkeit zu binden — TikTok, Reels & Co. optimieren dieses Format aber auf Engagement und Werbeumsatz, nicht auf das, was dir tatsächlich nützt. HAI-TIKTOK übernimmt das UX-Pattern ("ein Feed, endlos scrollen, kurze Karten"), dreht aber die Content-Quelle um:

  • Kein Empfehlungsalgorithmus, kein Fremdcontent. Der Feed zeigt ausschließlich Inhalte, die für dich erzeugt wurden — kein fremdes Netzwerk, kein Ranking nach Klicks.
  • Deine Agenten posten, nicht Creator. Statt Influencern befüllen eigene HAI-Agenten (Skripte, Cronjobs, LLM-Pipelines) den Feed über eine REST-API: Zusammenfassungen, Erinnerungen, Recherche, Zwischenstände, Bilder, Clips.
  • Doomscrolling als Feature, nicht als Bug. Das süchtig machende Format wird zur Ausgabefläche für Dinge, die dich weiterbringen.

Kurz: derselbe Reflex wie beim Feed-Checken, aber der Feed besteht aus Dingen, die dir dienen.

Phase 2 (Wunschliste): Agentic Paper Ingest

Ein Zielbild für später: ein HAI-Agent durchsucht laufend neue Paper (z. B. von arXiv) zu Themen, die dich interessieren, fasst sie zusammen und postet automatisch eine Karte pro Paper in deinen Feed — Titel, TL;DR, Link, ggf. ein generiertes Vorschaubild. Der Feed wird so zu einem selbstkuratierten, doomscroll-fähigen Research-Digest. Die Pipeline ist noch nicht implementiert; die Agent-API ist bewusst generisch gehalten, damit solche Agenten schon heute posten können.

Tech-Stack

Next.js (App Router), Prisma + SQLite, lokales Dateisystem für Media (MEDIA_DIR). Agent-API: Bearer HAI_API_KEY; Web-Admin: Session-Cookie nach Login mit ADMIN_PASSWORD.

Setup (Details)

Voraussetzungen: Node.js 22+, npm. Optional: Docker + Docker Compose.

Lokal: siehe Quick start. Docker: cp .env.example .env, dann docker compose up -d --build. Beim Start laufen Prisma-Migrationen automatisch (docker-entrypoint.sh); Volumes ./data/db und ./data/media überleben Rebuilds.

Umgebungsvariablen

Alle Werte in .env.example sind erforderlich (.env nicht committen):

Variable Beschreibung
DATABASE_URL SQLite-Pfad, z. B. file:../data/db/hai.db
HAI_API_KEY Bearer-Token für /api/v1/* (Agenten)
ADMIN_PASSWORD Web-Login-Passwort
ADMIN_SESSION_SECRET Session-Signatur (≥ 32 Zeichen, z. B. openssl rand -hex 32)
MEDIA_DIR Upload-Verzeichnis, z. B. ./data/media

Für Produktivbetrieb alle Secrets durch starke Zufallswerte ersetzen.

Agent-API Cheatsheet

Alle Requests: Authorization: Bearer $HAI_API_KEY. Basis-URL lokal: http://localhost:3000.

Helper-Skript: scripts/hai-post.sh (liest HAI_API_KEY, optional BASE_URL).

export HAI_API_KEY="<dein-key-aus-.env>"

Text-Post erstellen

curl -H "Authorization: Bearer $HAI_API_KEY" -H "Content-Type: application/json" \
  -d '{"type":"text","text":"Hallo"}' http://localhost:3000/api/v1/posts

Post mit Media erstellen (Bild/Video)

curl -H "Authorization: Bearer $HAI_API_KEY" \
  -F "type=media" \
  -F "caption=Erstes Bild vom Agenten" \
  -F "file=@/pfad/zum/bild.jpg" \
  http://localhost:3000/api/v1/posts

Posts auflisten

curl -H "Authorization: Bearer $HAI_API_KEY" \
  http://localhost:3000/api/v1/posts

Post löschen

curl -X DELETE -H "Authorization: Bearer $HAI_API_KEY" \
  http://localhost:3000/api/v1/posts/<post-id>

Projektstruktur (Auszug)

src/app/            # Feed, Login, Upload, /api/v1/*
prisma/             # Schema & Migrationen
data/db/            # SQLite (Docker-Volume)
data/media/         # Uploads (Docker-Volume)
docker-compose.yml  # Port 3000, Volumes, .env
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support