@generativereality/content-studio 0.0.0-stage → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/plugin.json +11 -0
- package/LICENSE +21 -0
- package/README.md +52 -2
- package/package.json +23 -4
- package/skills/content-studio/SKILL.md +150 -0
- package/skills/content-studio/references/audio.md +159 -0
- package/skills/content-studio/references/brief.md +66 -0
- package/skills/content-studio/references/channels.md +144 -0
- package/skills/content-studio/references/copy.md +201 -0
- package/skills/content-studio/references/costs-and-licences.md +75 -0
- package/skills/content-studio/references/generation.md +192 -0
- package/skills/content-studio/references/real-people.md +111 -0
- package/skills/content-studio/references/review.md +80 -0
- package/skills/content-studio/references/search.md +135 -0
- package/skills/content-studio/references/stills.md +112 -0
- package/skills/content-studio/references/tools.md +26 -0
- package/skills/content-studio/references/video.md +155 -0
- package/skills/content-studio/references/voice.md +115 -0
- package/skills/content-studio/scripts/render-frames.sh +30 -0
- package/skills/content-studio/scripts/spend.mjs +44 -0
- package/skills/content-studio/scripts/voice-sweep.sh +31 -0
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "content-studio",
|
|
3
|
+
"description": "Make content well, in any medium: the production process (brief, variations, one best version for a pick, making it, checks, learning) plus craft and tool references for copy, voice, channels, search, stills, generated images and video, editing, audio and real people's photos.",
|
|
4
|
+
"version": "0.1.1",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "generativereality"
|
|
7
|
+
},
|
|
8
|
+
"repository": "https://github.com/generativereality/content-studio",
|
|
9
|
+
"homepage": "https://github.com/generativereality/content-studio",
|
|
10
|
+
"license": "MIT"
|
|
11
|
+
}
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 generativereality
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,3 +1,53 @@
|
|
|
1
|
-
#
|
|
1
|
+
# content-studio
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
A Claude Code skill for making content well, in any medium and for any purpose: posts, articles,
|
|
4
|
+
pages, newsletters, launches, ads, scripts, short videos, demos, explainers, carousels, thumbnails,
|
|
5
|
+
collages, narration, music beds and personal memory films.
|
|
6
|
+
|
|
7
|
+
It holds the **process** a small, good studio follows, in `SKILL.md`, loaded whenever something is to
|
|
8
|
+
be made: brief → study what works → variations → **one best version shown for a pick** → make it well →
|
|
9
|
+
check → learn from the pick and the result. It also holds **references**, loaded only when the brief
|
|
10
|
+
needs them:
|
|
11
|
+
|
|
12
|
+
| Reference | Covers |
|
|
13
|
+
|---|---|
|
|
14
|
+
| `brief.md` | the brief template, purpose (brand, audience, teaching, product, personal), reader awareness |
|
|
15
|
+
| `review.md` | showing work so a person can choose: one best plus a few alternatives, phone-ready review pages |
|
|
16
|
+
| `copy.md` | the one idea, studying outliers, hooks, scripts and story loops, copy rules, sharing, formats, the check, reading results |
|
|
17
|
+
| `voice.md` | the person's own material first, answering a critique, the machine-prose tells and the sweep |
|
|
18
|
+
| `channels.md` | Reddit, Show HN, Product Hunt, directories, blogs, newsletters, LinkedIn, X, Instagram, TikTok, YouTube; sizes |
|
|
19
|
+
| `search.md` | measured queries, reading the results page, the novelty bar, primary sources, writing for AI assistants |
|
|
20
|
+
| `stills.md` | layout in code, generated backgrounds, carousels, product lead images, collages, thumbnails, restoration |
|
|
21
|
+
| `generation.md` | hosted image and video models (dated), POST-then-poll, prompting, consistency, the invention check |
|
|
22
|
+
| `video.md` | timelines and renderers, cut craft, showing a real product, captions, crops, HDR, encoding |
|
|
23
|
+
| `audio.md` | whether to narrate, voice engines by language, verifying speech, music, mixing and loudness |
|
|
24
|
+
| `real-people.md` | consent, voice cloning, facts before creativity, photo faults, the personal register |
|
|
25
|
+
| `costs-and-licences.md` | budgets and the spend log, local or hosted, disk, licences, Windows |
|
|
26
|
+
| `tools.md` | the tool skills it routes to (HyperFrames, media-use, review-md, browser-automation) and where it overrides them |
|
|
27
|
+
|
|
28
|
+
Scripts (no dependencies beyond bash, node and Chrome):
|
|
29
|
+
|
|
30
|
+
- `scripts/voice-sweep.sh FILE` finds machine-prose tells (a candidate list, not a verdict).
|
|
31
|
+
- `scripts/render-frames.sh OUT W H frame.html…` renders HTML frames to PNG with headless Chrome.
|
|
32
|
+
- `scripts/spend.mjs add|total DIR` keeps a per-piece spend ledger with a budget check.
|
|
33
|
+
|
|
34
|
+
## What it never does
|
|
35
|
+
|
|
36
|
+
It never posts, publishes, uploads, sends, comments, signs up or buys. It never invents a fact, a
|
|
37
|
+
number, a quote or a user, and never shows a product doing what it doesn't do. It never uses a real
|
|
38
|
+
person's face, voice or words without their consent. Every paid call is logged and reported with its
|
|
39
|
+
cost.
|
|
40
|
+
|
|
41
|
+
## Install
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
/plugin marketplace add generativereality/plugins
|
|
45
|
+
/plugin install content-studio@generativereality
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
The skill names no person, company or product, so it can be vendored into any project. Your own voice
|
|
49
|
+
notes, house style and strategy skills sit beside it and take precedence over its defaults.
|
|
50
|
+
|
|
51
|
+
## Licence
|
|
52
|
+
|
|
53
|
+
MIT
|
package/package.json
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@generativereality/content-studio",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
6
|
-
|
|
3
|
+
"version": "0.1.1",
|
|
4
|
+
"description": "A Claude Code skill for making content well in any medium: process, craft and tool references, plus small zero-dependency scripts.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"type": "module",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/generativereality/content-studio.git"
|
|
10
|
+
},
|
|
11
|
+
"files": [
|
|
12
|
+
"skills/",
|
|
13
|
+
".claude-plugin/",
|
|
14
|
+
"README.md",
|
|
15
|
+
"LICENSE"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"check": "bash scripts/check.sh",
|
|
19
|
+
"leakcheck": "bash scripts/check-leaks.sh",
|
|
20
|
+
"sync-plugin": "bash scripts/sync-plugin.sh"
|
|
21
|
+
},
|
|
22
|
+
"publishConfig": {
|
|
23
|
+
"access": "public"
|
|
24
|
+
}
|
|
25
|
+
}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: content-studio
|
|
3
|
+
description: Read first whenever anything is to be made for people to read, watch or hear - a post, thread, article, newsletter, page, guide, listing, launch, ad, email to many, script, video, reel, short, demo, explainer, clip, carousel, thumbnail, cover, image, collage, narration, voice-over, podcast segment, music bed, or a memory film of someone's photos - for brand building, audience building, teaching, product work or personal sharing. Holds the whole production process (brief, variations, one best version shown for a pick, making it well in each medium, checks, learning from picks and results) and routes to the craft and tool references for copy, voice, channels, search, stills, generated images and video, editing, animation, audio and real people's photos. Use also for "make this better", "make it less boring", "sounds like AI", "which should I post", hooks, scripts, content ideas or a content calendar.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# content-studio: making content well
|
|
7
|
+
|
|
8
|
+
This skill is how to make content well, in any medium and for any purpose. It covers what a small,
|
|
9
|
+
good studio does between "we need a post / a clip / a page" and a finished file that someone is glad
|
|
10
|
+
to have read, watched or heard. Read this file first and keep to its process. The references hold the
|
|
11
|
+
craft and the tools for each medium; load only the ones the brief needs.
|
|
12
|
+
|
|
13
|
+
**What this skill decides and what it doesn't.** It decides **how to make** the piece. **What to
|
|
14
|
+
say, to whom, through which channel and why now** (positioning, the offer, which bet, whether to post
|
|
15
|
+
at all) belong to the person and to whatever strategy or growth skill sent the brief. When such a
|
|
16
|
+
skill exists in this project, its decisions are inputs to the brief here. Do not overrule them; do
|
|
17
|
+
raise a doubt about them in the brief.
|
|
18
|
+
|
|
19
|
+
## The rules under everything
|
|
20
|
+
|
|
21
|
+
1. **Facts are strict, craft is free.** A claim about a product, a number, a person, a customer or a
|
|
22
|
+
competitor is true, and you can say where it came from. A hook, an angle, a joke, an analogy, a
|
|
23
|
+
framing, a visual, a title or a sound needs no source; its tests are whether it is true to the
|
|
24
|
+
subject and the person, whether the reader would stop for it, and whether it leads where the brief
|
|
25
|
+
wants. Never invent a number "for illustration", a quote, a testimonial, a user or a result. Never
|
|
26
|
+
show a product doing what it does not do: every picture of a product is the real product (a real
|
|
27
|
+
screenshot or a real recording).
|
|
28
|
+
2. **The person's own material comes first.** Anything you write alone reads as machine prose,
|
|
29
|
+
however much craft went into it. The moment, the opinion, the thing that annoyed them, in their
|
|
30
|
+
words, is what makes a piece theirs. Get it before the first draft (`references/voice.md`).
|
|
31
|
+
3. **Real people are not raw material.** Never redraw, animate, clone or put words in the mouth of a
|
|
32
|
+
real person without their consent. A person's own photos are shown as they are
|
|
33
|
+
(`references/real-people.md`).
|
|
34
|
+
4. **Nothing goes out without the person's yes** for that exact piece, unless they gave a standing
|
|
35
|
+
approval that covers it. You make the piece; you never post, publish, upload, send, comment, buy or
|
|
36
|
+
sign up. Making it ready to post, open in their browser, is fine.
|
|
37
|
+
5. **Every paid call is logged with its cost**, inside a budget the person set. Say what each piece cost
|
|
38
|
+
and how long it took. Free and local is the default where the quality is as good; otherwise the best
|
|
39
|
+
tool within the budget (`references/costs-and-licences.md`).
|
|
40
|
+
|
|
41
|
+
## The process
|
|
42
|
+
|
|
43
|
+
### 1. Brief
|
|
44
|
+
|
|
45
|
+
Write one short brief before making anything (`references/brief.md` has the template). It names:
|
|
46
|
+
|
|
47
|
+
- **the purpose** (brand, audience, teaching, product, personal) and the **one next step** the piece
|
|
48
|
+
should cause, and how you will know it did;
|
|
49
|
+
- **the reader**: who they are, where they meet the piece, and how aware they already are;
|
|
50
|
+
- **the one idea**, in one sentence that would still hold if everything else were cut;
|
|
51
|
+
- **the channel and format**: length, ratio, what the place rewards, its rules and its requirements
|
|
52
|
+
on the account;
|
|
53
|
+
- **the proof and material**: the person's own words, real screenshots, real numbers, real photos;
|
|
54
|
+
- **the voice**: whose it is, and where their voice notes and lessons are;
|
|
55
|
+
- **the budget** in money and time, and what has been sent back before and why.
|
|
56
|
+
|
|
57
|
+
If a strategy skill sent the brief, keep its fields and add the ones it lacks. Never start making from a
|
|
58
|
+
one-line request without writing this down.
|
|
59
|
+
|
|
60
|
+
### 2. Study what already works
|
|
61
|
+
|
|
62
|
+
Before writing a word, look at the place it will appear. Find the pieces in that niche and channel that
|
|
63
|
+
did 3 to 5 times better than their author's usual. Note their hook form, length, structure and what the
|
|
64
|
+
first second or line does, then borrow the **form**, never the content (`references/copy.md` §study).
|
|
65
|
+
Write down three to five of them with links. That is the evidence for the angles you choose.
|
|
66
|
+
|
|
67
|
+
### 3. Variations, then choose the best yourself
|
|
68
|
+
|
|
69
|
+
Make many cheap variations before making anything well: ten to twenty hooks or titles, three to five
|
|
70
|
+
angles (a story, a confession, a contrarian take, a how-to, a before and after, a demo, a list with an
|
|
71
|
+
opinion), and two or three formats. Vary the tone as well as the words. Humour is one option and never
|
|
72
|
+
the default.
|
|
73
|
+
|
|
74
|
+
Then **do the choosing yourself**. Pick the best version and finish it to the point where it could
|
|
75
|
+
go out as it stands, and pick two or three real alternatives that differ in angle or format, not in
|
|
76
|
+
wording. Your job is to bring the person a recommendation, not a parts list.
|
|
77
|
+
|
|
78
|
+
### 4. The pick
|
|
79
|
+
|
|
80
|
+
Show the person **one best version, finished, first**, with two or three alternatives below it, on a
|
|
81
|
+
review page they can open where they are, which is often a phone (`references/review.md`). Each option
|
|
82
|
+
is labelled with what it is, what it cost and how long it took, and comparable things sit side by side.
|
|
83
|
+
Never ask them to assemble a combination of numbered parts ("T4 + body B + image 2"). An answer
|
|
84
|
+
should take one tap or one sentence.
|
|
85
|
+
|
|
86
|
+
The person's part is taste, true stories and opinions, never forms. Every no teaches: write the reason
|
|
87
|
+
down (step 7).
|
|
88
|
+
|
|
89
|
+
### 5. Make it well
|
|
90
|
+
|
|
91
|
+
Make the pick properly, in its medium:
|
|
92
|
+
|
|
93
|
+
| Making | Read |
|
|
94
|
+
|---|---|
|
|
95
|
+
| Words: posts, articles, pages, scripts, captions, emails to many | `references/copy.md`, `references/voice.md`, `references/channels.md` |
|
|
96
|
+
| A page meant to be found in search or cited by AI assistants | `references/search.md` |
|
|
97
|
+
| Stills: thumbnails, covers, carousels, quote cards, collages, lead images | `references/stills.md` |
|
|
98
|
+
| A generated picture or clip (background, scene, B-roll, restoration) | `references/generation.md` |
|
|
99
|
+
| Video: demos, explainers, reels, launch clips, memory films, edits | `references/video.md` |
|
|
100
|
+
| Voice, narration, music, sound | `references/audio.md` |
|
|
101
|
+
| Anyone's real photos, face or voice; personal and family content | `references/real-people.md` |
|
|
102
|
+
| Which outside tool skill to use, and where this skill overrides it | `references/tools.md` |
|
|
103
|
+
|
|
104
|
+
Set the words in code and keep them editable. Let AI make pictures, motion and sound. Never let a
|
|
105
|
+
model redraw a real person. Captions go on every video, because most people watch without sound.
|
|
106
|
+
Every piece carries the link or tag the brief measures it by.
|
|
107
|
+
|
|
108
|
+
### 6. Check before anyone sees it
|
|
109
|
+
|
|
110
|
+
Each reference ends with its own checks. The ones that apply to every piece:
|
|
111
|
+
|
|
112
|
+
- **Facts:** every claim has its source written down beside the draft, and nothing is invented.
|
|
113
|
+
- **Voice:** run `scripts/voice-sweep.sh` over the text, then read it aloud as the person would say
|
|
114
|
+
it. The grep is a net with holes; the reading is the check (`references/voice.md`).
|
|
115
|
+
- **Look and listen:** open every image, every frame sheet and every clip. Transcribe every voice track
|
|
116
|
+
back and compare it with the script. A green exit code means nothing until a human or an agent has
|
|
117
|
+
actually looked or listened.
|
|
118
|
+
- **The reader's test:** read it cold, as the brief's reader meeting it in that channel. Would they
|
|
119
|
+
stop, understand the one idea in a sentence, and know the next step? (`references/copy.md` §check).
|
|
120
|
+
- **The place's rules:** length, format, sizes, and the community's own rules and account requirements
|
|
121
|
+
(`references/channels.md`).
|
|
122
|
+
|
|
123
|
+
Fix what fails and check again. Doubts about craft get fixed, never handed to the person as a question.
|
|
124
|
+
|
|
125
|
+
### 7. Learn
|
|
126
|
+
|
|
127
|
+
Write each pick and each refusal, with the person's reason in their words, into the lessons file the
|
|
128
|
+
brief names (a studio's `lessons.md`, or the project's house style). Once results come in, write the
|
|
129
|
+
winning **formula**, not the piece, into the house style for that channel (for example *"a confession
|
|
130
|
+
title, a 150-word body with one real screenshot, a closing question"*). The next brief starts by reading
|
|
131
|
+
both. A piece that flops teaches as much as one that works: note whether it was the hook, the topic or
|
|
132
|
+
the angle (`references/copy.md` §ceilings).
|
|
133
|
+
|
|
134
|
+
## Where work lives
|
|
135
|
+
|
|
136
|
+
Keep the brief, the variations, every take, the review page, the spend log and the lessons together
|
|
137
|
+
in one folder per piece. When a project already has a studio or content folder, use that and say
|
|
138
|
+
where it is. **Never overwrite a take that cost money**: a new attempt is a new file. Keep media out of
|
|
139
|
+
git unless the project says otherwise, and record each asset's licence and where it came from beside it.
|
|
140
|
+
|
|
141
|
+
## Never
|
|
142
|
+
|
|
143
|
+
- Make one version and ask whether it is good; or make twenty and ask the person to choose among them
|
|
144
|
+
all.
|
|
145
|
+
- Post, publish, upload, send, comment, sign up or buy.
|
|
146
|
+
- Invent a fact, a number, a quote, a user or a result, or show a product doing what it does not.
|
|
147
|
+
- Use a real person's face, voice, words or work without their consent.
|
|
148
|
+
- Redraft a piece the person sent back by polishing the same text. Ask what is off, then rebuild from
|
|
149
|
+
their answer (`references/voice.md` §critique).
|
|
150
|
+
- Spend past the budget. When you reach it, stop and say so.
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Voice, narration, music and sound
|
|
2
|
+
|
|
3
|
+
**Measure what you can't hear.** An agent can't listen, so every take is checked by numbers:
|
|
4
|
+
transcription against the script, words per second, pitch at line ends, loudness. A person must still
|
|
5
|
+
listen before a voice or a bed becomes a default; a choice made on numbers alone is provisional.
|
|
6
|
+
|
|
7
|
+
## Narration: whether to use one at all
|
|
8
|
+
|
|
9
|
+
- **For personal and family content: no narrator by default.** A synthetic voice telling someone's own
|
|
10
|
+
memories reads as creepy, and it is easily in the wrong language. The person's own recorded words are
|
|
11
|
+
the voice. Otherwise use on-screen text, or ask them to record a 20 s line. A narrator is a style
|
|
12
|
+
someone chooses on purpose (a mock documentary, for fun).
|
|
13
|
+
- **For product, teaching and promo pieces:** a voice-over is fine and often carries the cut. The
|
|
14
|
+
person's own voice beats any synthetic one.
|
|
15
|
+
|
|
16
|
+
## Engines (as of Nov 2026)
|
|
17
|
+
|
|
18
|
+
| Engine | Use | Notes |
|
|
19
|
+
|---|---|---|
|
|
20
|
+
| **MiniMax Speech 2.8 HD** (hosted) | default hosted narrator in any language | zero transcription errors in English, Swedish, Finnish and German, with commercial terms; about $0.03 per 30 s; 10 to 26 s a take; `<#0.5#>` pause markers; `speed 1.12` gives about 3.2 words/s; `emotion: happy` ended rising on 2 of 3 reads |
|
|
21
|
+
| **ElevenLabs** (v3, multilingual v2) | most expressive; good in English, Swedish, German | **the free tier is non-commercial and needs attribution**, so business use needs a paid plan; v3 reads slowly (2.3 to 2.5 words/s, so speed it up) and differently every call |
|
|
22
|
+
| **Qwen3-TTS 1.7B** (local, Apache-2.0) | free English and German, sounds really good | about real time on an Apple Silicon Mac, 4 to 5 GB; no Swedish or Finnish; a designed voice ignores gender (asked for male, got 208 Hz), so measure pitch before accepting |
|
|
23
|
+
| **Kokoro 82M** (local, Apache-2.0) | free English promo voice-over | 4× real time, ONNX on Windows; flattest, runs sentences together; its English front-end pulls in GPL espeak-ng (a bundling question) |
|
|
24
|
+
| Chatterbox (MIT) | cloning only | English into Finnish failed (84% word error rate) |
|
|
25
|
+
| Out | OmniVoice (non-commercial weights; Nordic voices sound American), Apple system voices (personal licence only), Piper (GPL engine, robotic), Voxtral, F5, XTTS (non-commercial), Ming (artefacts, wrong gender) | |
|
|
26
|
+
|
|
27
|
+
No local engine with a commercial licence passed Finnish (Nov 2026); hosted MiniMax, or ElevenLabs on a
|
|
28
|
+
paid plan, is the clean path for Nordic languages.
|
|
29
|
+
|
|
30
|
+
Engine traps (Aug to Oct 2026):
|
|
31
|
+
- **ElevenLabs v3 reads the same text differently on every call,** including a rising end on a
|
|
32
|
+
statement (+2.2 semitones on one take, −3.1 on a plain re-read of the identical text). Generate several
|
|
33
|
+
readings and keep one that falls, then pin that file in the edit, or a cache keyed on (voice, text)
|
|
34
|
+
hands back whichever reading it got first.
|
|
35
|
+
- **On ElevenLabs v3 through Replicate, audio tags (`[confident]`) are spoken as words,** and one
|
|
36
|
+
swallowed the words after it. Steer with `previous_text`, `stability` and re-reads. About $0.10 per
|
|
37
|
+
1,000 characters.
|
|
38
|
+
- **Numbers are where voices fail:** one of three voices read "154" as "100 feet 4". Transcribe every take.
|
|
39
|
+
- ElevenLabs' free plan refuses voice design through the API. Gemini TTS takes a plain-language
|
|
40
|
+
description in the prompt plus a prebuilt voice.
|
|
41
|
+
- Plain-language style controls exist on some engines (Qwen3-TTS `style_instruction`, "like an excited
|
|
42
|
+
sports commentator"; MiniMax `emotion`; Chatterbox `exaggeration` and `cfg_weight`).
|
|
43
|
+
|
|
44
|
+
## Pace and energy
|
|
45
|
+
|
|
46
|
+
Measure words per second; "too slow" is the commonest note and it is a number. Engine defaults sit at
|
|
47
|
+
narration pace (MiniMax default 2.65 words/s; at `speed 1.35`, 4.22; Chatterbox 3.18; Qwen3-TTS 2.87;
|
|
48
|
+
Aug 2026). Live sports commentary runs about 3.5 to 5. **Speed is not energy:** a fast flat read is worse
|
|
49
|
+
than a slow one. Reach for `speed` first, then for a style or emotion control.
|
|
50
|
+
|
|
51
|
+
## What sounds machine-made
|
|
52
|
+
|
|
53
|
+
- **A narrow pitch range** (6 to 9 semitones against 11 to 14 for expressive voices).
|
|
54
|
+
- **Rising line ends,** which sound like questions. **Re-read the line; don't rewrite the script.**
|
|
55
|
+
Measure the tail pitch (a negative slope means it falls). A leading "And" tells the speaker more is
|
|
56
|
+
coming: removing it took one line from +1.3 to −7.5 semitones.
|
|
57
|
+
- **Metronomic gaps** between sentences. Set pauses per line.
|
|
58
|
+
- **Accent bleed** when cloning across languages.
|
|
59
|
+
- **A dropped word that changes the meaning,** so transcribe every take.
|
|
60
|
+
- Punctuation is a timing control: the same sentence measured 4.30 s with a full stop and 3.70 s with a
|
|
61
|
+
dash, and a vocative comma before a name cost 0.33 s. Apply it one line at a time by ear and don't sweep
|
|
62
|
+
it: the pause is wrong where a name interrupts a clause and right where it hands over a turn.
|
|
63
|
+
|
|
64
|
+
**Measuring delivery.** Estimate f0 by autocorrelation per 40 ms frame over 70 to 330 Hz, voiced frames
|
|
65
|
+
only, and report four numbers: the **tail** (the last ~350 ms in semitones against the line's median;
|
|
66
|
+
negative falls), the **median** (how high the line sits; this is excitement), the **range** (10th to 90th
|
|
67
|
+
percentile) and the loudness spread. A line called passive already had the widest range in its film; its
|
|
68
|
+
median was low (119 Hz), and `emotion: surprised` on the same words gave 132 Hz. So a style or emotion
|
|
69
|
+
control is the lever for energy and the median confirms it landed. This ranks takes of one sentence; it
|
|
70
|
+
can't hear warmth, and a line can measure well and still be wrong.
|
|
71
|
+
|
|
72
|
+
## Verifying speech
|
|
73
|
+
|
|
74
|
+
- Transcribe every take with whisper large-v3-turbo (mlx-whisper on a Mac, about 3 to 6 s per 30 s;
|
|
75
|
+
whisper.cpp or faster-whisper elsewhere). Aim for a word error rate of 0 against the script.
|
|
76
|
+
- **Pass the people's names and odd words as the initial prompt.** Without them, "Mira's asleep" came
|
|
77
|
+
back "mirrors asleep".
|
|
78
|
+
- Pace: 3.1 to 3.3 words/s is promo pace, 2.3 to 2.8 is narration, and 3.9 is rushed.
|
|
79
|
+
- **Whisper invents speech over music** (credits that were never there, loops over music-only tails)
|
|
80
|
+
and can't check sung words. Clip to the speech, or separate stems first.
|
|
81
|
+
- Transcribe the **finished mix** again, not only the voice stem.
|
|
82
|
+
- Dialogue a video model generated is checked the same way: extract the audio
|
|
83
|
+
(`ffmpeg -i shot.mp4 -vn -ac 1 -ar 16000 a.wav`), transcribe, and diff against the prompt's lines.
|
|
84
|
+
|
|
85
|
+
## Music
|
|
86
|
+
|
|
87
|
+
- **Local: ACE-Step 1.5** (MIT, outputs usable commercially). About a 10 GB download; 20 to 60 s a
|
|
88
|
+
track; hits the asked length and tempo and the quiet-intro-then-band arc. Turn on its "thinking"
|
|
89
|
+
model for lyrics. Its endings are cut, not composed, so fade the last 1.6 s. Reject takes that end
|
|
90
|
+
early or have a hole mid-song.
|
|
91
|
+
- **Hosted:** MiniMax Music 2.5 (about $0.15, sings lyrics word for word); Lyria 2 (about $0.06,
|
|
92
|
+
instrumental, always 32.8 s, flat); ElevenLabs Music (about $0.58 for 70 s, pleasant, generic); Suno
|
|
93
|
+
through third-party APIs has a real arrangement but an unclear rights chain. Every hosted model
|
|
94
|
+
ignored "drums enter after the intro". MusicGen weights are non-commercial.
|
|
95
|
+
- Tempo by cut: social about 104 bpm, product 110, scrapbook 92, calm 84. Choose music by what the
|
|
96
|
+
piece is ("day in the life", "emotional"), never "motivational".
|
|
97
|
+
- The person's own track beats any generated one, if they have the rights to it.
|
|
98
|
+
- Beat detection misreads fingerpicked triplets and finds nothing in some generated beds. Check the
|
|
99
|
+
number against the ear or the tempo you asked for.
|
|
100
|
+
|
|
101
|
+
## Sound effects
|
|
102
|
+
|
|
103
|
+
A generated sound needs an ear before it gets a level: four effects measured to a tenth of a decibel,
|
|
104
|
+
and three were rejected on the first listen ("too violent", "a weird breath"). A level says whether a
|
|
105
|
+
sound will sit in the mix, never whether it is the sound you asked for. **Build the way to hear it
|
|
106
|
+
before wiring it in:** a short sampler, each sound for five seconds behind a card naming it, at its mix
|
|
107
|
+
level. Ask what a model does with a class of request: two "moving air" sounds both came back breathy,
|
|
108
|
+
and two rejections of the same shape are a property of the generator, not of a prompt.
|
|
109
|
+
Put a sound on a visible action, peaking one frame after the picture. Some models pad every output
|
|
110
|
+
to a fixed length with silence and don't put the content first (`stable-audio-open` returns 47.6 s
|
|
111
|
+
whatever length is asked), so read the RMS envelope before trimming, or the trim grabs padding. **A rule
|
|
112
|
+
about a model's output applies to every file it made,** including those already in the cut: a 30 s bed
|
|
113
|
+
from the same model went silent for a third of a film when it was laid as one span.
|
|
114
|
+
|
|
115
|
+
## Mixing and loudness
|
|
116
|
+
|
|
117
|
+
- Voice in at about 0.5 s; bed ducked under the voice with `sidechaincompress` (about 12 dB for promo,
|
|
118
|
+
8 to 11 dB for a quiet film; attack 0.5 s, release 0.8 s). The bed must be at least as long as the
|
|
119
|
+
mix.
|
|
120
|
+
- **Loudness:** −14 LUFS integrated for social, −16 to −18 for a quiet film, true peak −1.5 dBTP:
|
|
121
|
+
`loudnorm=I=-14:TP=-1.5:LRA=11`, AAC 192k, 48 kHz.
|
|
122
|
+
- Measure level in one-second windows at several timecodes, not with `volumedetect` (it reports the
|
|
123
|
+
peak and hides a silent passage). `amix` divides by the number of inputs unless `normalize=0`: six
|
|
124
|
+
lines on one bed came out about 14 dB quiet while the peak still read fine. Use a `qsin` (equal-power)
|
|
125
|
+
crossfade between different material; a linear `tri` one dips 3 dB at the midpoint and is for a splice
|
|
126
|
+
of the same material.
|
|
127
|
+
- **Not every measured gap is a defect.** Four time cards measured 25 dB below the film, and that
|
|
128
|
+
silence was the editorial beat that made "fifteen minutes later" read; three fixes for it were
|
|
129
|
+
rejected. Before repairing something in a piece already approved, ask whether it is load-bearing.
|
|
130
|
+
Moving a per-scene element to the master also lays it under every segment that had none: list them
|
|
131
|
+
before the move. When a fix is rejected twice, re-read the original note as a verdict on the first
|
|
132
|
+
attempt.
|
|
133
|
+
|
|
134
|
+
## Reviewing voices
|
|
135
|
+
|
|
136
|
+
Four or five candidates per language, **the same script**, one player each, the voice's name visible
|
|
137
|
+
while it plays, loudness-matched (about −18 LUFS ± 1.5), and the voice heard **without** the bed first.
|
|
138
|
+
Filter first by hard rules (speaks the language, licence fits the use, error rate at most 5%, no known
|
|
139
|
+
artefact), then show the rest under "more voices". A pick records the candidates shown beside it,
|
|
140
|
+
because "chose George over MiniMax and Alice" teaches more than "chose George".
|
|
141
|
+
|
|
142
|
+
## Cloning a voice
|
|
143
|
+
|
|
144
|
+
Only with the owner's own consent, verified live, purpose-bound and revocable. Never a child's voice,
|
|
145
|
+
and never new words in a dead person's voice. The full rules are in `real-people.md`.
|
|
146
|
+
|
|
147
|
+
**A synthetic speaker generated on camera** can be carried into later shots by cloning their voice out
|
|
148
|
+
of the take: cut 3 to 4 s of one speaker and give it to a cloning engine as the reference (Chatterbox
|
|
149
|
+
`audio_prompt` takes a data URI; MiniMax has voice cloning). Two generated commentators, each cloned from
|
|
150
|
+
about 3.4 s of their own dialogue, said new lines correctly.
|
|
151
|
+
- **Find the hand-off by a relative dip, not `silencedetect`.** Generated takes carry room tone, so the
|
|
152
|
+
gap never falls below an absolute floor and the detector reports one speech run, which also looks like
|
|
153
|
+
a correct single-speaker take. Measure loudness in 0.2 s windows and take the quietest window mid-clip
|
|
154
|
+
(one measured −45.5 dB against a −26.3 dB speaking median). Print the split and both reference
|
|
155
|
+
windows, and warn when the dip is under about 8 dB, because then the lines ran together. Cutting the
|
|
156
|
+
wrong side clones the wrong person, and it sounds like a perfectly working clone.
|
|
157
|
+
- **A clone inherits its reference's tempo:** two takes of one prompt gave about 4.2 and about 3.1
|
|
158
|
+
words/s from the same lines, so picking the reference take picks the pace of every line. Measure it
|
|
159
|
+
rather than forcing pace afterwards, which reads fast and flat.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# The brief
|
|
2
|
+
|
|
3
|
+
Write the brief before anything is made, and keep it short: one screen. A strategy or growth skill
|
|
4
|
+
that sends work here may already have written most of it; keep its fields and add what is missing.
|
|
5
|
+
|
|
6
|
+
## Template
|
|
7
|
+
|
|
8
|
+
```markdown
|
|
9
|
+
---
|
|
10
|
+
piece: <slug>
|
|
11
|
+
purpose: brand | audience | teaching | product | personal
|
|
12
|
+
status: open | working | picking | making | done
|
|
13
|
+
created: <date>
|
|
14
|
+
budget: <money cap> · <time>
|
|
15
|
+
---
|
|
16
|
+
# Brief: <what is being made, in plain words>
|
|
17
|
+
|
|
18
|
+
**Next step it should cause:** <follow, reply, try it, sign up, share with one person, understand X>
|
|
19
|
+
**Measured by:** <the link or tag, the count to read, and when to read it>
|
|
20
|
+
**Reader:** <who, in their situation> · **meets it:** <where, on what device> · **awareness:** <stage>
|
|
21
|
+
**The one idea:** <one sentence>
|
|
22
|
+
**Channel and format:** <place, form, length/ratio, its rules and account requirements, with links>
|
|
23
|
+
**Material:** <the person's own words (source), real screenshots/photos/recordings, real numbers (source)>
|
|
24
|
+
**Voice:** <whose; where their voice notes and lessons are>
|
|
25
|
+
**Sent back before:** <earlier versions and the reasons, in the person's words>
|
|
26
|
+
**Make:** <how many hooks, angles, formats; which media>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Purpose decides what good looks like
|
|
30
|
+
|
|
31
|
+
| Purpose | Good means | The usual mistake |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| **Brand** (what people think of a person, company or product) | the same few things said, shown and repeated until boring; recognisable without the logo | a different style every time, or slogans with nothing behind them |
|
|
34
|
+
| **Audience** (people who come back) | a series or a format people can expect; something they save, send or reply to | one-off posts; chasing reach over the people already there |
|
|
35
|
+
| **Teaching** (someone understands or can do something) | the reader can do it after one read or watch; the picture carries the hard part | covering everything; abstraction without a worked example |
|
|
36
|
+
| **Product** (someone tries, buys or understands a product) | the real product doing something surprising, then one clear next step | describing the product; internal numbers presented as the story |
|
|
37
|
+
| **Personal** (family, friends, a memory) | one relationship, one small moment, a line that lands; it feels like them | polish that reads as an ad; a slideshow with a stock voice |
|
|
38
|
+
|
|
39
|
+
## Awareness: where the reader already is
|
|
40
|
+
|
|
41
|
+
Decide this before the first line (Schwartz, *Breakthrough Advertising*):
|
|
42
|
+
|
|
43
|
+
| The reader | Open with |
|
|
44
|
+
|---|---|
|
|
45
|
+
| Most aware: knows it, wants it | the thing itself and the offer |
|
|
46
|
+
| Product aware: knows it, unconvinced | a new proof, or what changed |
|
|
47
|
+
| Solution aware: knows the result they want | that result, then how |
|
|
48
|
+
| Problem aware: feels the problem, knows no fix | the problem in their words, then the way out |
|
|
49
|
+
| Unaware | a story or situation they recognise; never the product |
|
|
50
|
+
|
|
51
|
+
A stranger in a feed, a forum or a news site is problem aware at best. Someone browsing a directory
|
|
52
|
+
of tools is solution aware. Only people who already know the person or product are product aware.
|
|
53
|
+
|
|
54
|
+
## The next step and its measure
|
|
55
|
+
|
|
56
|
+
Choose one next step per piece. Write down what counts as success before making anything, with the
|
|
57
|
+
number you expect: views at 24 hours as a multiple of the person's normal, clicks, replies, sign-ups
|
|
58
|
+
in the week after, or for personal pieces whether it was shared and with whom. Without a prediction
|
|
59
|
+
there is nothing to learn from the result (`copy.md` §after).
|
|
60
|
+
|
|
61
|
+
## When the request is vague
|
|
62
|
+
|
|
63
|
+
"Make something for LinkedIn about X" is not a brief. Fill in what you can from the project (its
|
|
64
|
+
positioning, earlier pieces, the person's notes) and then ask the person **one** question that only
|
|
65
|
+
they can answer, about the material, not about the craft. Ask *"what happened the first time you
|
|
66
|
+
saw it work?"*, never *"what should the post say?"*.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# Channels: each place's form, rules and what it rewards
|
|
2
|
+
|
|
3
|
+
Each channel gets its own piece. A directory tagline, a forum post, a launch page, a newsletter and
|
|
4
|
+
a short clip are written separately, in that place's form. **Read the place's own rules before
|
|
5
|
+
drafting, and link them in the brief.** Rules change, so the notes below are a starting point, not a
|
|
6
|
+
substitute for reading them. Dates say when a fact was checked.
|
|
7
|
+
|
|
8
|
+
## Before any community post: the account
|
|
9
|
+
|
|
10
|
+
A community's requirements on the **account** are rules too, and a post that misses one is removed
|
|
11
|
+
unread. Many subreddits and forums set a minimum karma (overall or earned in that community), account
|
|
12
|
+
age or self-promotion ratio, often enforced by a bot and stated only in the sidebar, wiki or a pinned
|
|
13
|
+
post. Read all of them and check the person's account against each, in their signed-in browser. If the
|
|
14
|
+
account falls short, **don't post yet**. Earn the standing inside the rules first, with real comments
|
|
15
|
+
in the person's own words. A removed post stays removed: never propose asking moderators to approve it
|
|
16
|
+
or to waive a rule.
|
|
17
|
+
|
|
18
|
+
Look at what the community is talking about that day. A post about running many AI sessions, made
|
|
19
|
+
the evening after a thread about usage limits blowing up, got answered with "dude loves wasting tokens".
|
|
20
|
+
|
|
21
|
+
## Places
|
|
22
|
+
|
|
23
|
+
**Reddit.** Posting your own work is allowed in reason, and each subreddit's own rules decide what
|
|
24
|
+
counts as promotion (flair, a weekly thread, account age, karma). The "9:1 rule" isn't in Reddit's
|
|
25
|
+
current pages, so treat it as folklore. What wins in maker-friendly subs: a short plain first-person
|
|
26
|
+
title in the shape *"I had problem X, so I made Y do Z"*, with no brand name in front; a short body
|
|
27
|
+
(the top maker posts run about eight short lines); a striking real visual or clip; the maker says in
|
|
28
|
+
the first line that they made it and whether it is free; it names the alternatives and how it
|
|
29
|
+
differs; it ends on a genuine question. Links in the first comment when the sub filters new domains in
|
|
30
|
+
bodies; no tracking parameters where referral links are banned. Be ready in the comments for "is this
|
|
31
|
+
an ad?", "how is this different from X?" and the cost.
|
|
32
|
+
|
|
33
|
+
**Hacker News, Show HN.** For something people can try, ideally without sign-up; not a landing page or
|
|
34
|
+
a blog post. The title is `Show HN: <name> – <what it is, in words HN already uses>`, with no
|
|
35
|
+
superlatives or capitals for emphasis. The maker posts it and stays to answer. **Show HN bans generated
|
|
36
|
+
text in posts and comments**, so the person writes their own; you can prepare notes for them (what
|
|
37
|
+
they tried first and why it fell short, how this differs from named alternatives, what is rough, the
|
|
38
|
+
likely questions). Never ask for votes.
|
|
39
|
+
|
|
40
|
+
**Product Hunt.** A tagline of 60 characters or fewer, no gimmicks; a gallery whose first image works
|
|
41
|
+
on its own; the maker's first comment tells the story, who it is for and what is rough, and asks for
|
|
42
|
+
feedback, never votes.
|
|
43
|
+
|
|
44
|
+
**A directory of tools, plugins or apps.** Readers are solution aware and comparing. The first
|
|
45
|
+
sentence says what it does, for whom, and how it differs from the alternative, in the directory's own
|
|
46
|
+
fields and limits.
|
|
47
|
+
|
|
48
|
+
**Building in public** (progress posts on any channel). Share a decision, a mistake or a lesson, each
|
|
49
|
+
tied to something concrete that happened. A dump of metrics with no lesson reads as a status report and
|
|
50
|
+
invites "so what?"; a number belongs only when it is the lesson.
|
|
51
|
+
|
|
52
|
+
**A blog post.** Something a stranger can use even if they never try the product: a lesson, a method,
|
|
53
|
+
a mistake and what fixed it. The product comes in as the way the author did it. Plan the pictures with
|
|
54
|
+
the words (`copy.md` §5). For search, read `search.md`. Before it goes: every link opens, the title
|
|
55
|
+
and subtitle are set, and there is a one-to-two-sentence meta description. When a post is excerpted
|
|
56
|
+
elsewhere (a forum, a professional network, a short post), each excerpt is written for that place and
|
|
57
|
+
links back to the original.
|
|
58
|
+
|
|
59
|
+
**A newsletter** (Substack, Beehiiv, Ghost, email). This is the highest-intent channel and the one the
|
|
60
|
+
person owns. Frameworks, breakdowns and real stories, with no filler. Most reach often comes from
|
|
61
|
+
forwarding person to person, so a piece someone would send a colleague does best. Avoid holiday weeks
|
|
62
|
+
for anything whose next step is a work action.
|
|
63
|
+
- *Substack mechanics, when preparing a draft through its API from a signed-in browser* (read Jul to
|
|
64
|
+
Oct 2026):
|
|
65
|
+
- **The editor's ProseMirror schema is strict,** and a draft that saves through the API can still open
|
|
66
|
+
blank ("Failed to parse JSON for post"). Copy the shape of an existing draft
|
|
67
|
+
(`GET /api/v1/drafts/<id>`): the doc has no `attrs`; paragraphs and headings carry
|
|
68
|
+
`attrs:{textAlign:null}` (headings also `level`); lists are `bullet_list` → `list_item` →
|
|
69
|
+
`paragraph`; a link mark carries `href`, `target:'_blank'`, `rel:'noopener noreferrer nofollow'` and
|
|
70
|
+
`class:null`; bold and italic are `strong` and `em`. Open the draft in the editor before calling it done.
|
|
71
|
+
- **The cover field only drives the social preview and feed thumbnail.** A picture shown at the top of
|
|
72
|
+
the post must also be the body's first node, a `captionedImage` (copy its exact shape from a post that
|
|
73
|
+
has one; its width and height are the display box, scaled to 1456 px wide). Upload images with
|
|
74
|
+
`POST /api/v1/image` (a data URI) from a script over CDP, since the payload is too big for a one-line
|
|
75
|
+
eval. The cover field wants the signed CDN form of the URL, whose signature can be read from a
|
|
76
|
+
published page's `og:image`.
|
|
77
|
+
- **An open editor tab saves its copy back over an API update,** minutes or hours later and from any
|
|
78
|
+
device. Before an update, find every tab on that post's editor (the person's own too) and navigate it
|
|
79
|
+
away; re-verify about 30 s after pushing, not only at once. If the live body matches an earlier
|
|
80
|
+
version exactly, it was this, not a failed write. `GET /api/v1/drafts/<id>/versions` lists every save
|
|
81
|
+
with time, user and content hash: use it whenever a draft "changed by itself".
|
|
82
|
+
- **Never rely on Substack's scheduled send;** a stale tab's save went out by email on a schedule once,
|
|
83
|
+
and an emailed copy can't be fixed. Snapshot the approved body, and at publish time compare the
|
|
84
|
+
draft with it (block sequence and every paragraph's text). On any mismatch, stop and tell the person.
|
|
85
|
+
Publish only when the person says so, then compare the public post's `body_html` with the snapshot.
|
|
86
|
+
- **A published post is a separate snapshot:** a `PUT` to the draft changes nothing live. Use the
|
|
87
|
+
editor's Update → Update now, which sends no second email; never re-POST publish.
|
|
88
|
+
- Authorship reads correctly from `postBylines`, not `draft_bylines` (empty even when right). The editor
|
|
89
|
+
page is heavy enough that evals time out; do API work from a light tab on the dashboard. Sign-in is a
|
|
90
|
+
one-time code: read the newest one, scoped to the address it was sent to, and switch accounts with
|
|
91
|
+
`change_user=true` (plain sign-in keeps the current session). A prepublish `MISSING_SUBSCRIBE_CTA`
|
|
92
|
+
offers to insert subscribe widgets.
|
|
93
|
+
|
|
94
|
+
**LinkedIn.** Professional readers; a hook that gets to its purpose at once, often with an opinion.
|
|
95
|
+
200 to 500 words, short paragraphs, the person's real story or framework. Plain register works,
|
|
96
|
+
and the person's own speech register beats "professional" polish. Don't open by diagnosing a
|
|
97
|
+
stranger's organisation ("your team isn't X-limited, it's Y-limited") before you have any credibility
|
|
98
|
+
with them: lead with what surprised you and the receipts, and let the diagnosis come as the answer to
|
|
99
|
+
the question the reader asks next. Close with an invitation, not a call to action. Links in a post are commonly believed to reduce reach. If that matters, test it.
|
|
100
|
+
- *Mechanics:* uploads can report failure and land anyway, and a message compose box can still be
|
|
101
|
+
bound to the previous conversation. Check which thread you are in, and read the result, before
|
|
102
|
+
assuming anything.
|
|
103
|
+
|
|
104
|
+
**X.** Plain contrarian one-liners and predictions; a thread only when every post earns its place.
|
|
105
|
+
|
|
106
|
+
**Instagram (feed, carousel, Reels).** It distributes on **sends** (shares in DMs) and watch time. At
|
|
107
|
+
most five hashtags; keywords in the caption and the on-screen text. Carousels save when the list
|
|
108
|
+
overflows and each slide carries proof.
|
|
109
|
+
|
|
110
|
+
**TikTok and Shorts.** The first two seconds decide; a contrarian or surprising line within four
|
|
111
|
+
seconds; native, phone-shot, talking or showing.
|
|
112
|
+
|
|
113
|
+
**YouTube.** Story-driven teaching; the title and thumbnail are one promise (`stills.md`). Most channels
|
|
114
|
+
see a click-through rate of 2 to 10% (YouTube Help). Compare videos with each other by traffic source,
|
|
115
|
+
not against a universal number. Use YouTube's Test & Compare to test thumbnails, not taste.
|
|
116
|
+
|
|
117
|
+
**Email to many** (a launch note, an update). One reader in mind, one next step, a subject that says
|
|
118
|
+
what it is. A one-to-one cold email is sales work and belongs to whatever relationship or sales skill
|
|
119
|
+
the project has, not here.
|
|
120
|
+
|
|
121
|
+
**Answer engines** (ChatGPT, Claude, Perplexity, Copilot, Google's AI answers): see `search.md`.
|
|
122
|
+
|
|
123
|
+
## Sizes and lengths
|
|
124
|
+
|
|
125
|
+
| Format | Size | Notes |
|
|
126
|
+
|---|---|---|
|
|
127
|
+
| Feed image / carousel slide (Instagram, LinkedIn) | 1080 × 1350 (4:5) | the tallest that shows in feed |
|
|
128
|
+
| Square | 1080 × 1080 | |
|
|
129
|
+
| Story / Reel / Short / TikTok | 1080 × 1920 (9:16) | keep text inside the safe band, about 250 px clear top and bottom |
|
|
130
|
+
| YouTube thumbnail | 1280 × 720 | readable at phone size |
|
|
131
|
+
| Reddit or link lead image | 1200 × 900 or 1200 × 630 | shown smaller in feed; test at about 400 px wide |
|
|
132
|
+
| Open Graph / social preview | 1200 × 630 | |
|
|
133
|
+
| Product Hunt gallery | 1270 × 760 | the first image must work alone |
|
|
134
|
+
| Video for chat apps (WhatsApp) | H.264 720p, at most about 15.5 MB | `+faststart` |
|
|
135
|
+
| Video for a TV | landscape 1080p HEVC | from the same edit as the portrait cut; pan across faces, never letterbox |
|
|
136
|
+
| Video for a digital photo frame | silent, captioned, 30 s or less | frames play without sound |
|
|
137
|
+
| Short-form clip length | 15 to 45 s | the payoff before 80% of the runtime |
|
|
138
|
+
|
|
139
|
+
## Never
|
|
140
|
+
|
|
141
|
+
- Post, upload, publish or comment. Prepare it, open it in the person's browser, and let them press
|
|
142
|
+
the button.
|
|
143
|
+
- Reuse one piece unchanged across channels.
|
|
144
|
+
- Write *upvote*, *please share* or *support us*, or hide that the person made it.
|