Publit.Si

Install the tools

Publit.Si needs Node.js, pnpm, ffmpeg (to read your videos) and cloudflared (for the tunnel). One block of commands per system, run inside the publitsi folder.

You need

  • Node.js 22 or newer: check with node -v
  • On the Mac: Homebrew
  • On Windows: winget (built into Windows 10/11)

MacMac

  1. In the Terminal:

    brew install ffmpeg cloudflared
    brew install whisper-cpp   # optional: analyse existing videos
    corepack enable            # provides the right pnpm version
    pnpm install
    cp .env.example .env
    pnpm local:setup

WindowsWindows

  1. In PowerShell:

    winget install OpenJS.NodeJS.LTS Gyan.FFmpeg Cloudflare.cloudflared
  2. Close PowerShell and open a new window, so the new tools are found. Then:

    corepack enable
    pnpm install
    Copy-Item .env.example .env
    pnpm local:setup
  3. Optional, to analyse existing videos: download whisper-cli.exe from the whisper.cpp releases and put its folder on PATH.

LinuxLinux

  1. On Debian or Ubuntu:

    sudo apt install ffmpeg libsecret-tools
    sudo apt install xdg-utils libnotify-bin zenity   # desktop only
  2. Install cloudflared from pkg.cloudflare.com or the .deb from the cloudflared releases. On Fedora, enable RPM Fusion and use sudo dnf install ffmpeg libsecret plus the .rpm.

  3. Then:

    corepack enable
    pnpm install
    cp .env.example .env
    pnpm local:setup

If pnpm install fails while building better-sqlite3, run sudo apt install build-essential python3 and try again.

Read the checklist

  1. pnpm local:setup sets Publit.Si up on this computer: the data folder, the database, a random key for your tokens (Mac: Keychain, Windows: DPAPI, Linux: keyring or a private key file) and, if whisper-cli is installed, the speech model (about 470 MB, once). Then it prints a checklist. It never writes to .env.

  2. What you'll see (shortened, before any platform is set up):

    Data: ~/Library/Application Support/Publit.Si
    
    ✓ Token key in the macOS Keychain
    ✓ .env present
    ✗ PUBLITSI_PUBLIC_URL set (Instagram/TikTok only)
        → Tunnel domain, e.g. https://publish.example.com – SETUP.md step 3
    ✗ Google OAuth client set (YouTube)
        → SETUP.md step 5; redirect http://localhost:3000/api/oauth/youtube/callback
    ✓ ffprobe (video duration/format)
    ✓ cloudflared (Instagram/TikTok only)
    …
  3. Green ✓ for .env, ffprobe and cloudflared is what you need now. The platform keys stay ✗ until steps 3 to 6.

You can run pnpm local:setup again at any time. It only adds what's missing, keeps your data and shows what's still to do.

Check

pnpm local:setup shows ✓ for .env, ffprobe and cloudflared. YouTube only: cloudflared and the tunnel lines may stay ✗.

Common problems

Stuck? Write to us. We're happy to help. Leave out secrets and tokens.