For AI assistants
Make a chart with AI
Ask any AI — ChatGPT, Claude, Gemini — to write a song for GigCharts, and open the result in one step. This page is the spec; paste its URL to your assistant, or let it read this page.
GigCharts renders and exports entirely in your browser. So an AI never has to drive the app — it just produces the content, and your browser lays it out and exports the PDF. There are two ways to get that content in; pick the one that fits what your assistant can do.
How it works
Two authoring paths, by what your assistant can do:
| Path | Fidelity | Works with | How you open it |
|---|---|---|---|
| A · ChordPro text | Song, metadata, sections & cues | Any AI (plain chat) | Paste into the app |
| B · Import link | Lossless — annotations, colours, exact layout | An AI that can run code (or a GigCharts skill) | One click on a link |
A good prompt to start with: “Using gigcharts.app, write a ChordPro chart of [song] by [artist] — chords above the lyrics, with the sections marked.”
Path A · ChordPro text
Have your assistant write a plain-text song in ChordPro. Copy it, open the app, and paste — it imports automatically. This works with every assistant, including plain chat.
The body
Two chord notations are accepted, and they can be mixed. Chords above the lyric:
C G Am
Yesterday, all my troubles seemed so far away …or inline in brackets (the importer splits them into two lines for you):
[C]Yesterday, [G]all my troubles seemed so [Am]far away A blank line separates stanzas — that's the unit sections and cues attach to.
Metadata directives
Whole-line directives of the form {key: value} are lifted into song fields
(keys are case-insensitive). Put them at the top. Recognized keys, with aliases in parentheses:
| Field | Directive keys |
|---|---|
| Title | title (t) |
| Artist | artist |
| Subtitle | subtitle (st) |
| Music / composer | music (composer) |
| Lyrics / lyricist | lyrics (lyricist) |
| Album | album |
| Year | year |
| Copyright | copyright |
| Original key | key (originalkey) |
| Capo fret | capo |
| Tempo (BPM) | tempo (bpm) |
| Time signature | time (timesig) |
| Duration | duration |
| Transpose (semitones) | transpose |
| Beat / style | style (bb) |
| Genre | genre |
| Target instrument | instrument (target-instrument) |
| Version | version (v) |
| Video link | video |
| Track number | track |
| Arranger | arranger |
| Actual (sounding) key | key_actual (actual_key) |
Structure (becomes annotations)
- Sections — wrap stanzas in
{start_of_chorus}…{end_of_chorus}(alsoverse,bridge; short forms{soc}/{eoc}). An optional label is allowed:{start_of_chorus: Chorus 1}. - Cues — a small labelled chip by the nearest stanza:
{comment: Watch the tempo}(also{c: …}). - Chorus recall — a “play the chorus again” marker:
{chorus}on its own line.
Full example
{title: Yesterday}
{artist: The Beatles}
{key: F}
{capo: 0}
{tempo: 97}
{comment: Softly, rubato}
F Em7 A7 Dm
Yesterday, all my troubles seemed so far away
{start_of_chorus}
Dm7 G Bb F
Now I need a place to hide away
{end_of_chorus} Path A can't carry exact annotation placement, per-line voice colours, or precise typesetting. For those, use the import link below.
Path B · One-click import link
The app has an /import route that decodes a whole song and opens it in the studio.
Two transports:
Payload in the link (#gc=)
#gc= carries a compressed .gigchart envelope in
the URL hash. Build it exactly the way the app does:
import LZString from "lz-string";
const envelope = { format: "gigchart", version: 3, song: /* SongFile */ };
const token = LZString.compressToEncodedURIComponent(JSON.stringify(envelope));
const url = "https://app.gigcharts.app/import#gc=" + token; (A raw, percent-encoded JSON token also works, but compression keeps links short.)
Fetch a hosted file (?src=)
Point the app at a public .gigchart (JSON) or ChordPro text file, under 256 KB:
https://app.gigcharts.app/import?src=https://gist.githubusercontent.com/…/yesterday.gigchart The .gigchart envelope
body is the array of chord/lyric lines ("" is a stanza break) — the
same shape Path A produces, so you can start from ChordPro and only add annotations.
{
"format": "gigchart",
"version": 3,
"song": {
"properties": {
"title": "Yesterday",
"artist": "The Beatles",
"originalKey": "F",
"capo": "0",
"tempo": 97
},
"body": [
"F Em7 A7 Dm",
"Yesterday, all my troubles seemed so far away",
"",
"Dm7 G Bb F",
"Now I need a place to hide away"
],
"annotations": []
}
} After import you land in the studio editor, where you review, tweak, and export the PDF.
Defaults & limits
- Page count is a render outcome, not something the text sets directly. Aim for a sensible font size and layout; the final page break depends on the rendered result.
- Size: fetched
?src=files must be under 256 KB; keep link payloads pasteable. - Chords: use standard names (
C,Am,F#m7,G/B). Transpose/concert display comes fromkey/transpose. - Copyright: you're responsible for the songs you make charts of — GigCharts is a typesetting tool and hosts none of your content.
Ready? Open the app and paste, or hand your assistant this page.