Import what you already have
A deck, a PDF, a Google Slides link, or the pictures and clips on your disk — each becomes a flow.
Not every flow starts in a browser. A deck you presented last quarter, a folder of mockups, a clip exported from another tool: each of these is content already, and becomes a flow whose steps show an asset rather than act on a page. Those flows compose without a browser, and they get everything a recorded flow gets — narration, intro and outro cards, a music bed, a presenter.
Decks, PDFs and links
ff deck ./q3-review.pptx
ff deck ./handbook.pdf
ff deck https://docs.google.com/presentation/d/<id>/edit
ff deck https://example.com/launch-deck.pdfAll four are accepted from the CLI. A file is uploaded; a link is handed to the control plane, which fetches it — that side is the only one that can refuse a link safely, since it knows which addresses it must never request. Conversion happens there too, because laying a deck out faithfully needs LibreOffice.
What comes back is a draft flow: one step per slide, in order, with speaker notes as narration verbatim. Slides with no notes are left silent for the narration pass to fill, which is where a model earns its place — rewriting an author's own words would be a downgrade.
A PDF becomes one step per page, pictures only. A PDF carries no speaker notes to narrate.
Google Slides links
Slides serves any link-shared presentation as a real .pptx, so no export step is needed. A deck shared with nobody
answers a sign-in page instead, and that is refused rather than imported as a corrupt file. A "Publish to the web"
link is a viewer rather than a file — send the ordinary /edit link.
Pictures and clips
ff media ./shots/01-overview.png ./shots/02-detail.png --name "Wallet at a glance"
ff media ./demo.mp4 --name "Approvals, end to end".png, .jpg, .webp, .svg, .mp4 and .webm, in the order given — one step per file. These
need no office suite, so the work happens locally: the files are uploaded to your organisation's
library and the flow is written to .fixtureframe/flows as well as saved.
Stills declare screenshots and video; a set containing a clip declares the video alone, since a
clip is not a screenshot. --outputs overrides both.
Nothing invents narration. What is said over a picture is yours to write.
Then write the words
--local-only stops before saving, leaving the flow file for you to edit:
ff media ./shots/*.png --name "Wallet at a glance" --local-only
# write narration, titles and card text in the file
ff publish .fixtureframe/flows/wallet-at-a-glance.flow.jsonThat is the same file format you can write from scratch, with local picture paths and all. See Flow files.
Or skip the file: save it straight away and write the narration in Studio, against a flow that already exists and already plays.