Frame Graphics — User & Field Reference Guide — firstlocal.studio
FirstLocal.studio — Frame Graphics
Documentation

User & Field
Reference Guide

Everything you need to write instructions, configure your brand, generate 1920×1080 overlay graphics, and export them for any video editor — every type explained, every field documented.

ProductFrame Graphics v1
Applies toFrameGraphics.html
PlatformAny modern browser
Publisherfirstlocal.studio
Contents
01

How Frame Graphics works

Frame Graphics is a single HTML file. Open it in your browser and it runs entirely on your machine — no server involved at any point.

You write instructions in plain text — one line per graphic. The parser reads each line and renders a 1920×1080 PNG for every valid instruction. Every graphic uses your brand colors and heading font automatically. When you're done, download individual PNGs or ZIP the entire set as a numbered archive.

The tool makes no outbound network calls during use. After fonts load from Google Fonts CDN on first open (and cache in your browser), Frame Graphics works completely offline. Projects are saved as JSON files on your machine — not in a cloud account.

01
Configure your brand once
Open Brand Settings in the left panel. Set Color 1 (primary accent), Color 2 (gradient end), and your heading font. These apply to every graphic you generate. Change them and hit Generate again to re-render the full set.
02
Write your instruction set
Type one graphic per line in the Instructions textarea. Each line names a type, optionally a position, optionally a timestamp, and the content fields for that type. Comments start with // or # and are ignored. The Reference panel in the sidebar has the full cheat sheet — no switching windows.
03
Generate
Press ⚡ Generate or Ctrl+Enter (Cmd+Enter on Mac). The parser reads every valid line and renders each graphic onto a 1920×1080 canvas. Cards appear on the right. Invalid or comment lines are silently skipped.
04
Edit and export
Review each card. Use the 9-dot grid to adjust position, the size/opacity sliders for compositing control, and the Edit button to change text fields without regenerating the full set. Download individual PNGs or ZIP ALL for batch export.
02

Instruction syntax

Every graphic is defined by a single line of plain text. The parser is forgiving — you don't need to get every field right on the first try.

Line structure
type
Required. The name of the graphic type. Must be the first word on the line.
Example: stat · barchart · lowerthird
position
Optional. Where on the 1920×1080 canvas the graphic is placed. Must come immediately after the type, before at or any fields. If omitted, the type's default position is used.
See §4 — Position reference for all 11 values.
at timestamp
Optional. A video timecode label — e.g. at 1:47. Does not affect rendering. Used to label the generated card and to name the file in the ZIP export.
Format: at M:SS or at H:MM:SS — e.g. at 0:00, at 1:47, at 12:30
field "value"
The content fields for the graphic. Each field is a keyword followed by a quoted string. Fields are type-specific (see §3). Quotes are required — values with spaces must be in double quotes.
Example: title "Is a CS Degree Worth It?" · value "$40k"

A complete line with all parts present:

Stat top-right at 1:47 value "$40,000" label "Median Starting Salary"

The same line with only required fields:

stat value "$40,000" label "Median Starting Salary"

Both produce identical output — position defaults to top-right for stat, and the timestamp is optional. Type names are case-insensitive.

Comments

Lines starting with // or # are treated as comments and completely ignored by the parser. Use them to label sections of your instruction set, leave notes, or temporarily disable a graphic without deleting it.

// Section 1: The Cost Stat top-right at 1:12 value "$40k–$60k" label "Public In-State (4yr)" // Stat top-right at 1:47 value "$120k–$200k" label "Private (4yr)" ← disabled
💡
Two-word type aliases
Some types have two-word aliases: bar chart for barchart, line chart for linechart, pie chart for piechart, and lower third for lowerthird. The parser reads both forms. Use whichever reads more naturally to you when writing.
03

Graphic types — all 12 documented

Every type, its required and optional fields, default position, and a copy-ready example instruction.

TypeFieldsDefault position
introtitle, subtitlecenter
outrotitle, subtitlecenter
sectiontitlecenter
lowerthirdname, title (or label)bottom-left
statvalue, labeltop-right
barcharttitle, labels, valuesmiddle-right
linecharttitle, labels, valuesmiddle-right
piecharttitle, labels, valuesmiddle-right
quotetext, authormiddle-left
listtitle, itemsmiddle-right
stepstitle, itemsmiddle-right
progresslabel, valuebottom-right
intro
Full-frame opening title card. Radial gradient background, centered title in heading font at 96px, subtitle in accent color below. Use at the start of a video or major segment.
title (required) · subtitle (optional)
Intro center at 0:00 title "Is a CS Degree Worth It?" subtitle "2026 Career Audit"
outro
Full-frame closing card with a cross-motif accent element. Large title in accent color, subtitle in muted white. Use for subscribe cards, end screens, or segment closes.
title (required) · subtitle (optional)
Outro center at 10:00 title "Subscribe" subtitle "50+ Audits Remaining"
section
Horizontal section banner with accent bar across the top. Title in heading font. Use as a chapter marker or topic transition. Set position to full-width to span the full frame.
title (required)
Section full-width at 3:00 title "The Real Cost of College"
lowerthird
Classic broadcast lower third. Name in large bold white, role/title in accent color below. Accent bar across the top edge of the panel. 580×90px, placed bottom-left by default.
name (required) · title or label (optional)
Lowerthird bottom-left at 9:15 name "Dr. Jane Kim" title "MIT Labor Economics"
stat
Single metric card. Value in heading font at 48px in accent color. Horizontal rule. Label in muted uppercase below. 340×176px. Use for key numbers, prices, percentages, or data points.
value (required) · label (optional)
Stat top-right at 1:47 value "$78,000" label "Median Entry Salary (CS)"
barchart
Horizontal bar chart. Up to 8 bars. Gradient fill from Color 1 to Color 2. Category labels on the left, values annotated right of each bar. Title above a ruled separator.
title · labels "A,B,C" · values "100,200,150"
Barchart middle-right at 2:30 title "Total Cost" labels "Tuition,Living,Opportunity" values "150000,100000,175000"
linechart
Line chart with up to 10 data points. Filled area gradient below the line. Dot markers at each data point. Grid lines at 25/50/75/100% intervals. X-axis labels below each dot.
title · labels "2020,2021,…" · values "72000,81000,…"
Linechart middle-right at 3:45 title "Starting Salary (CS)" labels "2020,2021,2022,2023,2024" values "72000,81000,95000,88000,92000"
piechart
Pie chart with up to 6 slices. Slices colored across a gradient from Color 1 to Color 2. Legend with percentage breakdown to the right of the pie. Title above.
title · labels "A,B,C" · values "50,30,20"
Piechart middle-right at 4:20 title "Budget Split" labels "Tuition,Living,Other" values "50,30,20"
quote
Pull quote panel with large decorative quotation mark in accent color. Body text auto-wraps. Attribution line with em dash below. Panel height adjusts to text length.
text (required) · author (optional)
Quote middle-left at 5:45 text "The math only works if you land in the upper tier" author "MIT Labor Economics"
list
Bulleted list panel. Dot bullets in accent color. Title above a ruled separator. Up to 8 items. Use for pros/cons, takeaways, feature lists, or comparisons.
title (optional) · items "Item A,Item B,Item C"
List middle-right at 7:00 title "Green Flags — Go" items "In-State Tuition,Under $40k Debt,AI Focus"
steps
Numbered step panel. Circular badge in accent color for each number. Step text to the right. Title above. Up to 7 steps. Use for how-to sequences, processes, or frameworks.
title (optional) · items "First,Second,Third"
Steps center at 8:30 title "Alternatives" items "Community College,Coding Bootcamp,Trade School"
progress
Horizontal progress bar. Gradient fill from Color 1 to Color 2. Label above the bar in muted uppercase. Percentage value to the right. Value must be 0–100.
label (optional) · value 0–100 (required)
Progress bottom-right at 5:10 label "Jobs at Risk from AI" value "40"
💡
Comma-separated field values
For chart types and list/steps, the labels, values, and items fields accept comma-separated lists inside a single quoted string: labels "A,B,C". Do not put spaces after commas unless you want them as part of the label text. Leading and trailing whitespace around each item is trimmed automatically.
04

Position reference

Position controls where on the 1920×1080 canvas a graphic is placed. Include it immediately after the type name, before at or any fields.

top-left
top-center
top-right
middle-left
middle-center
middle-right
bottom-left
bottom-center
bottom-right
full-width  ·  center
PositionWhere on canvasBest used for
top-leftTop-left, PAD margin (52px)Secondary callouts, logo placement context
top-centerTop edge, horizontally centeredChapter titles, video stage headers
top-rightTop-right, PAD marginStat cards, running counters
middle-leftVertically centered, left alignedPull quotes, interview captions
middle-centerExactly centered on canvasCentral callouts, primary data emphasis
middle-rightVertically centered, right alignedCharts, lists, steps — the default data position
bottom-leftBottom-left, PAD marginLower thirds, source citations
bottom-centerBottom edge, centeredCaptions, page references
bottom-rightBottom-right, PAD marginProgress bars, percentage callouts
centerAlias for middle-centerIntro, outro, section (centered)
full-widthSpans the full width of the canvasSection banners used as full-frame overlays
💡
Position can be changed after generation
After generating, every card has a 9-dot position grid in its footer. Click any dot to instantly reposition the graphic and re-render that card at the new position. You don't need to update the instruction text and regenerate the full set just to nudge a card.
05

Timestamps

Timestamps are optional labels that tell you — and your video editor — when in the video a graphic appears.

Add at M:SS or at H:MM:SS immediately after the position (or after the type, if position is omitted). The timestamp has no effect on how the graphic looks — it's a label only.

Stat top-right at 1:47 value "$40k" label "Median Salary" Barchart middle-right at 2:30 title "Costs" labels "A,B,C" values "100,200,150"

Timestamps serve two purposes:

⚠️
Timestamps are purely informational
The parser does not validate timestamps — any word following at that doesn't match a position keyword is treated as the timestamp. at 1:47, at 12:30, and at 00:03:15 all work. If you omit the timestamp, the card is labelled by its index only in the ZIP archive.
06

Brand settings

Three settings control how every generated graphic looks. Set them once before generating — or change them and regenerate to produce a new branded set instantly.

Brand Settings — left sidebar
Color 1
The primary accent color. Applied to: heading font color in stat/section/intro, accent bars in panels, bullet dots, step number badges, progress bar start point, chart fill start color, quotation mark glyph, and lower-third accents.
Click the color swatch to open the browser color picker. Enter any hex value. Default: #00c9a7 (teal).
Color 2
The gradient end color. Used in: bar chart gradient fill, line chart fill, pie chart slice range end, progress bar gradient end. Where only one color is needed, Color 1 is used alone.
Default: #3a8eff (blue). Can be the same as Color 1 for a solid-color look.
Heading Font
Font used for large display text in intro, outro, section, and stat titles. Five options: Bebas Neue (tall condensed), Oswald (medium condensed), Montserrat (geometric), Rajdhani (angular), Impact (classic).
Body text in all graphic types always uses Manrope — this setting only affects heading elements.
💡
Re-branding a set in seconds
Brand settings apply at generation time — they're baked into the canvas render. To produce the same instruction set in different brand colors (e.g. for a client handoff or A/B test), change Color 1 and/or Color 2, then hit Generate. All cards re-render with the new brand. Save as a new project file to keep both versions.
07

Editing generated cards

Every generated card can be adjusted after generation without re-running the full instruction set.

ControlWhat it doesNotes
9-dot position grid Repositions the graphic on the canvas. Click any of the nine dots to move the graphic to that zone and re-render the card immediately. Does not update the instruction text — only affects the rendered card.
Size slider (40–200%) Scales the graphic element within the canvas. 100% is the natural render size. Scale down to fit tighter into a composition; scale up for emphasis. Default 100
Opacity slider (10–100%) Reduces the opacity of the graphic. Use to create semi-transparent overlays that let the video background show through. Affects the exported PNG. Default 100
✎ Edit Opens inline field editors for the card's text content — title, value, label, items, etc. Edit any field, then hit Apply + Re-render. Only this card re-renders; the rest are untouched. Re-render uses current brand settings.
PNG ↓ Downloads the current card as a PNG file named [timestamp]-[type].png. Reflects the current size, opacity, and position settings. Individual download, not ZIP.
Permanently removes the card from the current set. Does not modify the instruction text. Cannot be undone without regenerating.
💡
Edit vs. regenerate
Use Edit for quick text corrections — a wrong number, a typo in a label, a missing word. Use regenerate (updating the instruction text and hitting Generate) when you're restructuring the graphic set, changing positions, or making changes you want reflected in the saved project. Edit changes live only in the current session's card state.
08

Export & download

Frame Graphics produces 1920×1080 PNG files ready for any video editor. Download them individually or as a batch ZIP.

Single PNG download

Click PNG ↓ on any card. The file downloads immediately to your Downloads folder. Filename: [timestamp]-[type].png — e.g. 1:47-stat.png. If no timestamp was set, the card's index is used instead.

ZIP ALL — batch export

When one or more cards are present, the ZIP ALL (n) button appears in the top navigation bar. Click it to package every card as a PNG in a single ZIP archive. The archive downloads as frame-graphics.zip.

File naming inside the archive follows this pattern:

01-0:00-intro.png 02-1:12-stat.png 03-1:47-stat.png 04-2:30-barchart.png 05-3:45-linechart.png

The zero-padded index ensures files sort correctly when imported as a folder into any video editor. The timestamp in the filename tells you exactly where in the timeline each graphic belongs.

Using PNGs in video editors

EditorHow to import
Adobe Premiere ProFile → Import. Place on a video track above your footage. Set blend mode to Normal for opaque graphics, or use Multiply/Screen for compositing.
DaVinci ResolveImport to Media Pool. Place on a video track. The dark background works as a natural overlay on dark footage; use Composite Mode for lighter backgrounds.
Final Cut ProImport to library. Add to timeline above the primary storyline. Adjust compositing blend mode if needed.
CapCutImport to Media. Add to a PiP layer above your main video. Resize and reposition if needed, or use as full-frame graphic slides.
OBS StudioAdd → Image source. Browse to the PNG. Position as needed over your video source. Use the timestamp to know when to switch scenes or toggle visibility.
09

Save & load projects

Projects are JSON files stored on your machine. A project captures your instruction text and brand settings — enough to regenerate every graphic from scratch on any device.

Saving a project

Click Save in the top navigation bar. A project.json file downloads immediately. Move it to your project folder, rename it to match your video (e.g. cs-degree-audit-graphics.json), and keep it alongside your video project files.

Loading a project

Click Load in the top navigation bar. Select a .json project file. The instruction text loads into the textarea, brand settings restore, and any previously generated graphics re-render automatically. You're back to exactly where you left off — on any device, in any browser.

What a project file contains
instructions
The full instruction text exactly as it appears in the textarea — including comments and blank lines.
brand
Color 1, Color 2, and the heading font name.
graphics
The parsed state of each card — type, position, timestamp, and field values. Used to re-render on load. PNG data is not stored in the project file — it's regenerated from the instruction data.
⚠️
Projects don't store the PNG data
To avoid very large file sizes, project files store instruction text and brand settings only — not the rendered PNGs. Loading a project regenerates the graphics from the stored instructions. If you need the PNGs themselves for archival purposes, use ZIP ALL before closing the session and keep the ZIP alongside the project JSON.
10

Tips & common mistakes

⚠️
Values must be in double quotes
Every field value must be wrapped in double quotes: value "$40k" not value $40k. An unquoted value that contains spaces will be silently misread by the parser. Single-word values without spaces technically work unquoted, but double-quoting everything is the safest habit.
⚠️
Chart labels and values must have the same count
For barchart, linechart, and piechart, the number of items in labels and values must match. The parser takes the minimum of the two. If you write 5 labels but 4 values, you get 4 bars/points and the fifth label is silently dropped. Count your commas.
⚠️
Progress value must be 0–100
The progress bar value is clamped between 0 and 100. Entering value "250" renders a full bar (100%). Entering a non-numeric value renders an empty bar (0%). The label is purely cosmetic and can say anything.
⚠️
Linechart needs at least 2 data points
A line requires at least two points to draw. If you write a linechart with only one value, the panel renders with the title only — no line, no area fill, no dots. Add a second value or switch to a stat card for single-number callouts.
💡
Use comments as a production checklist
Comment out graphics you haven't written content for yet. Work through the instruction set top-to-bottom as you write the video. Uncomment each line when you have the real numbers. Hit Generate to see the full set — only valid uncommented lines produce cards.
💡
Fastest workflow for recurring content
Build a template instruction set for your series format — intro, standard stat positions, section markers, outro — and save it as a base project file. For each new episode, load the base project, replace the field values, and hit Generate. Brand settings are already configured, positions are already right. You're generating a full episode's graphics in under 60 seconds.
💡
The Reference panel is always available
Click Reference in the left sidebar to expand the built-in cheat sheet. Type any word in the filter box to find a specific graphic type instantly. The full example line for each type is selectable — copy it directly into the Instructions textarea and modify the values. You never need to leave the tool to look up syntax.
11

Quick reference cheat sheet

All 12 types, their fields, valid positions, and key behaviors on one page.

Full-frame types
introtitle · subtitle
outrotitle · subtitle
sectiontitle · center or full-width
Overlay types
lowerthirdname · title or label
statvalue · label
progresslabel · value (0–100)
quotetext · author
Data types
barcharttitle · labels · values (up to 8)
linecharttitle · labels · values (2–10)
piecharttitle · labels · values (up to 6)
List types
listtitle · items (up to 8)
stepstitle · items (up to 7)
Comma lists
labels / values / items"A,B,C" — same count required
Positions
top-lefttop-center · top-right
middle-leftmiddle-center · middle-right
bottom-leftbottom-center · bottom-right
centeralias for middle-center
full-widthsection spanning full frame
Line syntax
typerequired — first word
positionoptional — after type
at M:SSoptional — after position
field "value"quotes required
// or #comment — line is ignored
Brand Settings
Color 1primary accent — stats, bars, badges
Color 2gradient end — charts, progress
FontBebas Neue · Oswald · Montserrat · Rajdhani · Impact
Export
PNG ↓single card — 1920×1080
ZIP ALLall cards, numbered + timestamped
Savedownloads project.json
Loadrestores project + re-renders
Keyboard
Ctrl+EnterGenerate (Cmd+Enter on Mac)