@easysociable/cli 0.1.8 → 0.1.10

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.
Files changed (93) hide show
  1. package/README.md +30 -9
  2. package/dist/easysociable.js +234 -98
  3. package/dist/easysociable.js.map +1 -1
  4. package/package.json +2 -2
  5. package/scripts/engine/migrate-split-vault.py +75 -0
  6. package/skills/ONBOARDING.md +19 -4
  7. package/skills/easysociable-content/SKILL.md +25 -9
  8. package/content-engine/scripts/fixture.test.mjs +0 -24
  9. package/content-engine/scripts/starter.mjs +0 -58
  10. package/content-engine/scripts/validate.test.mjs +0 -101
  11. package/content-engine/scripts/workbench.mjs +0 -140
  12. package/content-engine/starter/CLAUDE.md +0 -908
  13. package/content-engine/starter/accounts/README.md +0 -9
  14. package/content-engine/starter/accounts/_index.md +0 -31
  15. package/content-engine/starter/accounts/overrides/README.md +0 -3
  16. package/content-engine/starter/engine.json +0 -23
  17. package/content-engine/starter/exports/README.md +0 -28
  18. package/content-engine/starter/hits/README.md +0 -5
  19. package/content-engine/starter/hits/_index.md +0 -30
  20. package/content-engine/starter/hits/_template.md +0 -46
  21. package/content-engine/starter/hits/entries/README.md +0 -3
  22. package/content-engine/starter/inbox/README.md +0 -9
  23. package/content-engine/starter/inbox/_index.md +0 -24
  24. package/content-engine/starter/inbox/entries/README.md +0 -3
  25. package/content-engine/starter/needs/README.md +0 -38
  26. package/content-engine/starter/needs/_index.md +0 -31
  27. package/content-engine/starter/needs/_template.md +0 -24
  28. package/content-engine/starter/needs/entries/README.md +0 -5
  29. package/content-engine/starter/platforms/README.md +0 -19
  30. package/content-engine/starter/platforms/ig.md +0 -69
  31. package/content-engine/starter/platforms/instagram.md +0 -5
  32. package/content-engine/starter/platforms/linkedin.md +0 -72
  33. package/content-engine/starter/platforms/threads.md +0 -69
  34. package/content-engine/starter/platforms/tiktok.md +0 -71
  35. package/content-engine/starter/platforms/x.md +0 -78
  36. package/content-engine/starter/platforms/xiaohongshu.md +0 -19
  37. package/content-engine/starter/products/README.md +0 -38
  38. package/content-engine/starter/products/_index.md +0 -25
  39. package/content-engine/starter/products/_template.md +0 -56
  40. package/content-engine/starter/products/entries/P-001-easysociable.md +0 -150
  41. package/content-engine/starter/products/entries/P-002-content-engine.md +0 -136
  42. package/content-engine/starter/profiles/_index.md +0 -16
  43. package/content-engine/starter/profiles/default/README.md +0 -17
  44. package/content-engine/starter/profiles/default/audience.md +0 -38
  45. package/content-engine/starter/profiles/default/boundaries.md +0 -14
  46. package/content-engine/starter/profiles/default/expression.md +0 -18
  47. package/content-engine/starter/profiles/default/handles.md +0 -8
  48. package/content-engine/starter/profiles/default/keywords.md +0 -31
  49. package/content-engine/starter/profiles/default/lanes.md +0 -12
  50. package/content-engine/starter/profiles/default/pillars.md +0 -33
  51. package/content-engine/starter/profiles/default/stories.md +0 -15
  52. package/content-engine/starter/profiles/default/voice.md +0 -38
  53. package/content-engine/starter/published/_index.md +0 -20
  54. package/content-engine/starter/raw/README.md +0 -4
  55. package/content-engine/starter/raw/_index.md +0 -12
  56. package/content-engine/starter/recommendations/README.md +0 -21
  57. package/content-engine/starter/recommendations/_index.md +0 -21
  58. package/content-engine/starter/recommendations/_template.md +0 -44
  59. package/content-engine/starter/runs/README.md +0 -22
  60. package/content-engine/starter/runs/_index.md +0 -41
  61. package/content-engine/starter/runs/_template/brief.md +0 -76
  62. package/content-engine/starter/runs/_template/draft.md +0 -11
  63. package/content-engine/starter/runs/_template/editor.md +0 -18
  64. package/content-engine/starter/runs/_template/feedback.md +0 -15
  65. package/content-engine/starter/runs/_template/idea.md +0 -27
  66. package/content-engine/starter/runs/_template/pack.md +0 -55
  67. package/content-engine/starter/runs/_template/packet.md +0 -31
  68. package/content-engine/starter/runs/_template/rubric.md +0 -19
  69. package/content-engine/starter/swipe/_index.md +0 -27
  70. package/content-engine/starter/swipe/_template.md +0 -36
  71. package/content-engine/starter/topics/README.md +0 -21
  72. package/content-engine/starter/topics/_index.md +0 -51
  73. package/content-engine/starter/topics/_template-item.md +0 -106
  74. package/content-engine/starter/topics/items/README.md +0 -4
  75. package/content-engine/starter/topics/scoring.md +0 -255
  76. package/content-engine/starter/wiki/README.md +0 -13
  77. package/content-engine/starter/wiki/atoms/_index.md +0 -23
  78. package/content-engine/starter/wiki/atoms/_template.md +0 -31
  79. package/content-engine/starter/wiki/claims/_index.md +0 -26
  80. package/content-engine/starter/wiki/claims/_template.md +0 -38
  81. package/content-engine/starter/workbench/README.md +0 -17
  82. package/content-engine/workbench/__pycache__/build.cpython-310.pyc +0 -0
  83. package/content-engine/workbench/build.py +0 -1467
  84. package/content-engine/workbench/serve.py +0 -53
  85. package/content-engine/workbench/template.html +0 -2683
  86. /package/{content-engine/scripts → scripts/engine}/contracts.mjs +0 -0
  87. /package/{content-engine/scripts → scripts/engine}/export-contracts.mjs +0 -0
  88. /package/{content-engine → scripts/engine}/fixtures/golden-run-en/draft.md +0 -0
  89. /package/{content-engine → scripts/engine}/fixtures/golden-run-en/idea.md +0 -0
  90. /package/{content-engine → scripts/engine}/fixtures/golden-run-en/pack-tiktok.json +0 -0
  91. /package/{content-engine/scripts → scripts/engine}/validate-export.mjs +0 -0
  92. /package/{content-engine/scripts → scripts/engine}/validate-pack.mjs +0 -0
  93. /package/{content-engine/scripts → scripts/engine}/validate-run.mjs +0 -0
@@ -1,78 +0,0 @@
1
- # Platform: X (Twitter)
2
-
3
- **Scope:** How to *write* for X — length, rhythm, quality bars.
4
- **Not in this file:** Who you are, product story, pillars, voice, audience.
5
- Those live under `profiles/<id>/` (via account → profile resolve).
6
- **Pixels / canvas:** Optional; if images, EasySociable `PLATFORM_SPECS` for **x** (often wide ~1200×675 or `1:1` for multi-image).
7
-
8
- Agent: before drafting any X post, read this file for craft. For topics/tone/readers, use resolved profile files.
9
-
10
- ---
11
-
12
- ## Defaults
13
-
14
- - Language: English (unless user asks otherwise)
15
- - Default unit: **1 short post** (not a thread), unless user asks for a thread
16
- - Assume timeline scroll: **first line** does most of the work
17
- - Success for easysociable-builder: **qualified replies / DMs**, not raw impressions
18
- - Pack: **optional**. Text-first; add carousel/images when showing the visual production layer
19
-
20
- ## Length & shape
21
-
22
- | Form | Guidance |
23
- |------|----------|
24
- | Single post | Prefer **1–3 short sentences** or tight line breaks. Rarely fill the full character limit. |
25
- | Thread | Only if user asks. Tweet 1 = hook only; each next tweet = one idea; end without a summary paragraph that restates everything. |
26
- | Reply | Add information or a precise question. Avoid “Great point!” / empty agreement. |
27
- | Media | Optional. If used, text should still stand alone if the image fails. Carousel images = proof of system, not the default body. |
28
-
29
- ## Hooks (mechanics only — not your brand story)
30
-
31
- A strong first line usually does **one** of:
32
-
33
- - Names a **concrete mistake** or false belief
34
- - States a **sharp contrast** (X vs Y)
35
- - Opens a **gap** the rest of the post closes
36
- - Gives a **specific** observation (not “in today’s world…”)
37
-
38
- Avoid first lines that only announce a topic list (“Here are 3 tips to…”).
39
-
40
- ## Craft rules
41
-
42
- 1. **One idea per post** (or per thread tweet).
43
- 2. Prefer concrete nouns and verbs over abstract “value / leverage / unlock”.
44
- 3. Cut filler and restatements. No closing that only summarizes what was already said.
45
- 4. Line breaks are for rhythm, not for fake drama on every word.
46
- 5. Questions: use when you want replies; make them answerable, not vague (“thoughts?”).
47
- 6. Links: prefer zero or one; if needed, put after the point lands — not as the whole post.
48
- 7. Optimize for **classifiable takes** and conversation — authority/signal, not soft lifestyle chatter (that’s closer to Threads).
49
- 8. EasySociable only when earned; frame as **visual production layer**, never as full content OS.
50
-
51
- ## Anti-slop (X)
52
-
53
- Do **not** default to:
54
-
55
- - “In a world where…” / “Here’s the thing:” / “Let’s dive in”
56
- - “It’s not X, it’s Y” as empty cadence with no substance
57
- - Engagement bait with no point (“Who’s still awake?” / “Like if you agree”)
58
- - Wall of hashtags
59
- - Corporate intern tone or fake guru certainty without a claim the user owns
60
- - Comment-gate lead magnets (“Comment SLIDES”) as the primary CTA
61
- - **RIP Canva** / “AI replaced your designer” as the main hook
62
- - Empty praise replies when engaging others’ posts
63
-
64
- ## Quality self-check (before showing draft to user)
65
-
66
- - [ ] First line works without the rest?
67
- - [ ] Would a stranger understand the claim in one read?
68
- - [ ] Any sentence pure filler? Delete it.
69
- - [ ] Does this match **pillars.md** (topic allowed), not only “sounds like a tweet”?
70
- - [ ] Would the right ICP reply “we have this problem” / ask how — or only react with emoji?
71
- - [ ] No invented metrics, customers, or results?
72
- - [ ] If media: still makes sense as text-only?
73
-
74
- ## Out of scope here
75
-
76
- - Carousel / slideshow page structure → run `pack` + EasySociable skills; see also `linkedin.md` / `ig.md` / `tiktok.md` for visual-native networks
77
- - Learned strategies → `wiki/claims/`; techniques → `wiki/atoms/`
78
- - Multi-platform native rules → other `platforms/*.md` files (do **not** paste X copy into Threads/LI/IG/TT unchanged)
@@ -1,19 +0,0 @@
1
- # Platform: Xiaohongshu (小红书)
2
-
3
- **Scope:** How to *write* for Xiaohongshu notes.
4
- **Not in this file:** Who you are, pillars, voice, audience.
5
-
6
- ## Defaults
7
-
8
- - Language: follow the account; many notes mix 中文 body + English product names
9
- - Default unit: **single image note** in V1 (slideshow not a Content Pack route yet)
10
- - Pack: **no** for V1 — hand off to **easysociable-template** fill-slots
11
- - Canvas: often **3:4 @ 1080×1440** — see Template `PLATFORM_SPECS`
12
-
13
- ## Craft
14
-
15
- - Cover must stop the thumb; one idea per note
16
- - Caption: concrete, saveable, not empty lifestyle filler
17
- - Do not invent personal metrics or “爆款” proof
18
-
19
- Missing more specific house rules → stop and ask; do not invent craft.
@@ -1,38 +0,0 @@
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.
@@ -1,25 +0,0 @@
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-002 | Content Engine | active | AI-native creators and small content teams building repeatable content workflows | free local install; hosted features not included | 2026-09-16 | products/entries/P-002-content-engine.md |
9
- | P-001 | EasySociable | active | creators and teams producing branded multi-page social visuals | see entry | 2026-09-04 | products/entries/P-001-easysociable.md |
10
-
11
- ## Status values
12
-
13
- | status | Meaning |
14
- |--------|---------|
15
- | `draft` | Being defined; do not use for product claims |
16
- | `active` | Current offer; may be cited by Topics and Runs |
17
- | `retired` | No longer offered; retained for historical references |
18
-
19
- ## Agent rules
20
-
21
- - Read the product entry before making a product claim.
22
- - `price` is a lookup hint only; use the dated entry for exact pricing and
23
- entitlements.
24
- - A Topic may cite `product_ids: none` even when the account has active
25
- products.
@@ -1,56 +0,0 @@
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
-
@@ -1,150 +0,0 @@
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`.
@@ -1,136 +0,0 @@
1
- ---
2
- id: P-002
3
- name: Content Engine
4
- status: active
5
- effective_from: 2026-09-16
6
- source_of_truth:
7
- - apps/cli/README.md
8
- - apps/cli/package.json
9
- - apps/cli/content-engine/starter/CLAUDE.md
10
- - apps/cli/content-engine/starter/engine.json
11
- ---
12
-
13
- # Content Engine
14
-
15
- ## Product promise
16
-
17
- Give AI-native creators and small content teams a local, repeatable workflow
18
- from audience signals to topics, briefs, drafts, review, feedback, and
19
- publishable content.
20
-
21
- ## What it is
22
-
23
- Content Engine is a local-first content system installed and operated through
24
- the `easysociable` command-line tool. It provides a structured local vault,
25
- profile and audience context, needs, topics, product facts, drafts, runs,
26
- feedback, and a workbench for inspecting the engine.
27
-
28
- It does not require Obsidian. The engine can be initialized and served from a
29
- workspace directory.
30
-
31
- ## Best for
32
-
33
- - AI-native creators building a repeatable publishing workflow.
34
- - Agency-of-one operators and small content teams managing recurring content
35
- decisions and review.
36
- - Users who want local files and Agent-assisted workflows instead of a
37
- browser-only content writing assistant.
38
-
39
- ## Not for
40
-
41
- - Users looking for guaranteed reach, engagement, conversions, or virality.
42
- - Users who want an AI model to invent their audience, point of view, proof,
43
- or customer results.
44
- - Users who want a hosted LLM or automatic social-account publishing.
45
- - Users who only want one prompt or one generated post without a repeatable
46
- workflow.
47
-
48
- ## Problem
49
-
50
- AI makes drafting easier, but a blank prompt does not preserve the audience,
51
- point of view, editorial judgment, review standards, or feedback from the last
52
- piece. Content Engine turns those decisions into explicit local objects that
53
- an Agent can use again.
54
-
55
- ## Mechanism
56
-
57
- - Local profile, audience, voice, boundaries, and pillar files provide durable
58
- context.
59
- - Needs and source material become evaluated Topics rather than immediate
60
- drafts.
61
- - Brief, draft, editor, rubric, run, and feedback stages make review and
62
- publishing decisions explicit.
63
- - Product and recommendation libraries keep owned-offer facts separate from
64
- audience demand and third-party research.
65
- - The CLI can initialize, validate, build, serve, and detect local engines.
66
-
67
- ## Installation
68
-
69
- The CLI and local Content Engine are free to install:
70
-
71
- ```bash
72
- curl -fsSL https://easysociable.com/install.sh | bash
73
- easysociable install --skills content,template,slideshow --yes
74
- easysociable engine init --root /workspace --yes
75
- ```
76
-
77
- The installer requires Node.js 20 or newer. The Content Engine workbench also
78
- requires `python3`. The default CLI skill set currently includes Template and
79
- Slideshow; the `content` skill is enabled explicitly above.
80
-
81
- ## Pricing and entitlements
82
-
83
- Content Engine and its CLI installation path are free to install. This entry
84
- does not claim paid hosted features, managed storage, or a hosted LLM.
85
-
86
- ## Proof
87
-
88
- No customer proof, adoption metrics, or performance improvements are recorded.
89
-
90
- ## Boundaries
91
-
92
- - Content Engine owns local content knowledge, editorial workflow, and
93
- production tracking.
94
- - EasySociable is a separate visual production layer for branded templates,
95
- slideshow runs, Studio review, and PNG download.
96
- - The Agent remains responsible for reasoning, content judgment, and supplied
97
- evidence.
98
- - The system does not guarantee that generated content is correct, useful, or
99
- successful.
100
-
101
- ## Claims
102
-
103
- ### Safe to say
104
-
105
- - Install the CLI from the public installer or npm package.
106
- - Initialize a local Content Engine with `easysociable engine init`.
107
- - Use local files to preserve profile, audience, needs, topics, briefs, and
108
- feedback.
109
- - Validate and serve the engine through CLI commands.
110
-
111
- ### Say carefully
112
-
113
- - “One-command install” refers to installing the CLI; enabling the Content
114
- skill and initializing the engine are additional CLI commands.
115
- - “Free” refers to the local Content Engine and CLI installation path, not to
116
- hosted EasySociable plans or hosted usage.
117
- - “Gets better” means decisions and feedback persist for the next run; it does
118
- not mean the Agent learns autonomously from every review.
119
-
120
- ### Do not say
121
-
122
- - “AI writes and publishes everything automatically.”
123
- - “The Content Engine guarantees better performance.”
124
- - “Obsidian is required.”
125
- - “The hosted EasySociable app is the Content Engine.”
126
-
127
- ## CTA
128
-
129
- - `educate`: explain why content needs durable decisions before generation.
130
- - `invite`: install the CLI and initialize a local engine.
131
- - `mention`: show how a Topic, Brief, or review gate survives into the next
132
- run.
133
-
134
- ## Version notes
135
-
136
- - 2026-09-16: Added as the local-first Content Engine product.
@@ -1,16 +0,0 @@
1
- # Profiles index
2
-
3
- Reusable **content profiles**: pillars + audience + voice.
4
- Accounts point here; do not copy profile bodies into account files.
5
-
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
-
10
- ## Voice column
11
-
12
- - Empty or `profile` → load `profiles/<id>/voice.md`
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.
@@ -1,17 +0,0 @@
1
- # Profile: default
2
-
3
- Replace this starter profile before the first serious draft.
4
-
5
- | File | Role |
6
- |------|------|
7
- | `pillars.md` | Topics this profile may cover |
8
- | `audience.md` | Readers + per-platform emphasis |
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 |
13
- | `lanes.md` | Publishing lanes |
14
- | `keywords.md` | Three-track: listen→Hits, search=SEO, ask=GEO |
15
- | `handles.md` | ≤8 ally/foil/competitor handles |
16
-
17
- Accounts: see `accounts/_index.md`.
@@ -1,38 +0,0 @@
1
- # Audience — profile `default`
2
-
3
- **Role:** Who this profile writes for.
4
- **Not:** Platform craft (`platforms/*.md`).
5
-
6
- ## Cross-platform core
7
-
8
- ### Primary readers
9
-
10
- 1. (fill)
11
-
12
- ### Not for
13
-
14
- - (fill)
15
-
16
- ### Jobs to be done
17
-
18
- 1. (fill)
19
-
20
- ## Per-platform emphasis
21
-
22
- Fill the section for **this run’s platform** before drafting. Sibling platforms get their own run.
23
-
24
- ### x
25
-
26
- - (fill)
27
-
28
- ### linkedin
29
-
30
- - (fill)
31
-
32
- ### ig
33
-
34
- - (fill)
35
-
36
- ### tiktok
37
-
38
- - (fill)
@@ -1,14 +0,0 @@
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)
@@ -1,18 +0,0 @@
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)
@@ -1,8 +0,0 @@
1
- # Handles — profile `default`
2
-
3
- **Role:** Small ally / foil / competitor list (≤8). Not a topic radar. Demand language → `./keywords.md`.
4
-
5
- | # | platform | handle | niche_tag | why_on_list | weight | status |
6
- |---|----------|--------|-----------|-------------|--------|--------|
7
-
8
- Zero starter rows. Add only with a concrete ally/foil/competitor reason.
@@ -1,31 +0,0 @@
1
- # Keywords — profile `default`
2
-
3
- **Role:** Three-track recipes — **listen** (social), **search** (SEO), **ask** (GEO). Not topics.
4
-
5
- | track | Means | Default use |
6
- |-------|--------|-------------|
7
- | `listen` | Social search strings | 「扫关键词」→ Hits |
8
- | `search` | Google/SEO phrases | Content map; volume optional; not default social scan |
9
- | `ask` | 15–25 word AI-engine questions | GEO coverage; not social scan |
10
-
11
- **Scan rule:** 「扫关键词」→ `track=listen` + `active` only → Hits. Never scan → Topic.
12
-
13
- | id | track | query | platform | intent | layer | pillar | why | weight | status | seed_from | pair_id | volume | kd | serp_intent | volume_source | volume_at | ask_engines | last_scanned |
14
- |----|-------|-------|----------|--------|-------|--------|-----|--------|--------|-----------|---------|--------|----|-------------|---------------|-----------|-------------|--------------|
15
- | K-01 | listen | (fill audience pain phrase) | x | pain | L1 | P1 | (why) | 1.0 | paused | manual | | | | | | | | |
16
-
17
- Replace fill rows after interview / first needs. Prefer 8–12 active **listen** seeds before routine scans.
18
-
19
- ## Column notes
20
-
21
- | Column | Meaning |
22
- |--------|---------|
23
- | `track` | `listen` \| `search` \| `ask` |
24
- | `seed_from` | `need:N-…` / `hit:H-…` / `audience` / `pillar:P…` / `manual` |
25
- | `volume` / `kd` | search annotations; empty OK |
26
-
27
- ## Agent rules
28
-
29
- - Default scan: listen + active only; max 5
30
- - Propose new rows in chat; write after confirm
31
- - Do not invent Need quotes from keywords
@@ -1,12 +0,0 @@
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 |