@easysociable/cli 0.1.19 → 0.1.21
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/package.json
CHANGED
|
@@ -49,12 +49,34 @@ Ask only for what only the user knows:
|
|
|
49
49
|
palette goes in `theme.json` (without a Brand or theme Studio falls back to
|
|
50
50
|
its dark default).
|
|
51
51
|
|
|
52
|
-
### 2. Facts
|
|
52
|
+
### 2. Facts and evidence
|
|
53
53
|
|
|
54
54
|
Research the topic from primary sources (official announcement, docs,
|
|
55
55
|
reputable press). Keep a source URL for every fact. Drop claims you can only
|
|
56
56
|
find in secondary blogs. Never invent numbers, dates, quotes or features.
|
|
57
57
|
|
|
58
|
+
While you read those sources, collect **evidence images**: real pictures that
|
|
59
|
+
can be a page's focal point (a product screenshot, a chart, a figure from the
|
|
60
|
+
paper). Aim for 2–4 per Run, the cover first. A page built around a real image
|
|
61
|
+
reads as proof and looks different from its neighbours; a text-only deck does
|
|
62
|
+
neither.
|
|
63
|
+
|
|
64
|
+
- Sources: only the topic's own primary sources — the product's site, docs,
|
|
65
|
+
blog, press kit or GitHub README; the paper itself (arXiv HTML has each
|
|
66
|
+
figure as its own file); openly licensed images (Wikimedia Commons, CC0/CC BY).
|
|
67
|
+
Never image search, stock sites, news-site photos, other creators' posts or
|
|
68
|
+
anything watermarked.
|
|
69
|
+
- Take image URLs from pages you already opened (`og:image`, images in the
|
|
70
|
+
body) and download them: `curl -sL -o assets/<name>.png <url>`. PNG, JPEG or
|
|
71
|
+
WebP only (convert anything else to PNG), ≤ 20 MB.
|
|
72
|
+
- **Look at every file** before keeping it. Drop it when it is off-topic,
|
|
73
|
+
unreadable at phone size, would need more than 1.25× upscaling to fill its
|
|
74
|
+
area, carries a watermark, or shows a recognisable person who is not the
|
|
75
|
+
subject.
|
|
76
|
+
- Keep each kept image's source URL for the final message.
|
|
77
|
+
- Found nothing usable → fine, step 5 handles it. Don't spend more than a few
|
|
78
|
+
fetches looking.
|
|
79
|
+
|
|
58
80
|
When the user started from a Content Engine run, facts come from its knowledge
|
|
59
81
|
pages instead (see `easysociable-content`).
|
|
60
82
|
|
|
@@ -106,14 +128,19 @@ Structure (step 3) and look are chosen separately. The look comes from a
|
|
|
106
128
|
decoration). Drop any the previous Run used, take the least conventional
|
|
107
129
|
one, and pick references whose `style` fits it.
|
|
108
130
|
5. Otherwise → the content decides: get candidates for the cover with
|
|
109
|
-
`easysociable templates references --role hook,cover
|
|
131
|
+
`easysociable templates references --role hook,cover --json`
|
|
110
132
|
(results are shuffled) and take the first that fits the content. Its
|
|
111
133
|
`style` is the deck's style; for each other page ask for that page's roles
|
|
112
134
|
with `--style <style>`. A number → `metric,proof`; a list item →
|
|
113
|
-
`point,value,steps`; a comparison → `compare`; a
|
|
114
|
-
`screenshot`. No match in that style →
|
|
115
|
-
|
|
116
|
-
|
|
135
|
+
`point,value,steps`; a comparison → `compare`; a page with an evidence
|
|
136
|
+
image (step 2) or a real product → `screenshot`. No match in that style →
|
|
137
|
+
any style, keeping the cover's chrome.
|
|
138
|
+
|
|
139
|
+
Don't filter out references that need an image just because you have none:
|
|
140
|
+
most covers in the library have an image area. Use one and fill that area
|
|
141
|
+
without a photo (references/REFERENCES.md, "A reference's image area"). Keep a
|
|
142
|
+
placeholder only where the content needs a real screenshot or photo (step 5).
|
|
143
|
+
`--no-image` is for when you specifically want designs drawn with type alone.
|
|
117
144
|
Read each chosen design with `easysociable templates source --family <familyId> --json`
|
|
118
145
|
and adapt it as in `references/REFERENCES.md` ("Adapting a reference" and
|
|
119
146
|
"Avoid"). Put the result in the pack as a generated page:
|
|
@@ -136,17 +163,26 @@ Say 'same as this'. Want another look? Say 'different look'."
|
|
|
136
163
|
an AI-generated picture of a real product UI.
|
|
137
164
|
- Concept / mood / background → generate one if this environment has an
|
|
138
165
|
image-generation tool; otherwise leave the page text-only.
|
|
139
|
-
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
166
|
+
- Generated images never contain text: all words stay in editable text layers.
|
|
167
|
+
(A real screenshot or figure keeps its own text.)
|
|
168
|
+
- Fill each image area in this order:
|
|
169
|
+
1. The user's own image, when they gave one.
|
|
170
|
+
2. An evidence image from step 2. Upload it
|
|
171
|
+
(`easysociable images upload --file body.json` with
|
|
172
|
+
`{ "file": "data:image/png;base64,…", "filename": "x.png" }`; build it with
|
|
173
|
+
`node -e "const f=process.argv[1],t=f.match(/\.(jpe?g|webp)$/i)?(/webp/i.test(f)?'webp':'jpeg'):'png';console.log(JSON.stringify({file:'data:image/'+t+';base64,'+require('fs').readFileSync(f,'base64'),filename:require('path').basename(f)}))" assets/x.png > body.json`)
|
|
174
|
+
and use the returned `asset.url` as `src`.
|
|
175
|
+
Crop and scale it (`objectFit: 'cover'`, `objectPosition`), never alter
|
|
176
|
+
what it shows. To point at something in it, add a separate element on top
|
|
177
|
+
(a red ellipse border, an underline bar) so the user can move or delete it.
|
|
178
|
+
3. Something only the user has (their app, their dashboard, their results)
|
|
179
|
+
→ a **placeholder slot**, never a text-only layout. Size it into the
|
|
180
|
+
composition (usually the lower half of the page) and label it with
|
|
181
|
+
exactly what belongs there, e.g. "Add: Grok Bot app screenshot". The user
|
|
182
|
+
selects it in Studio and clicks the upload button to replace it. Markup
|
|
183
|
+
and SVG in `references/REFERENCES.md` ("Image placeholder").
|
|
184
|
+
4. Anything else → fill the area from the content or delete it
|
|
185
|
+
(`references/REFERENCES.md`, "A reference's image area").
|
|
150
186
|
- List every placeholder in the final message ("page 2: app screenshot").
|
|
151
187
|
|
|
152
188
|
### 6. Check (hard gate)
|
|
@@ -172,8 +208,8 @@ easysociable slideshows create --file pack.json --brand-id <brandId> --json
|
|
|
172
208
|
# no Brand: --theme theme.json instead of --brand-id
|
|
173
209
|
```
|
|
174
210
|
|
|
175
|
-
Reply once with: the `studioUrl`, the arc in one line, the sources
|
|
176
|
-
image placeholder to replace (page + what to upload). Tell them to edit in
|
|
211
|
+
Reply once with: the `studioUrl`, the arc in one line, the sources (facts and
|
|
212
|
+
each evidence image: "p1 image: <url>"), and each image placeholder to replace (page + what to upload). Tell them to edit in
|
|
177
213
|
Studio and click **Download** for the PNG ZIP.
|
|
178
214
|
|
|
179
215
|
### 8. Revise (same Run, never a copy)
|
|
@@ -240,7 +276,7 @@ Template steps:
|
|
|
240
276
|
roles the new content has none of.
|
|
241
277
|
4. Change only text inside `data-variable` elements and send matching
|
|
242
278
|
`slots`. Too long → rewrite shorter; never resize boxes or move elements.
|
|
243
|
-
Every source image
|
|
279
|
+
Every source image is replaced for the new topic (step 5 order);
|
|
244
280
|
Brand avatar/logo stay.
|
|
245
281
|
5. Step 6 check, then create (step 7). In the reply, say in one line what
|
|
246
282
|
differs from the source ("6 tips, so 6 point pages instead of 4") and that
|
|
@@ -9,7 +9,7 @@ no reference at all.
|
|
|
9
9
|
Find references for a page role, shuffled, as short summaries:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
easysociable templates references --role hook,cover [--
|
|
12
|
+
easysociable templates references --role hook,cover [--style <style>] [--exclude <familyIds>] [--no-image] --json
|
|
13
13
|
easysociable templates source --family <familyId> --json # the design's Studio source
|
|
14
14
|
```
|
|
15
15
|
|
|
@@ -29,6 +29,13 @@ Roles overlap in the catalog, so pass related ones together: `hook,cover` ·
|
|
|
29
29
|
`height` = lines × lineHeight + ~12% of fontSize for descenders.
|
|
30
30
|
4. Remove what you do not need; add only elements copied from another reference
|
|
31
31
|
with the same `style` (rule rows, a stat row).
|
|
32
|
+
4a. **A reference's image area** when you have no image and the content does
|
|
33
|
+
not need a real one: keep the area's box and fill it from the content with a
|
|
34
|
+
large number or keyword, a short quote with an oversized quote mark, an
|
|
35
|
+
accent-colour block carrying one word, or one icon from
|
|
36
|
+
`easysociable icons search` on a tinted block. Never a grey placeholder or an
|
|
37
|
+
empty box on the cover. If nothing fits, delete the area and give the
|
|
38
|
+
headline its space.
|
|
32
39
|
5. Brand chrome: the header label is the Brand name (or the topic when there is
|
|
33
40
|
no Brand); the CTA names the Brand handle. Never leave a reference's original
|
|
34
41
|
name or handle (e.g. "Will.AI.m") on a page. **Bind them** so a Brand change
|