AutoFX Studio

One tap. Filter, mirror, 1x speed, sound effects.

1 · Upload

MP4, MOV or WebM · up to 250 MB · processed on your device, nothing is uploaded.

Your video

File
Duration

Effects

Auto FilterReady
Auto MirrorReady
Normal Speed 1xReady
Auto Sound FXReady

AI Viral Hook

AI studies frames of your video, picks a viral hook style and writes an original hook line. The hook is then drawn as animated graphics with synthesized sound on your device. No AI video-generation provider is connected, so it is not generated footage. If AI analysis fails you will see an error, never a made-up result.

Edited in real time at 1x speed, so processing takes as long as the video. Keep this tab open and in the foreground.

Final video

Size
Scene cuts
DOWNLOAD VIDEO

API Configuration

Connection status: Not tested

No backend connected yet.

This page never stores your token: not in the HTML, JavaScript, browser storage or the page’s database. Anyone who could open the page could read a token kept there. The token belongs in a backend secret, and this page only ever sees a masked version such as hf_••••1234.

Where to add your token

  1. Create a token at huggingface.co/settings/tokens (a read-only token is enough).
  2. Create a Cloudflare Worker and paste in the code from autofx-worker.js (the file shared in the chat).
  3. Add the token as a secret named HF_TOKEN: Worker → Settings → Variables and Secrets, or run wrangler secret put HF_TOKEN. Also add a plain variable ALLOWED_ORIGIN with the exact address of the site where AutoFX is hosted (required). Optional: HF_MODELS, a comma-separated list of model ids.
  4. Deploy, copy the Worker URL, paste it above, tap Save URL, then Test API Connection.
  5. Host AutoFX Studio on your own domain. Published claude.ai pages block requests to other sites, so the test will show Failed here even with a working backend.
Old status-only code (outdated, use autofx-worker.js instead)
export default {
  async fetch(req, env) {
    const h = { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': env.ALLOWED_ORIGIN || '*', 'Access-Control-Allow-Headers': 'content-type' };
    const out = (o, s = 200) => new Response(JSON.stringify(o), { status: s, headers: h });
    if (req.method === 'OPTIONS') return new Response(null, { headers: h });
    if (new URL(req.url).pathname !== '/status') return out({ error: 'not found' }, 404);
    if (!env.HF_TOKEN) return out({ connected: false, error: 'HF_TOKEN secret is not set on the backend' });
    const r = await fetch('https://huggingface.co/api/whoami-v2', { headers: { Authorization: 'Bearer ' + env.HF_TOKEN } });
    if (!r.ok) return out({ connected: false, error: 'Hugging Face rejected the token (' + r.status + ')' });
    const j = await r.json();
    return out({ connected: true, user: j.name, key: 'hf_••••' + env.HF_TOKEN.slice(-4) });
  }
};