diff --git a/ventures/anthem/SKILL.md b/ventures/anthem/SKILL.md new file mode 100644 index 0000000..4ed1cf7 --- /dev/null +++ b/ventures/anthem/SKILL.md @@ -0,0 +1,45 @@ +--- +name: anthem +description: Make personal 8-bar theme songs as Anthem links, a name and a style that open and play at anthem.yolopreneur.lol with everything inside the link and nothing uploaded. Use when asked for a theme song, jingle or musical gift for a name or word, to play in a browser or share as a link. +--- + +# Theme songs as Anthem links + +Anthem (https://anthem.yolopreneur.lol/) turns a name into an 8-bar melody, synthesized in the browser. The same name and style always give the same song. The whole state is in the link, after `?s=`, so nothing is uploaded and opening it needs no account. Whoever opens it can press Play, change the style, share it or download a WAV. + +## Choose the content + +A song is two things: + +- `name`: any name or word. Whitespace is collapsed and trimmed, and it is cut to 48 characters. It can't be empty. Its letters seed the melody, and it is shown on the title card. +- `style`: one of `chiptune` (square wave, 120 bpm), `lo-fi` (soft triangle, 86 bpm) or `fanfare` (bright sawtooth, 132 bpm). Anything else falls back to `chiptune`. + +Nothing else is stored: no lyrics, no tempo, no notes. You can't pick the melody, only the name and style that seed it. + +## Make the link + +The link is `https://anthem.yolopreneur.lol/?s=` followed by the JSON `{"name": ..., "style": ...}` as UTF-8, encoded as base64url without padding. In Python: + +```python +import base64, json + +state = {"name": "Maya Chen", "style": "lo-fi"} +token = base64.urlsafe_b64encode(json.dumps(state, separators=(",", ":")).encode()).decode().rstrip("=") +link = "https://anthem.yolopreneur.lol/?s=" + token +``` + +In Node: + +```js +const state = { name: "Maya Chen", style: "lo-fi" }; +const link = "https://anthem.yolopreneur.lol/?s=" + Buffer.from(JSON.stringify(state)).toString("base64url"); +``` + +There is no no-code form: the page only reads `?s=`. If you can't run code, base64url the JSON by hand (`+` becomes `-`, `/` becomes `_`, drop the `=`), or tell the person to open https://anthem.yolopreneur.lol/, type the name, pick a style and press **Share Link**. + +For example, `{"name":"Maya Chen","style":"lo-fi"}` is +`https://anthem.yolopreneur.lol/?s=eyJuYW1lIjoiTWF5YSBDaGVuIiwic3R5bGUiOiJsby1maSJ9`. + +## Hand it over + +Reply with the link and say which name and style it holds, since a link can't be played from the chat: the person has to open it and press Play. Every change of name or style makes a new link.