@easysociable/cli 0.1.8 → 0.1.9
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 +29 -9
- package/dist/easysociable.js +111 -100
- package/dist/easysociable.js.map +1 -1
- package/package.json +2 -2
- package/scripts/engine/migrate-split-vault.py +75 -0
- package/skills/ONBOARDING.md +19 -4
- package/skills/easysociable-content/SKILL.md +25 -9
- package/content-engine/scripts/fixture.test.mjs +0 -24
- package/content-engine/scripts/starter.mjs +0 -58
- package/content-engine/scripts/validate.test.mjs +0 -101
- package/content-engine/scripts/workbench.mjs +0 -140
- package/content-engine/starter/CLAUDE.md +0 -908
- package/content-engine/starter/accounts/README.md +0 -9
- package/content-engine/starter/accounts/_index.md +0 -31
- package/content-engine/starter/accounts/overrides/README.md +0 -3
- package/content-engine/starter/engine.json +0 -23
- package/content-engine/starter/exports/README.md +0 -28
- package/content-engine/starter/hits/README.md +0 -5
- package/content-engine/starter/hits/_index.md +0 -30
- package/content-engine/starter/hits/_template.md +0 -46
- package/content-engine/starter/hits/entries/README.md +0 -3
- package/content-engine/starter/inbox/README.md +0 -9
- package/content-engine/starter/inbox/_index.md +0 -24
- package/content-engine/starter/inbox/entries/README.md +0 -3
- package/content-engine/starter/needs/README.md +0 -38
- package/content-engine/starter/needs/_index.md +0 -31
- package/content-engine/starter/needs/_template.md +0 -24
- package/content-engine/starter/needs/entries/README.md +0 -5
- package/content-engine/starter/platforms/README.md +0 -19
- package/content-engine/starter/platforms/ig.md +0 -69
- package/content-engine/starter/platforms/instagram.md +0 -5
- package/content-engine/starter/platforms/linkedin.md +0 -72
- package/content-engine/starter/platforms/threads.md +0 -69
- package/content-engine/starter/platforms/tiktok.md +0 -71
- package/content-engine/starter/platforms/x.md +0 -78
- package/content-engine/starter/platforms/xiaohongshu.md +0 -19
- package/content-engine/starter/products/README.md +0 -38
- package/content-engine/starter/products/_index.md +0 -25
- package/content-engine/starter/products/_template.md +0 -56
- package/content-engine/starter/products/entries/P-001-easysociable.md +0 -150
- package/content-engine/starter/products/entries/P-002-content-engine.md +0 -136
- package/content-engine/starter/profiles/_index.md +0 -16
- package/content-engine/starter/profiles/default/README.md +0 -17
- package/content-engine/starter/profiles/default/audience.md +0 -38
- package/content-engine/starter/profiles/default/boundaries.md +0 -14
- package/content-engine/starter/profiles/default/expression.md +0 -18
- package/content-engine/starter/profiles/default/handles.md +0 -8
- package/content-engine/starter/profiles/default/keywords.md +0 -31
- package/content-engine/starter/profiles/default/lanes.md +0 -12
- package/content-engine/starter/profiles/default/pillars.md +0 -33
- package/content-engine/starter/profiles/default/stories.md +0 -15
- package/content-engine/starter/profiles/default/voice.md +0 -38
- package/content-engine/starter/published/_index.md +0 -20
- package/content-engine/starter/raw/README.md +0 -4
- package/content-engine/starter/raw/_index.md +0 -12
- package/content-engine/starter/recommendations/README.md +0 -21
- package/content-engine/starter/recommendations/_index.md +0 -21
- package/content-engine/starter/recommendations/_template.md +0 -44
- package/content-engine/starter/runs/README.md +0 -22
- package/content-engine/starter/runs/_index.md +0 -41
- package/content-engine/starter/runs/_template/brief.md +0 -76
- package/content-engine/starter/runs/_template/draft.md +0 -11
- package/content-engine/starter/runs/_template/editor.md +0 -18
- package/content-engine/starter/runs/_template/feedback.md +0 -15
- package/content-engine/starter/runs/_template/idea.md +0 -27
- package/content-engine/starter/runs/_template/pack.md +0 -55
- package/content-engine/starter/runs/_template/packet.md +0 -31
- package/content-engine/starter/runs/_template/rubric.md +0 -19
- package/content-engine/starter/swipe/_index.md +0 -27
- package/content-engine/starter/swipe/_template.md +0 -36
- package/content-engine/starter/topics/README.md +0 -21
- package/content-engine/starter/topics/_index.md +0 -51
- package/content-engine/starter/topics/_template-item.md +0 -106
- package/content-engine/starter/topics/items/README.md +0 -4
- package/content-engine/starter/topics/scoring.md +0 -255
- package/content-engine/starter/wiki/README.md +0 -13
- package/content-engine/starter/wiki/atoms/_index.md +0 -23
- package/content-engine/starter/wiki/atoms/_template.md +0 -31
- package/content-engine/starter/wiki/claims/_index.md +0 -26
- package/content-engine/starter/wiki/claims/_template.md +0 -38
- package/content-engine/starter/workbench/README.md +0 -17
- package/content-engine/workbench/__pycache__/build.cpython-310.pyc +0 -0
- package/content-engine/workbench/build.py +0 -1467
- package/content-engine/workbench/serve.py +0 -53
- package/content-engine/workbench/template.html +0 -2683
- /package/{content-engine/scripts → scripts/engine}/contracts.mjs +0 -0
- /package/{content-engine/scripts → scripts/engine}/export-contracts.mjs +0 -0
- /package/{content-engine → scripts/engine}/fixtures/golden-run-en/draft.md +0 -0
- /package/{content-engine → scripts/engine}/fixtures/golden-run-en/idea.md +0 -0
- /package/{content-engine → scripts/engine}/fixtures/golden-run-en/pack-tiktok.json +0 -0
- /package/{content-engine/scripts → scripts/engine}/validate-export.mjs +0 -0
- /package/{content-engine/scripts → scripts/engine}/validate-pack.mjs +0 -0
- /package/{content-engine/scripts → scripts/engine}/validate-run.mjs +0 -0
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
# Content pillars — profile `default`
|
|
2
|
-
|
|
3
|
-
Agent: map every draft topic to at least one pillar (or user overrides for one post).
|
|
4
|
-
|
|
5
|
-
## Status
|
|
6
|
-
|
|
7
|
-
`active`
|
|
8
|
-
|
|
9
|
-
## Pillars
|
|
10
|
-
|
|
11
|
-
### P1 — (name this pillar)
|
|
12
|
-
|
|
13
|
-
**Job:** (one sentence)
|
|
14
|
-
|
|
15
|
-
Talk about:
|
|
16
|
-
|
|
17
|
-
- (fill)
|
|
18
|
-
|
|
19
|
-
### P2 — (name this pillar)
|
|
20
|
-
|
|
21
|
-
**Job:** (one sentence)
|
|
22
|
-
|
|
23
|
-
Talk about:
|
|
24
|
-
|
|
25
|
-
- (fill)
|
|
26
|
-
|
|
27
|
-
### P3 — (name this pillar)
|
|
28
|
-
|
|
29
|
-
**Job:** (one sentence)
|
|
30
|
-
|
|
31
|
-
Talk about:
|
|
32
|
-
|
|
33
|
-
- (fill)
|
|
@@ -1,15 +0,0 @@
|
|
|
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
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
# Voice — profile `default`
|
|
2
|
-
|
|
3
|
-
**Role:** Who this profile is + how copy should sound.
|
|
4
|
-
**Not:** Topics (`./pillars.md`), platform craft (`../../platforms/*.md`), or readers (`./audience.md`).
|
|
5
|
-
|
|
6
|
-
## Identity (who is speaking)
|
|
7
|
-
|
|
8
|
-
| Field | Value |
|
|
9
|
-
|-------|--------|
|
|
10
|
-
| **Public handle** | (fill) |
|
|
11
|
-
| **Role** | (fill) |
|
|
12
|
-
| **What I build** | (fill) |
|
|
13
|
-
| **Point of view** | (fill) |
|
|
14
|
-
| **Not claiming** | Invented metrics, customers, quotes, or team size |
|
|
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
|
-
|
|
28
|
-
## Persona
|
|
29
|
-
|
|
30
|
-
- (fill)
|
|
31
|
-
- Direct. Concrete nouns. Address the reader as **you**.
|
|
32
|
-
- Do not invent bio facts not listed in Identity.
|
|
33
|
-
|
|
34
|
-
## Do not say
|
|
35
|
-
|
|
36
|
-
- (fill)
|
|
37
|
-
- Fake social proof
|
|
38
|
-
- Empty hype (“game-changer”, “unlock your potential”)
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# Published index
|
|
2
|
-
|
|
3
|
-
**Role:** One row per **shipped post** (one platform URL).
|
|
4
|
-
**Also:** use history for swipe / atom (join on `swipe` / `atoms`). Claim **proposition** evidence still lives in the claim file’s Evidence table.
|
|
5
|
-
|
|
6
|
-
Same **topic** may appear across **multiple runs / multiple published rows**. One **run** → usually **one** published row.
|
|
7
|
-
|
|
8
|
-
## How to use
|
|
9
|
-
|
|
10
|
-
- On ship: add a row; update that run’s `runs/_index` → `published`.
|
|
11
|
-
- Then bump `n`/`win`/`loss` on cited index rows (`CLAUDE.md` § Catalog evidence).
|
|
12
|
-
- Swipe/atom: this table **is** the ledger. Claim: also append the claim file Evidence row (`vs claim`).
|
|
13
|
-
- `result`: `win` | `flat` | `loss` | `unknown`.
|
|
14
|
-
|
|
15
|
-
## Catalog
|
|
16
|
-
|
|
17
|
-
| date | platform | url | run | pillar | swipe | atoms | claim | result | notes |
|
|
18
|
-
|------|----------|-----|-----|--------|-------|-------|-------|--------|-------|
|
|
19
|
-
|
|
20
|
-
<!-- Agent: prefer newest on top -->
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
# Raw index
|
|
2
|
-
|
|
3
|
-
Authoritative source materials. Bodies are files in this folder; this table is the registry.
|
|
4
|
-
|
|
5
|
-
| id | date | capture_id | file | type | source_url | one_liner |
|
|
6
|
-
|----|------|------------|------|------|------------|-----------|
|
|
7
|
-
|
|
8
|
-
## Agent rules
|
|
9
|
-
|
|
10
|
-
- Create a raw **file** + this row when capture has URL, multi-step structure, media, or user marks important
|
|
11
|
-
- `capture_id` must match `inbox/_index` id
|
|
12
|
-
- Do not use raw as finished posts
|
|
@@ -1,21 +0,0 @@
|
|
|
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.
|
|
@@ -1,21 +0,0 @@
|
|
|
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.
|
|
@@ -1,44 +0,0 @@
|
|
|
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
|
-
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
# runs/
|
|
2
|
-
|
|
3
|
-
One folder per **platform run** (“一单”). Same Topic, native rewrite for another network → **another folder**, same `topic_id`.
|
|
4
|
-
|
|
5
|
-
| Path | Role |
|
|
6
|
-
|------|------|
|
|
7
|
-
| `_index.md` | Job queue registry (Approach B scan) |
|
|
8
|
-
| `_template/` | Files copied into each new run |
|
|
9
|
-
| `YYYY-MM-DD-short-slug[-platform]/` | One platform draft |
|
|
10
|
-
|
|
11
|
-
**Agent** creates/updates files and `_index`; user works in chat only.
|
|
12
|
-
|
|
13
|
-
See vault root `CLAUDE.md` § Open a run.
|
|
14
|
-
|
|
15
|
-
## Multi-platform
|
|
16
|
-
|
|
17
|
-
- Multi-select on 开一单 → **N runs**, not N sections in one draft.
|
|
18
|
-
- `idea.md`: `primary_platform` = `platforms` = this run only.
|
|
19
|
-
- Before brief/draft: **read** `platforms/<platform>.md` (see `platforms/README.md`).
|
|
20
|
-
- `draft.md`: this platform’s copy only, following that craft file.
|
|
21
|
-
- Pack: `pack.md` (or `pack-<platform>.md`); exports → `exports/<slug>/`.
|
|
22
|
-
- Each ship → one `published/_index` row for that `run_id`.
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Runs index (production jobs)
|
|
2
|
-
|
|
3
|
-
One row = one **platform run** (one folder). Same Topic on multiple platforms = **multiple rows** sharing `topic_id` — **not** one folder with many platform variants.
|
|
4
|
-
|
|
5
|
-
Newest on top. Agent updates on open / status change / export / kill.
|
|
6
|
-
|
|
7
|
-
| run_id | path | date | status | account | profile | primary_platform | platforms | topic_id | pillar | one_liner | pack | export | notes |
|
|
8
|
-
| ------ | ---- | ---- | ------ | ------- | ------- | ---------------- | --------- | -------- | ------ | --------- | ---- | ------ | ----- |
|
|
9
|
-
|
|
10
|
-
## Status values
|
|
11
|
-
|
|
12
|
-
| status | Meaning |
|
|
13
|
-
| ------------ | ------------------------------------------------ |
|
|
14
|
-
| `open` | Folder created; brief not done |
|
|
15
|
-
| `brief` | Brief wait / in progress |
|
|
16
|
-
| `draft` | Drafting / editing |
|
|
17
|
-
| `scored` | Rubric done; ship or hold |
|
|
18
|
-
| `ready` | SHIP — copy ready to post (and/or pack ready) |
|
|
19
|
-
| `published` | This platform shipped (or user declared done) |
|
|
20
|
-
| `hold` | Rubric hold / blocked |
|
|
21
|
-
| `killed` | Abandoned |
|
|
22
|
-
| `superseded` | Replaced by another run |
|
|
23
|
-
| `partial` | **Legacy** — do not use for new runs |
|
|
24
|
-
|
|
25
|
-
## Columns
|
|
26
|
-
|
|
27
|
-
| Column | Meaning |
|
|
28
|
-
|--------|---------|
|
|
29
|
-
| `path` | Wikilink to run folder |
|
|
30
|
-
| `primary_platform` | **This** run’s platform (craft + publish target) |
|
|
31
|
-
| `platforms` | Must equal `primary_platform` (single value; index compat) |
|
|
32
|
-
| `pack` | `no` \| `yes` (image pack written for this run) |
|
|
33
|
-
| `export` | `no` \| `yes` (files under `exports/<slug>/`) |
|
|
34
|
-
| `topic_id` | `T-…` or none (siblings share the same id) |
|
|
35
|
-
|
|
36
|
-
## Rules
|
|
37
|
-
|
|
38
|
-
- On **开一单**: **ask platform(s)** if unset; **one folder + one row per platform**; `status=open`.
|
|
39
|
-
- On status change: update this table (source of truth for queue scan).
|
|
40
|
-
- On ship: row in **`published/_index`** + here → `published`.
|
|
41
|
-
- Do not store draft body or image binaries here.
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: BRIEF_WAIT
|
|
3
|
-
gate_score: 0
|
|
4
|
-
gate_pass: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Brief
|
|
8
|
-
|
|
9
|
-
## Thesis
|
|
10
|
-
|
|
11
|
-
One sentence a stranger can understand without any product context.
|
|
12
|
-
|
|
13
|
-
(fill)
|
|
14
|
-
|
|
15
|
-
## For whom → what changes
|
|
16
|
-
|
|
17
|
-
**Reader:** (who specifically has this problem)
|
|
18
|
-
|
|
19
|
-
**They currently believe:** (the false belief or stuck assumption)
|
|
20
|
-
|
|
21
|
-
**After reading:** (what they should believe, do, or stop doing)
|
|
22
|
-
|
|
23
|
-
## Evidence
|
|
24
|
-
|
|
25
|
-
**What we have:** (named sources — Need ids, product facts, mechanisms, cases)
|
|
26
|
-
|
|
27
|
-
**Evidence type:** data | example | case | mechanism | expert | observation
|
|
28
|
-
|
|
29
|
-
**Quality:** weak | moderate | strong
|
|
30
|
-
|
|
31
|
-
**What we cannot prove:** (be honest — no invented outcomes)
|
|
32
|
-
|
|
33
|
-
## Platform and expression
|
|
34
|
-
|
|
35
|
-
- **Platform:** x | linkedin | ig | tiktok
|
|
36
|
-
- **Form:** short post | thread | carousel | …
|
|
37
|
-
- **Hook:** (first line or opening move)
|
|
38
|
-
- **Structure:** (the argument flow in one line, e.g. hook → false belief → mechanism → action)
|
|
39
|
-
|
|
40
|
-
## Boundaries
|
|
41
|
-
|
|
42
|
-
- **Must include:** (non-negotiable claims or framing)
|
|
43
|
-
- **Must avoid:** (hard bans for this draft; merge `profiles/<id>/boundaries.md` + voice Do not say)
|
|
44
|
-
|
|
45
|
-
---
|
|
46
|
-
|
|
47
|
-
## Appendix (machine / handoff — not the reading surface)
|
|
48
|
-
|
|
49
|
-
### Inherited from Topic
|
|
50
|
-
|
|
51
|
-
- context:
|
|
52
|
-
- audience:
|
|
53
|
-
- conflict:
|
|
54
|
-
- insight:
|
|
55
|
-
- outcome:
|
|
56
|
-
- evidence:
|
|
57
|
-
|
|
58
|
-
### Selection
|
|
59
|
-
|
|
60
|
-
- swipe: id | none — why
|
|
61
|
-
- atoms: hook:… | cta:… | none — why
|
|
62
|
-
- claim: id | none — why
|
|
63
|
-
|
|
64
|
-
### Quality gate
|
|
65
|
-
|
|
66
|
-
| # | Gate | Score 1–5 | Note |
|
|
67
|
-
|---|------|-----------|------|
|
|
68
|
-
| 1 | Thesis clarity | | |
|
|
69
|
-
| 2 | Evidence strength | | |
|
|
70
|
-
| 3 | Angle originality | | |
|
|
71
|
-
| 4 | Structure coherence | | |
|
|
72
|
-
| 5 | Outcome specificity | | |
|
|
73
|
-
| 6 | Tension preservation | | |
|
|
74
|
-
|
|
75
|
-
**Total:** /30
|
|
76
|
-
**Gate:** PASS (≥24) | REVISE (20–23) | STOP (<20)
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: empty
|
|
3
|
-
---
|
|
4
|
-
|
|
5
|
-
# Feedback (after publish)
|
|
6
|
-
|
|
7
|
-
This run is one platform. One URL → one `published/_index` row.
|
|
8
|
-
|
|
9
|
-
## This platform
|
|
10
|
-
|
|
11
|
-
- **url:**
|
|
12
|
-
- **result:** win | flat | loss | unknown
|
|
13
|
-
- **metrics:** (user-provided only)
|
|
14
|
-
- **vs claim:** support | contradict | unclear | n/a
|
|
15
|
-
- **notes:**
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
run_id: RUN-YYYYMMDD-slug
|
|
3
|
-
status: RUN_OPEN
|
|
4
|
-
created: YYYY-MM-DD
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Idea
|
|
8
|
-
|
|
9
|
-
- **one_liner:**
|
|
10
|
-
- **account:** your-handle
|
|
11
|
-
- **profile:** default
|
|
12
|
-
- **pillar:** P1 | P2 | P3
|
|
13
|
-
- **primary_platform:** x
|
|
14
|
-
- **platforms:** x
|
|
15
|
-
<!-- must equal primary_platform (one platform per run) -->
|
|
16
|
-
- **topic_id:** none | T-…
|
|
17
|
-
- **capture_ids:** none | C-…
|
|
18
|
-
- **swipe_id:** none | S1
|
|
19
|
-
- **atoms:** none | hook:A-… cta:A-…
|
|
20
|
-
- **claim_id:** none | C-…
|
|
21
|
-
- **hypothesis:** none | (optional one-off test; prefer claim_id when in catalog)
|
|
22
|
-
|
|
23
|
-
## Platform (this run)
|
|
24
|
-
|
|
25
|
-
| platform | copy | images (pack) | publish status |
|
|
26
|
-
|----------|------|---------------|----------------|
|
|
27
|
-
| x | yes | no | pending |
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# PagePack — this run is already one platform (image decks only; not pure x text)
|
|
3
|
-
# Prefer filename: pack.md (or pack-<platform>.md)
|
|
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.
|
|
6
|
-
---
|
|
7
|
-
status: unused
|
|
8
|
-
id:
|
|
9
|
-
platform: linkedin
|
|
10
|
-
deck_hint:
|
|
11
|
-
page_count: 0
|
|
12
|
-
---
|
|
13
|
-
|
|
14
|
-
# Pack
|
|
15
|
-
|
|
16
|
-
## Meta
|
|
17
|
-
|
|
18
|
-
- **run_id:**
|
|
19
|
-
- **pillar:**
|
|
20
|
-
- **swipe_id:**
|
|
21
|
-
- **claim_id:**
|
|
22
|
-
- **language:** en
|
|
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
|
-
|
|
32
|
-
## Pages
|
|
33
|
-
|
|
34
|
-
<!-- Each page: role is a layout retrieval tag, not sequence position. -->
|
|
35
|
-
<!-- First page is not automatically cover. Text only — no private AST. -->
|
|
36
|
-
|
|
37
|
-
### page 1
|
|
38
|
-
|
|
39
|
-
- **role:**
|
|
40
|
-
- **slots:**
|
|
41
|
-
- text_0:
|
|
42
|
-
|
|
43
|
-
### page 2
|
|
44
|
-
|
|
45
|
-
- **role:**
|
|
46
|
-
- **slots:**
|
|
47
|
-
- text_0:
|
|
48
|
-
|
|
49
|
-
<!-- …repeat through page_count… -->
|
|
50
|
-
|
|
51
|
-
## Render
|
|
52
|
-
|
|
53
|
-
- **job_id:**
|
|
54
|
-
- **export_path:** exports/<run-slug>/<platform>/
|
|
55
|
-
- **status:** not_requested | queued | done | failed
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
# Writer context packet — keep short (~400–900 tokens of substance)
|
|
3
|
-
# Filled by Agent from pillars slice + platforms rules + one swipe + this brief only
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Packet
|
|
7
|
-
|
|
8
|
-
## Profile / account
|
|
9
|
-
|
|
10
|
-
- account:
|
|
11
|
-
- profile:
|
|
12
|
-
|
|
13
|
-
## Pillar slice
|
|
14
|
-
|
|
15
|
-
## Voice (resolved)
|
|
16
|
-
|
|
17
|
-
## Audience (profile audience — core + this platform)
|
|
18
|
-
|
|
19
|
-
## Craft notes (from platforms/<platform>.md — required; summarize rules used)
|
|
20
|
-
|
|
21
|
-
## Swipe beats (if any)
|
|
22
|
-
|
|
23
|
-
## Brief essentials
|
|
24
|
-
|
|
25
|
-
## Hard bans
|
|
26
|
-
|
|
27
|
-
## Boundaries (must_avoid — from boundaries.md + voice Do not say)
|
|
28
|
-
|
|
29
|
-
## Expression likes / dislikes
|
|
30
|
-
|
|
31
|
-
## Story inventory (cite or none)
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
status: SCORED
|
|
3
|
-
total: 0
|
|
4
|
-
ship: false
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Rubric (max 12, ship if ≥ 8)
|
|
8
|
-
|
|
9
|
-
| # | Criterion | Score 0–2 | Note |
|
|
10
|
-
|---|-----------|-----------|------|
|
|
11
|
-
| 1 | Stop-scroll hook | | |
|
|
12
|
-
| 2 | Concrete (not empty wisdom) | | |
|
|
13
|
-
| 3 | Save / act potential | | |
|
|
14
|
-
| 4 | Platform-native (this run) | | |
|
|
15
|
-
| 5 | Non-slop | | |
|
|
16
|
-
| 6 | Fits pillar | | |
|
|
17
|
-
|
|
18
|
-
**Total:** /12
|
|
19
|
-
**Gate:** SHIP (≥8) | HOLD (<8)
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
# Swipe index (structure catalog)
|
|
2
|
-
|
|
3
|
-
**Role:** Full-post beat order. Global library; scope with **`profiles`** + **`platforms`** columns.
|
|
4
|
-
|
|
5
|
-
**Selection:** read this table first → filter platform + profile → drop `dead` → prefer `working` then higher `win/n` → open 0–1 body. **`none` allowed** (declare why).
|
|
6
|
-
|
|
7
|
-
## Status (hit-rate, our posts — not “is this true”)
|
|
8
|
-
|
|
9
|
-
| status | Meaning |
|
|
10
|
-
|--------|---------|
|
|
11
|
-
| `trial` | In catalog; not enough of **our** published uses |
|
|
12
|
-
| `working` | Our reuse is helping; prefer in selection |
|
|
13
|
-
| `dead` | Never auto-select |
|
|
14
|
-
|
|
15
|
-
`n` / `win` / `loss` = our `published.result` cache. `flat` and `unknown` bump `n` only.
|
|
16
|
-
**No Evidence table in swipe files.** Use history = `published/_index` (column `swipe`).
|
|
17
|
-
|
|
18
|
-
## Ingest
|
|
19
|
-
|
|
20
|
-
See `CLAUDE.md` § Library ingest. No silent seed from runs. Unpublished runs never enter.
|
|
21
|
-
|
|
22
|
-
## Catalog
|
|
23
|
-
|
|
24
|
-
| id | file | platforms | profiles | form | beats_or_pages | status | n | win | loss | one_liner | source |
|
|
25
|
-
|----|------|-----------|----------|------|----------------|--------|---|-----|------|-----------|--------|
|
|
26
|
-
|
|
27
|
-
`profiles: *` = available to all profiles.
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
id: S-NEW
|
|
3
|
-
platforms: [x]
|
|
4
|
-
profiles: ["*"] # profile ids or "*"
|
|
5
|
-
form: short_post # short_post | thread | carousel | slideshow
|
|
6
|
-
beats_or_pages: 0
|
|
7
|
-
status: trial # trial | working | dead
|
|
8
|
-
tags: []
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
# Title
|
|
12
|
-
|
|
13
|
-
## When to use
|
|
14
|
-
|
|
15
|
-
- …
|
|
16
|
-
|
|
17
|
-
## When to avoid
|
|
18
|
-
|
|
19
|
-
- …
|
|
20
|
-
|
|
21
|
-
## Beats / pages (argument structure only — no full copy)
|
|
22
|
-
|
|
23
|
-
<!-- Not Cover → Point → Steps → Recap → CTA. Those are catalog family names. -->
|
|
24
|
-
|
|
25
|
-
1. …
|
|
26
|
-
2. …
|
|
27
|
-
|
|
28
|
-
## Constraints
|
|
29
|
-
|
|
30
|
-
- …
|
|
31
|
-
|
|
32
|
-
## Source
|
|
33
|
-
|
|
34
|
-
- capture / raw links if any
|
|
35
|
-
|
|
36
|
-
<!-- Use history: published/_index column swipe. Do not add ## Evidence here. -->
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# topics/
|
|
2
|
-
|
|
3
|
-
Topic system: **what to produce next**, after an explicit need, offer, review subject, or profile thesis has been judged as an opportunity.
|
|
4
|
-
|
|
5
|
-
| Path | Role |
|
|
6
|
-
|------|------|
|
|
7
|
-
| `_index.md` | Queue registry (one row per topic + `item` link + source engagement) |
|
|
8
|
-
| `items/T-*.md` | One file per opportunity: decision summary + readable judgment, then Score/Trace/Constraints appendix |
|
|
9
|
-
| `scoring.md` | Opportunity dimensions and dual gate |
|
|
10
|
-
| `_template-item.md` | Template for new items |
|
|
11
|
-
|
|
12
|
-
Flow:
|
|
13
|
-
|
|
14
|
-
```text
|
|
15
|
-
explicit input → editorial judgment
|
|
16
|
-
→ `_index` + `items/T-…` (opportunity 5-dim)
|
|
17
|
-
→ ready only if opp≥7.5 and audience≥6
|
|
18
|
-
→ user opens run → `status=promoted`
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
The item file is a **decision card**. A content owner who skips YAML and the appendix must still answer: what problem we address, who it serves, what we will say, why now, what should change, and whether to open a run. Five-dim scores stay in the appendix as a gate, not as the reading surface.
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
# Topics index (production queue)
|
|
2
|
-
|
|
3
|
-
One row = one topic. Full scorecard in **`item`** file.
|
|
4
|
-
Same topic on multiple platforms = **one topic row**; open **N runs** sharing `topic_id`.
|
|
5
|
-
Statuses live here and in the item—**not** folder names.
|
|
6
|
-
|
|
7
|
-
Newest on top.
|
|
8
|
-
|
|
9
|
-
| id | date | opp | aud | status | purpose | scout | platform | pillar | lane | generation_mode | one_liner | item | source_type | src_url | src_handle | src_likes | src_replies | src_bookmarks | engagement_at | capture_id | need_ids | product_ids | product_fit | recommendation_ids | run |
|
|
10
|
-
| -- | ---- | --- | --- | ------ | ------- | ----- | -------- | ------ | --------- | ---- | ----------- | ------- | ---------- | --------- | ----------- | ------------- | ------------- | ---------- | --- | --- | --- | --- |
|
|
11
|
-
|
|
12
|
-
## Status values
|
|
13
|
-
|
|
14
|
-
| status | Meaning |
|
|
15
|
-
|--------|---------|
|
|
16
|
-
| `draft` | Created, not fully scored |
|
|
17
|
-
| `scored` | Has scores; not yet triaged |
|
|
18
|
-
| `ready` | opp ≥ 7.5 **and** aud ≥ 6 (dual gate) |
|
|
19
|
-
| `backlog` | opp/aud mid — re-angle, research, or wait |
|
|
20
|
-
| `parked` | opp < 6 or aud < 5 or hard-filter fail |
|
|
21
|
-
| `library` | Scout purpose library (structure later; not produce-ready) |
|
|
22
|
-
| `promoted` | Opened as a run (`run` column set) |
|
|
23
|
-
| `killed` | User rejected |
|
|
24
|
-
|
|
25
|
-
## Columns (key)
|
|
26
|
-
|
|
27
|
-
| Column | Meaning |
|
|
28
|
-
|--------|---------|
|
|
29
|
-
| `opp` | Opportunity score (weighted 5-dim: context/audience/conflict/insight/evidence) |
|
|
30
|
-
| `aud` | Audience dimension score (hard floor ≥ 6 for ready) |
|
|
31
|
-
| `item` | Wikilink to `topics/items/T-….md` |
|
|
32
|
-
| `lane` | Publishing lane: teach, build, review, compare, offer, or profile-defined |
|
|
33
|
-
| `generation_mode` | How the Topic was formed; see `topics/_template-item.md` |
|
|
34
|
-
| `source_type` | `inbox` \| `user` \| `need` \| `product` \| `recommendation` |
|
|
35
|
-
| `src_*` | **Source post** engagement snapshot — not your publish metrics |
|
|
36
|
-
| `capture_id` | Set only if linked to inbox `C-…`. **Never** put `N-` here; needs live on the item as `need_ids` |
|
|
37
|
-
| `need_ids` | Audience evidence cited by the Topic; demand evidence, not product proof |
|
|
38
|
-
| `product_ids` | Optional product facts cited by the Topic |
|
|
39
|
-
| `product_fit` | `direct` \| `adjacent` \| `none`; editorial relevance only |
|
|
40
|
-
| `recommendation_ids` | Optional third-party subjects used for review or comparison |
|
|
41
|
-
| `run` | One or more `RUN-…` ids after open (comma-separated if multi-platform siblings) |
|
|
42
|
-
|
|
43
|
-
## Rules
|
|
44
|
-
|
|
45
|
-
- Max **5** new **`produce`** topics per promotion session
|
|
46
|
-
- Topics require an explicit user, need, product, recommendation, or profile input.
|
|
47
|
-
- Scout first; never `ready` on high `src_*` or opp_score alone (need audience ≥ 6 too)
|
|
48
|
-
- Scoring: `topics/scoring.md` (opportunity dimensions)
|
|
49
|
-
- Product fit is optional and never replaces Need evidence or opportunity scoring.
|
|
50
|
-
- `记一下` + URL: **inbox first**, not topics, unless user also asks to score as topic
|
|
51
|
-
- On 开一单: append all new run ids to `run`
|