Trialr is a local app for publishing multiple videos as separate Instagram Trial Reels through Zernio. Add up to ten vertical videos, write one caption, and Trialr publishes one Reel per video with manual graduation enabled.
It also groups published Reels into tests so you can refresh analytics, compare variants, and identify the current leader.
- Batch publishing for up to 10 MP4 or MOV videos
- One shared caption for the entire batch
- Instagram Trial Reels with manual graduation
- Drag-and-drop ordering and editable variant names
- 9:16 video previews and a playback lightbox
- Reusable tests with hypotheses and primary metrics
- Zernio and Instagram post tracking
- Manual analytics refresh with recent snapshots
- Light, System, and Dark appearance modes
- Local JSON persistence with no database required
- macOS, Windows, or Linux
- Node.js 20 or newer
- A free Zernio account
- An Instagram Business or Creator account. Personal accounts cannot publish through Instagram's API.
- Codex Desktop, Claude Code, or a terminal
- Download this repository as a ZIP and extract it, or clone it with Git.
- Open the extracted
trialrfolder in Codex Desktop or Claude Code. - Paste the prompt below into the coding agent.
Initialize this Trialr project for local use. Read README.md and AGENTS.md first. Verify that Node.js 20 or newer and npm are available. Run npm install. If .env does not exist, create it from .env.example. Pause and tell me to add my ZERNIO_API_KEY directly to .env myself. Do not ask me to paste the key into chat and never display it back to me. After I confirm it is saved, run npm test and npm run build. Start npm run dev, open or give me the local app URL, and help me connect my Instagram account. Do not publish any Reel during setup or testing.
The agent should install the dependencies, prepare the environment file, validate the project, and start the local app.
- Create or sign in to a Zernio account.
- In Zernio, open Settings → API Keys.
- Select Create API Key and create a read-write key for Trialr.
- Copy the key immediately. Zernio only shows the complete key once.
- In the Trialr folder, copy
.env.exampleto a new file named.env. - Add the key:
ZERNIO_API_KEY=your_zernio_api_key_here
PORT=4173- Restart Trialr after changing
.env. - Open Trialr and select Connect Instagram. Complete Zernio's hosted Instagram authorization flow.
Zernio's current API quickstart is available at docs.zernio.com. Its Instagram guide covers supported account types, formats, limits, and OAuth permissions.
npm install
cp .env.example .env
npm test
npm run devAdd your Zernio key to .env, restart the development server, and open the local URL printed in the terminal.
For a production-style local run:
npm run build
npm startThen open http://localhost:4173.
- Connect or select your Instagram account.
- Create a test and choose the metric you want to optimize.
- Upload up to ten vertical videos.
- Click a filename to give each variation a useful label.
- Add one caption for the batch.
- Review the queue, then publish.
- Open Tests and select Refresh stats as the Reels collect data.
Publishing is real. Clicking the publish button sends each ready video to the selected Instagram account immediately. Trialr does not publish anything automatically when the app starts.
- MP4 or MOV
- 9:16 vertical format
- 3 to 90 seconds
- Maximum 300 MB per file
- Maximum 10 videos per batch
- Captions up to 2,200 characters
- Your Zernio API key stays in the local Node server and is never sent to the browser.
- Test history is stored in
data/experiments.json. .envanddata/experiments.jsonare excluded from Git.- Uploaded videos are sent to Zernio so Zernio can publish them to Instagram.
- Turning the local server off does not erase saved tests.
The local JSON file is not a cloud backup. Copy it somewhere safe if the experiment history matters. Moving to another computer requires copying that file too.
Open http://localhost:5173/?demo=1 while the development server is running to inspect the interface with fictional accounts, videos, tests, and analytics. Demo mode cannot publish.
- Confirm the app is running through
npm run devornpm start. Do not openindex.htmldirectly. - Confirm
.envexists and containsZERNIO_API_KEY. - Restart the server after changing
.env. - Confirm the Instagram account is Business or Creator and completed Zernio authorization.
Instagram analytics may take time to appear. Refresh the test later. Some metrics can be unavailable or return zero depending on the post and Instagram's current reporting.
Stop the other local server, or change PORT in .env before running npm start.
Never paste an API key into source code, a GitHub issue, a screenshot, or a chat message. Keep it only in .env. If a key is exposed, revoke it in Zernio and create a new one.
Trialr is an independent project and is not affiliated with Instagram, Meta, or Zernio.
