@easysociable/cli 0.1.3 → 0.1.4
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/README.md +13 -10
- package/content-engine/scripts/starter.mjs +3 -1
- package/content-engine/scripts/workbench.mjs +13 -8
- package/content-engine/starter/CLAUDE.md +217 -128
- package/content-engine/starter/engine.json +3 -0
- package/content-engine/starter/needs/README.md +38 -0
- package/content-engine/starter/needs/_index.md +31 -0
- package/content-engine/starter/needs/_template.md +24 -0
- package/content-engine/starter/needs/entries/README.md +5 -0
- package/content-engine/starter/products/README.md +38 -0
- package/content-engine/starter/products/_index.md +24 -0
- package/content-engine/starter/products/_template.md +56 -0
- package/content-engine/starter/products/entries/P-001-easysociable.md +150 -0
- package/content-engine/starter/profiles/_index.md +6 -3
- package/content-engine/starter/profiles/default/README.md +4 -1
- package/content-engine/starter/profiles/default/boundaries.md +14 -0
- package/content-engine/starter/profiles/default/expression.md +18 -0
- package/content-engine/starter/profiles/default/lanes.md +12 -0
- package/content-engine/starter/profiles/default/stories.md +15 -0
- package/content-engine/starter/profiles/default/voice.md +14 -0
- package/content-engine/starter/recommendations/README.md +21 -0
- package/content-engine/starter/recommendations/_index.md +21 -0
- package/content-engine/starter/recommendations/_template.md +44 -0
- package/content-engine/starter/runs/_template/brief.md +1 -1
- package/content-engine/starter/runs/_template/pack.md +15 -7
- package/content-engine/starter/runs/_template/packet.md +6 -0
- package/content-engine/starter/swipe/_template.md +3 -1
- package/content-engine/starter/topics/README.md +4 -8
- package/content-engine/starter/topics/_index.md +12 -5
- package/content-engine/starter/topics/_template-item.md +64 -51
- package/content-engine/starter/topics/scoring.md +55 -4
- package/content-engine/workbench/__pycache__/build.cpython-310.pyc +0 -0
- package/content-engine/workbench/build.py +306 -97
- package/content-engine/workbench/serve.py +0 -0
- package/content-engine/workbench/template.html +173 -27
- package/dist/easysociable.js +191 -133
- package/dist/easysociable.js.map +1 -1
- package/package.json +13 -14
- package/skills/ONBOARDING.md +14 -15
- package/skills/easysociable-content/SKILL.md +100 -19
- package/skills/easysociable-content/workflows/INTERVIEW.md +70 -0
- package/skills/easysociable-content/workflows/NEEDS.md +82 -0
- package/skills/easysociable-slideshow/SKILL.md +79 -45
- package/skills/easysociable-slideshow/references/ARC.md +44 -0
- package/skills/easysociable-slideshow/references/CONTENT_PACK.md +34 -6
- package/skills/easysociable-slideshow/workflows/CREATE_RUN.md +24 -5
- package/skills/easysociable-slideshow/workflows/OUT_OF_SCOPE.md +3 -0
- package/skills/easysociable-template/SKILL.md +13 -16
- package/skills/easysociable-template/references/CATALOG_METADATA.md +21 -18
- package/skills/easysociable-template/scripts/generate-theme-from-hex.mjs +0 -0
- package/skills/easysociable-template/workflows/FILL_AND_RENDER.md +4 -83
- package/skills/easysociable-template/workflows/OUT_OF_SCOPE.md +3 -2
- package/content-engine/starter/discovery/README.md +0 -18
- package/content-engine/starter/discovery/_index.md +0 -27
- package/content-engine/starter/discovery/_template.md +0 -41
- package/content-engine/starter/topics/WATCHLIST.md +0 -65
- package/content-engine/starter/topics/watchlists/README.md +0 -10
- package/content-engine/starter/topics/watchlists/_shared.md +0 -14
- package/content-engine/starter/topics/watchlists/default.md +0 -6
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# needs/
|
|
2
|
+
|
|
3
|
+
First-class **user-needs library**. Not an inbox type. Inbox stays structure / link / insight.
|
|
4
|
+
|
|
5
|
+
| Path | Role |
|
|
6
|
+
|------|------|
|
|
7
|
+
| `_index.md` | Quote registry (source of truth for list/status) |
|
|
8
|
+
| `entries/N-YYYYMMDD-XX.md` | One need: verbatim quote + sightings + optional gloss |
|
|
9
|
+
| `_template.md` | Entry shape |
|
|
10
|
+
|
|
11
|
+
## Status machine (only these words)
|
|
12
|
+
|
|
13
|
+
```text
|
|
14
|
+
captured → just written, or still captured after a synonym merge (frequency ≥ 1)
|
|
15
|
+
promoted → and only when a T- exists whose need_ids contain this N-; topic_ids lists that T-
|
|
16
|
+
retired → user discarded
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Do **not** use `clustered`. Merge is not a status.
|
|
20
|
+
|
|
21
|
+
## Do not
|
|
22
|
+
|
|
23
|
+
- Invent quotes or FAQ template sentences
|
|
24
|
+
- Treat a watchlist hook / viral title as a need
|
|
25
|
+
- Put `N-` into a topic `capture_id` (`capture_id` is inbox `C-…` only)
|
|
26
|
+
- Hosted clustering
|
|
27
|
+
|
|
28
|
+
## Quote shape (not product copy, not index rows)
|
|
29
|
+
|
|
30
|
+
These lines are the **shape** of a creator's audience talking. They are **not** EasySociable features and must **not** be seeded as rows:
|
|
31
|
+
|
|
32
|
+
- 我不知道自己适合做什么 AI 自媒体方向
|
|
33
|
+
- 我每天用 AI 写稿,还是断更
|
|
34
|
+
- 我账号有流量,但为什么没人咨询
|
|
35
|
+
- 我想接广告,要多少粉丝才可以
|
|
36
|
+
- 我不会出镜,能不能先做图文
|
|
37
|
+
|
|
38
|
+
When a quote is reused as published copy, redact names / DMs / student details.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# Needs index
|
|
2
|
+
|
|
3
|
+
Registry of **audience quotes**. Source of truth for need lifecycle.
|
|
4
|
+
|
|
5
|
+
Newest rows on top. **Zero starter rows** — do not invent quotes.
|
|
6
|
+
|
|
7
|
+
| id | date | profile | source_type | quote | speaker | frequency | status | topic_ids | file |
|
|
8
|
+
|----|------|---------|-------------|-------|---------|-----------|--------|-----------|------|
|
|
9
|
+
|
|
10
|
+
## Columns
|
|
11
|
+
|
|
12
|
+
| Column | Meaning |
|
|
13
|
+
|--------|---------|
|
|
14
|
+
| `id` | `N-YYYYMMDD-XX`, increment per day (same shape as `C-` / `D-` / `T-`) |
|
|
15
|
+
| `date` | First sighting date |
|
|
16
|
+
| `profile` | Default current `profile_id` |
|
|
17
|
+
| `source_type` | `comment` \| `dm` \| `consult` \| `faq` \| `student` \| `other` |
|
|
18
|
+
| `quote` | **Verbatim.** Never put a gloss in this cell |
|
|
19
|
+
| `speaker` | Optional; anonymous → `anon`. Do not invent names |
|
|
20
|
+
| `frequency` | Integer, default 1. Same-meaning merge: `+1` on this row, append a sighting — do **not** create a second row |
|
|
21
|
+
| `status` | `captured` \| `promoted` \| `retired` (**never** `clustered`) |
|
|
22
|
+
| `topic_ids` | Cited `T-…`, comma-separated. Non-empty **iff** status=`promoted` |
|
|
23
|
+
| `file` | `needs/entries/N-….md` |
|
|
24
|
+
|
|
25
|
+
## Agent rules
|
|
26
|
+
|
|
27
|
+
- Every need: new row + new `entries/<id>.md`
|
|
28
|
+
- Merge is not a new status. After a user-approved synonym merge, keep `captured`, bump `frequency`, append sighting
|
|
29
|
+
- Do not mark `promoted` without a `T-` whose `need_ids` contain this `N-`
|
|
30
|
+
- Scan-for-topics input set: `status=captured` (`topic_ids` empty). Max 5 `produce`
|
|
31
|
+
- Quotes may include DMs / student info. Keep local. Redact PII if a quote is used in published copy
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: N-YYYYMMDD-XX
|
|
3
|
+
date: YYYY-MM-DD
|
|
4
|
+
profile: default
|
|
5
|
+
source_type: comment | dm | consult | faq | student | other
|
|
6
|
+
frequency: 1
|
|
7
|
+
status: captured
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# N-… — five-character-or-less need label (Agent-coined, not the quote)
|
|
11
|
+
|
|
12
|
+
## Quote
|
|
13
|
+
> (verbatim, unedited)
|
|
14
|
+
|
|
15
|
+
## Sightings
|
|
16
|
+
| date | source_type | where |
|
|
17
|
+
|------|-------------|-------|
|
|
18
|
+
| YYYY-MM-DD | comment | url or `pasted` |
|
|
19
|
+
|
|
20
|
+
## Our gloss(optional, separate from the quote)
|
|
21
|
+
One line: what they are hiring us to solve.
|
|
22
|
+
|
|
23
|
+
## Status
|
|
24
|
+
captured
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# products/
|
|
2
|
+
|
|
3
|
+
First-class **product facts library**. Products describe what the creator
|
|
4
|
+
offers; they are not audience needs, topics, or published claims.
|
|
5
|
+
|
|
6
|
+
| Path | Role |
|
|
7
|
+
|------|------|
|
|
8
|
+
| `_index.md` | Product registry and lifecycle |
|
|
9
|
+
| `entries/P-*.md` | Product facts, boundaries, pricing, proof and claims |
|
|
10
|
+
| `_template.md` | Product entry shape |
|
|
11
|
+
|
|
12
|
+
## Relationship to the content engine
|
|
13
|
+
|
|
14
|
+
```text
|
|
15
|
+
Needs (demand evidence) + Profile (identity)
|
|
16
|
+
→ Topic (editorial judgment)
|
|
17
|
+
→ optional Product fit (offer context)
|
|
18
|
+
→ Run
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
- A `Need` records what an audience member actually said.
|
|
22
|
+
- A `Product` records what is currently offered and what it does not promise.
|
|
23
|
+
- A `Topic` decides whether something is worth saying. It may cite zero, one, or
|
|
24
|
+
several products.
|
|
25
|
+
- Product fit never makes a Topic `ready` by itself, and a product description
|
|
26
|
+
never becomes a Need quote.
|
|
27
|
+
|
|
28
|
+
## Rules
|
|
29
|
+
|
|
30
|
+
- Keep product facts current. Prices and entitlements must include an
|
|
31
|
+
`effective_from` date and a source of truth.
|
|
32
|
+
- Do not invent customers, outcomes, metrics, testimonials or proof.
|
|
33
|
+
- Mark a product `retired` instead of silently deleting a product used by a
|
|
34
|
+
Topic or Run.
|
|
35
|
+
- Use `product_fit: none` for useful education that does not need a product
|
|
36
|
+
connection. Do not force a CTA into every Topic.
|
|
37
|
+
- Product claims here describe the offer. The `wiki/claims/` catalog tracks
|
|
38
|
+
propositions tested through published content; they are different objects.
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Products index
|
|
2
|
+
|
|
3
|
+
Newest rows on top. This is the registry; product facts live in the entry
|
|
4
|
+
file.
|
|
5
|
+
|
|
6
|
+
| id | name | status | audience | price | effective_from | file |
|
|
7
|
+
|----|------|--------|----------|-------|----------------|------|
|
|
8
|
+
| P-001 | EasySociable | active | creators and teams producing branded multi-page social visuals | see entry | 2026-09-04 | products/entries/P-001-easysociable.md |
|
|
9
|
+
|
|
10
|
+
## Status values
|
|
11
|
+
|
|
12
|
+
| status | Meaning |
|
|
13
|
+
|--------|---------|
|
|
14
|
+
| `draft` | Being defined; do not use for product claims |
|
|
15
|
+
| `active` | Current offer; may be cited by Topics and Runs |
|
|
16
|
+
| `retired` | No longer offered; retained for historical references |
|
|
17
|
+
|
|
18
|
+
## Agent rules
|
|
19
|
+
|
|
20
|
+
- Read the product entry before making a product claim.
|
|
21
|
+
- `price` is a lookup hint only; use the dated entry for exact pricing and
|
|
22
|
+
entitlements.
|
|
23
|
+
- A Topic may cite `product_ids: none` even when the account has active
|
|
24
|
+
products.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: P-YYYYMMDD-XX
|
|
3
|
+
name:
|
|
4
|
+
status: draft
|
|
5
|
+
effective_from: YYYY-MM-DD
|
|
6
|
+
source_of_truth:
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
# Product name
|
|
10
|
+
|
|
11
|
+
## Product promise
|
|
12
|
+
|
|
13
|
+
One sentence describing the customer change. Do not promise an outcome the
|
|
14
|
+
product cannot control.
|
|
15
|
+
|
|
16
|
+
## What it is
|
|
17
|
+
|
|
18
|
+
## Best for
|
|
19
|
+
|
|
20
|
+
## Not for
|
|
21
|
+
|
|
22
|
+
## Problem
|
|
23
|
+
|
|
24
|
+
## Mechanism
|
|
25
|
+
|
|
26
|
+
How the product addresses the problem.
|
|
27
|
+
|
|
28
|
+
## Not solving
|
|
29
|
+
|
|
30
|
+
Explicit exclusions and limitations.
|
|
31
|
+
|
|
32
|
+
## Pricing and entitlements
|
|
33
|
+
|
|
34
|
+
Include currency, billing period, limits and plan differences. Record the
|
|
35
|
+
effective date above.
|
|
36
|
+
|
|
37
|
+
## Proof
|
|
38
|
+
|
|
39
|
+
Named evidence only. Empty is valid.
|
|
40
|
+
|
|
41
|
+
## Objections
|
|
42
|
+
|
|
43
|
+
## Claims
|
|
44
|
+
|
|
45
|
+
### Safe to say
|
|
46
|
+
|
|
47
|
+
### Say carefully
|
|
48
|
+
|
|
49
|
+
### Do not say
|
|
50
|
+
|
|
51
|
+
## CTA
|
|
52
|
+
|
|
53
|
+
When to educate, mention, invite, or sell.
|
|
54
|
+
|
|
55
|
+
## Version notes
|
|
56
|
+
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: P-001
|
|
3
|
+
name: EasySociable
|
|
4
|
+
status: active
|
|
5
|
+
effective_from: 2026-09-04
|
|
6
|
+
source_of_truth:
|
|
7
|
+
- docs/prd.md
|
|
8
|
+
- docs/pricing-v1.md
|
|
9
|
+
- apps/easysociable/app/routes/home.tsx
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# EasySociable
|
|
13
|
+
|
|
14
|
+
## Product promise
|
|
15
|
+
|
|
16
|
+
Turn an agent-produced content argument into a reusable, branded,
|
|
17
|
+
reviewable, multi-page social visual pack.
|
|
18
|
+
|
|
19
|
+
## What it is
|
|
20
|
+
|
|
21
|
+
EasySociable is the hosted visual production layer for an external Agent. It
|
|
22
|
+
provides reusable Page Templates, Brands, durable Slideshow Runs, Studio
|
|
23
|
+
review/editing, and browser Download of the reviewed PNG pack.
|
|
24
|
+
|
|
25
|
+
The Agent supplies the content reasoning and page structure. EasySociable does
|
|
26
|
+
not write the content or provide a hosted LLM.
|
|
27
|
+
|
|
28
|
+
## Best for
|
|
29
|
+
|
|
30
|
+
- Creators who already use Codex, Claude Code, or a comparable Agent for
|
|
31
|
+
content reasoning.
|
|
32
|
+
- Creators and teams producing branded carousels across TikTok, Instagram,
|
|
33
|
+
LinkedIn, or Threads.
|
|
34
|
+
- Operators who need reusable visual systems, role-specific layouts, and a
|
|
35
|
+
review step before download.
|
|
36
|
+
|
|
37
|
+
## Not for
|
|
38
|
+
|
|
39
|
+
- Users looking for a browser-only content writing assistant.
|
|
40
|
+
- Users who want a general-purpose freeform design editor instead of a
|
|
41
|
+
constrained reusable visual system.
|
|
42
|
+
- Users who want EasySociable to manage their social accounts or publish
|
|
43
|
+
automatically.
|
|
44
|
+
|
|
45
|
+
## Problem
|
|
46
|
+
|
|
47
|
+
An Agent can produce the argument, but the visual production context is often
|
|
48
|
+
lost: each carousel starts from a blank design, brand instructions are
|
|
49
|
+
repeated, and a small revision can require regeneration.
|
|
50
|
+
|
|
51
|
+
When one idea must become several platform deliverables, the operator also has
|
|
52
|
+
to repeat layout and export work while checking platform-specific canvases.
|
|
53
|
+
|
|
54
|
+
## Mechanism
|
|
55
|
+
|
|
56
|
+
- Page Templates are discoverable by layout role such as `cover`, `hook`,
|
|
57
|
+
`value`, `steps`, `proof`, and `cta`, so a content structure can be matched
|
|
58
|
+
to an appropriate visual layout.
|
|
59
|
+
- A Brand and reusable templates persist visual decisions across future Runs.
|
|
60
|
+
- Studio keeps the complete Run reviewable and allows supported text and image
|
|
61
|
+
slot edits before Download.
|
|
62
|
+
- Platform-specific Layout Family variants and exports adapt the same
|
|
63
|
+
structured content to supported canvas presets.
|
|
64
|
+
|
|
65
|
+
## Not solving
|
|
66
|
+
|
|
67
|
+
- Content strategy, audience research, or the quality of the Agent's thesis.
|
|
68
|
+
- Guaranteed reach, engagement, conversions, or viral performance.
|
|
69
|
+
- Automatic social posting or social-account connection.
|
|
70
|
+
- A hosted LLM or a replacement for the user's Agent.
|
|
71
|
+
- Unlimited arbitrary canvas editing or unrestricted template composition.
|
|
72
|
+
|
|
73
|
+
## Pricing and entitlements
|
|
74
|
+
|
|
75
|
+
Early-access prices; list prices and free limits may change.
|
|
76
|
+
|
|
77
|
+
| Plan | Monthly | Annual | Slideshow Download | Brands | Image library |
|
|
78
|
+
|------|---------|--------|--------------------|--------|---------------|
|
|
79
|
+
| Free | $0 | — | 3/month, 1 platform per pack | 1 | 2 GB |
|
|
80
|
+
| Creator | $19 | $190/year | Unlimited, all selected V1 platforms | 5 | 50 GB |
|
|
81
|
+
| Pro | $39 | $390/year | Unlimited, all selected V1 platforms | 25 | 200 GB |
|
|
82
|
+
| Agency | Sales-led | Contract | Contract | >25 | >200 GB |
|
|
83
|
+
|
|
84
|
+
Paid plans include the full system-template catalog, up to 20 pages per
|
|
85
|
+
Slideshow Run, private drafts, three API keys, no overage and no watermark.
|
|
86
|
+
Pixels leave the product through Studio Download; CLI/MCP is not a final PNG
|
|
87
|
+
factory.
|
|
88
|
+
|
|
89
|
+
## Proof
|
|
90
|
+
|
|
91
|
+
No customer proof is recorded here. Do not invent testimonials, adoption
|
|
92
|
+
metrics or performance improvements.
|
|
93
|
+
|
|
94
|
+
## Objections
|
|
95
|
+
|
|
96
|
+
### “Canva already does this.”
|
|
97
|
+
|
|
98
|
+
Canva is the broader freeform design workspace. EasySociable is for an
|
|
99
|
+
Agent-first, repeatable visual production workflow with role-aware templates,
|
|
100
|
+
durable Runs and Studio review.
|
|
101
|
+
|
|
102
|
+
### “Can the Agent write my post?”
|
|
103
|
+
|
|
104
|
+
The Agent can do that outside EasySociable. EasySociable owns the visual
|
|
105
|
+
production layer.
|
|
106
|
+
|
|
107
|
+
### “Can I publish directly?”
|
|
108
|
+
|
|
109
|
+
V1 produces a reviewed Download from Studio. It does not connect social
|
|
110
|
+
accounts or publish posts.
|
|
111
|
+
|
|
112
|
+
## Claims
|
|
113
|
+
|
|
114
|
+
### Safe to say
|
|
115
|
+
|
|
116
|
+
- Reuse saved Brands and Page Templates.
|
|
117
|
+
- Select layouts by supported page role.
|
|
118
|
+
- Review and edit supported slots in Studio before Download.
|
|
119
|
+
- Create platform-specific variants for supported V1 platforms and canvases.
|
|
120
|
+
|
|
121
|
+
### Say carefully
|
|
122
|
+
|
|
123
|
+
- “One idea, multiple platforms” means the structured Run is adapted and
|
|
124
|
+
exported for supported platform formats; it does not mean one identical file
|
|
125
|
+
is valid everywhere.
|
|
126
|
+
- “Faster” requires a user-specific baseline. Do not claim a universal time
|
|
127
|
+
saving.
|
|
128
|
+
- “Branded” means the configured Brand and selected templates are applied; it
|
|
129
|
+
does not mean every creative decision is automatically correct.
|
|
130
|
+
|
|
131
|
+
### Do not say
|
|
132
|
+
|
|
133
|
+
- “Guaranteed higher engagement.”
|
|
134
|
+
- “One-click automatic publishing.”
|
|
135
|
+
- “AI writes all your content.”
|
|
136
|
+
- “No review is needed.”
|
|
137
|
+
- “Every platform receives the same file.”
|
|
138
|
+
|
|
139
|
+
## CTA
|
|
140
|
+
|
|
141
|
+
- `educate`: explain the Agent-to-visual production gap.
|
|
142
|
+
- `mention`: show how a role-specific template or Brand persists.
|
|
143
|
+
- `invite`: ask users to try a real content Run and review it in Studio.
|
|
144
|
+
- `sell`: use only when the audience has a validated need for repeated
|
|
145
|
+
branded visual production.
|
|
146
|
+
|
|
147
|
+
## Version notes
|
|
148
|
+
|
|
149
|
+
- 2026-09-04: early-access pricing and V1 entitlements from
|
|
150
|
+
`docs/pricing-v1.md`.
|
|
@@ -3,11 +3,14 @@
|
|
|
3
3
|
Reusable **content profiles**: pillars + audience + voice.
|
|
4
4
|
Accounts point here; do not copy profile bodies into account files.
|
|
5
5
|
|
|
6
|
-
| id | path | voice | one_liner | accounts |
|
|
7
|
-
|
|
8
|
-
| default | profiles/default/ | `profiles/default/voice.md` | Replace this one-liner with the profile’s job | your-handle |
|
|
6
|
+
| id | path | voice | one_liner | accounts | product_ids | recommendation_scope |
|
|
7
|
+
|----|------|-------|-----------|----------|-------------|---------------------|
|
|
8
|
+
| default | profiles/default/ | `profiles/default/voice.md` | Replace this one-liner with the profile’s job | your-handle | none | none |
|
|
9
9
|
|
|
10
10
|
## Voice column
|
|
11
11
|
|
|
12
12
|
- Empty or `profile` → load `profiles/<id>/voice.md`
|
|
13
13
|
- Explicit path → load that file instead
|
|
14
|
+
|
|
15
|
+
`profiles/<id>/lanes.md` describes publishing lanes such as teaching, building,
|
|
16
|
+
reviewing and comparing. A lane is not a replacement for a pillar.
|
|
@@ -6,6 +6,9 @@ Replace this starter profile before the first serious draft.
|
|
|
6
6
|
|------|------|
|
|
7
7
|
| `pillars.md` | Topics this profile may cover |
|
|
8
8
|
| `audience.md` | Readers + per-platform emphasis |
|
|
9
|
-
| `voice.md` | Identity +
|
|
9
|
+
| `voice.md` | Identity + Experience + Values + Persona |
|
|
10
|
+
| `stories.md` | Story inventory (cite or none) |
|
|
11
|
+
| `boundaries.md` | Creator must-avoid (Not covering / Never claim) |
|
|
12
|
+
| `expression.md` | Expression likes / dislikes |
|
|
10
13
|
|
|
11
14
|
Accounts: see `accounts/_index.md`.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Boundaries — profile `default`
|
|
2
|
+
|
|
3
|
+
**Role:** Topics, audiences, and claims this creator will not write.
|
|
4
|
+
**Not:** Audience “Not for” (`./audience.md`) — that excludes readers.
|
|
5
|
+
|
|
6
|
+
Missing this file is a **hard-gate fail**. Write this starter, then interview. Never invent boundaries.
|
|
7
|
+
|
|
8
|
+
## Not covering
|
|
9
|
+
|
|
10
|
+
- (fill)
|
|
11
|
+
|
|
12
|
+
## Never claim
|
|
13
|
+
|
|
14
|
+
- (fill)
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Expression — profile `default`
|
|
2
|
+
|
|
3
|
+
**Role:** Concrete likes and dislikes (phrases, structures, clichés).
|
|
4
|
+
**Not:** Hype bans (`./voice.md` Do not say).
|
|
5
|
+
|
|
6
|
+
Missing this file = `profile: partial`, not a hard-gate fail.
|
|
7
|
+
|
|
8
|
+
## Likes
|
|
9
|
+
|
|
10
|
+
1. (fill)
|
|
11
|
+
2. (fill)
|
|
12
|
+
3. (fill)
|
|
13
|
+
|
|
14
|
+
## Dislikes
|
|
15
|
+
|
|
16
|
+
1. (fill)
|
|
17
|
+
2. (fill)
|
|
18
|
+
3. (fill)
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Content lanes
|
|
2
|
+
|
|
3
|
+
Lanes describe how this profile publishes, not what the profile is about.
|
|
4
|
+
Pillars remain the durable subjects.
|
|
5
|
+
|
|
6
|
+
| id | name | purpose | status |
|
|
7
|
+
|----|------|---------|--------|
|
|
8
|
+
| teach | Teaching | Explain systems, mechanisms and workflows | active |
|
|
9
|
+
| build | Building in public | Share implementation decisions and lessons | active |
|
|
10
|
+
| review | Tool review | Review third-party AI products with evidence | active |
|
|
11
|
+
| compare | Tool comparison | Compare options by a stated user job | active |
|
|
12
|
+
| offer | Product education | Explain owned product mechanisms and limits | active |
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Stories — profile `default`
|
|
2
|
+
|
|
3
|
+
**Role:** Narrative inventory the draft may cite.
|
|
4
|
+
**Not:** Identity table facts (`./voice.md` Experience).
|
|
5
|
+
|
|
6
|
+
0–1 stories is enough for a first session (`profile: partial`). Skip if the user has none they will make public.
|
|
7
|
+
|
|
8
|
+
## Stories
|
|
9
|
+
|
|
10
|
+
### S1 — (title)
|
|
11
|
+
|
|
12
|
+
- **Situation:** (fill)
|
|
13
|
+
- **Choice:** (fill)
|
|
14
|
+
- **Lesson:** (fill)
|
|
15
|
+
- **Public:** yes | no
|
|
@@ -13,12 +13,26 @@
|
|
|
13
13
|
| **Point of view** | (fill) |
|
|
14
14
|
| **Not claiming** | Invented metrics, customers, quotes, or team size |
|
|
15
15
|
|
|
16
|
+
## Experience
|
|
17
|
+
|
|
18
|
+
Facts copy may cite (year, role, thing done). Write `not claiming` when unknown.
|
|
19
|
+
|
|
20
|
+
- (fill)
|
|
21
|
+
|
|
22
|
+
## Values
|
|
23
|
+
|
|
24
|
+
Claims this profile will always make / will never make. Repeatable topics go in `pillars.md`, not here.
|
|
25
|
+
|
|
26
|
+
- (fill)
|
|
27
|
+
|
|
16
28
|
## Persona
|
|
17
29
|
|
|
30
|
+
- (fill)
|
|
18
31
|
- Direct. Concrete nouns. Address the reader as **you**.
|
|
19
32
|
- Do not invent bio facts not listed in Identity.
|
|
20
33
|
|
|
21
34
|
## Do not say
|
|
22
35
|
|
|
36
|
+
- (fill)
|
|
23
37
|
- Fake social proof
|
|
24
38
|
- Empty hype (“game-changer”, “unlock your potential”)
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# recommendations/
|
|
2
|
+
|
|
3
|
+
First-class **third-party product and tool library**. This is separate from
|
|
4
|
+
`products/`: entries here are products the profile may review, compare, or
|
|
5
|
+
recommend, not products EasySociable owns or sells.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
Profile + Needs + review evidence
|
|
9
|
+
→ Topic
|
|
10
|
+
→ optional recommendation_ids
|
|
11
|
+
→ Run
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Rules
|
|
15
|
+
|
|
16
|
+
- Do not treat a recommendation as an owned Product or as a product CTA.
|
|
17
|
+
- Do not copy vendor marketing claims into `quote` or evidence.
|
|
18
|
+
- Record the research date and source URLs. Prices and features can change.
|
|
19
|
+
- Record affiliate, sponsorship, or other commercial relationships when known.
|
|
20
|
+
- A recommendation needs a review basis: observed workflow, named source,
|
|
21
|
+
comparison, or user-provided evidence. An empty entry is not a review.
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Recommendations index
|
|
2
|
+
|
|
3
|
+
Third-party tools and products available for review or comparison. No starter
|
|
4
|
+
entries are provided.
|
|
5
|
+
|
|
6
|
+
| id | name | status | category | profiles | pillars | last_researched | relationship | file |
|
|
7
|
+
|----|------|--------|----------|----------|---------|-----------------|--------------|------|
|
|
8
|
+
| -- | ---- | ------ | -------- | -------- | ------- | --------------- | ------------ | ---- |
|
|
9
|
+
|
|
10
|
+
## Status values
|
|
11
|
+
|
|
12
|
+
| status | Meaning |
|
|
13
|
+
|--------|---------|
|
|
14
|
+
| `candidate` | Captured for possible research; not publishable |
|
|
15
|
+
| `researched` | Evidence and limits recorded |
|
|
16
|
+
| `active` | Available for Topics and reviews |
|
|
17
|
+
| `retired` | No longer maintained or relevant |
|
|
18
|
+
|
|
19
|
+
`profiles` is a comma-separated many-to-many association. Use `*` only when
|
|
20
|
+
the subject is intentionally shared across all profiles. `pillars` records
|
|
21
|
+
where the subject is relevant; it does not make the subject an owned product.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
---
|
|
2
|
+
id: R-YYYYMMDD-XX
|
|
3
|
+
name:
|
|
4
|
+
status: candidate
|
|
5
|
+
category:
|
|
6
|
+
profiles: default
|
|
7
|
+
pillars:
|
|
8
|
+
last_researched: YYYY-MM-DD
|
|
9
|
+
relationship: none | affiliate | sponsor | client | other
|
|
10
|
+
source_urls:
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Recommendation subject
|
|
14
|
+
|
|
15
|
+
## What it is
|
|
16
|
+
|
|
17
|
+
## Best for
|
|
18
|
+
|
|
19
|
+
## Not for
|
|
20
|
+
|
|
21
|
+
## Problem addressed
|
|
22
|
+
|
|
23
|
+
## Observed workflow
|
|
24
|
+
|
|
25
|
+
## Strengths
|
|
26
|
+
|
|
27
|
+
## Limitations
|
|
28
|
+
|
|
29
|
+
## Alternatives
|
|
30
|
+
|
|
31
|
+
## Pricing snapshot
|
|
32
|
+
|
|
33
|
+
Include currency, plan, limits and date. Do not assume the price is current.
|
|
34
|
+
|
|
35
|
+
## Evidence
|
|
36
|
+
|
|
37
|
+
Named sources, tests, screenshots, or user reports. Empty is not publishable.
|
|
38
|
+
|
|
39
|
+
## Disclosure
|
|
40
|
+
|
|
41
|
+
State affiliate, sponsorship, ownership, or other commercial relationship.
|
|
42
|
+
|
|
43
|
+
## Review notes
|
|
44
|
+
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
# PagePack — this run is already one platform (image decks only; not pure x text)
|
|
3
3
|
# Prefer filename: pack.md (or pack-<platform>.md)
|
|
4
4
|
# Create when: user wants carousel/slideshow AND rubric SHIP for this run.
|
|
5
|
+
# Write the Arc line before pages. Do not default Cover → Point → Steps → Recap → CTA.
|
|
5
6
|
---
|
|
6
7
|
status: unused
|
|
7
8
|
id:
|
|
@@ -20,23 +21,30 @@ page_count: 0
|
|
|
20
21
|
- **claim_id:**
|
|
21
22
|
- **language:** en
|
|
22
23
|
|
|
24
|
+
## Arc
|
|
25
|
+
|
|
26
|
+
<!-- One line: the argument that needs page turns. Required before Pages. -->
|
|
27
|
+
<!-- Recipes: cost-mechanism | listicle | mistakes | claim-proof | compare | (named) -->
|
|
28
|
+
|
|
29
|
+
- **one_liner:**
|
|
30
|
+
- **recipe:**
|
|
31
|
+
|
|
23
32
|
## Pages
|
|
24
33
|
|
|
25
|
-
<!-- Each page: role
|
|
34
|
+
<!-- Each page: role is a layout retrieval tag, not sequence position. -->
|
|
35
|
+
<!-- First page is not automatically cover. Text only — no private AST. -->
|
|
26
36
|
|
|
27
37
|
### page 1
|
|
28
38
|
|
|
29
|
-
- **role:**
|
|
39
|
+
- **role:**
|
|
30
40
|
- **slots:**
|
|
31
|
-
-
|
|
32
|
-
- subtitle:
|
|
41
|
+
- text_0:
|
|
33
42
|
|
|
34
43
|
### page 2
|
|
35
44
|
|
|
36
|
-
- **role:**
|
|
45
|
+
- **role:**
|
|
37
46
|
- **slots:**
|
|
38
|
-
-
|
|
39
|
-
- body:
|
|
47
|
+
- text_0:
|
|
40
48
|
|
|
41
49
|
<!-- …repeat through page_count… -->
|
|
42
50
|
|