@easysociable/cli 0.1.0 → 0.1.2
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 +38 -69
- package/dist/easysociable.js +301 -2829
- package/dist/easysociable.js.map +1 -1
- package/package.json +17 -12
- package/skills/ONBOARDING.md +3 -1
- package/skills/easysociable-content/INSTALL.md +60 -0
- package/skills/easysociable-content/SKILL.md +107 -96
- package/skills/easysociable-content/fixtures/golden-run-en/draft.md +13 -0
- package/skills/easysociable-content/fixtures/golden-run-en/idea.md +26 -0
- package/skills/easysociable-content/fixtures/golden-run-en/pack-tiktok.json +11 -0
- package/skills/easysociable-content/platforms/claude.md +1 -2
- package/skills/easysociable-content/platforms/codex.md +1 -2
- package/skills/easysociable-content/platforms/hermes.md +1 -2
- package/skills/easysociable-content/platforms/openclaw.md +1 -2
- package/skills/easysociable-content/references/CLI.md +25 -12
- package/skills/easysociable-content/references/CONTRACT_SYNC.md +42 -0
- package/skills/easysociable-content/references/MCP.md +7 -12
- package/skills/easysociable-content/references/PAGE_PACK.md +128 -5
- package/skills/easysociable-content/references/PLATFORM_GUIDE.md +36 -0
- package/skills/easysociable-content/references/RUN_LAYOUT.md +73 -0
- package/skills/easysociable-content/references/TROUBLESHOOTING.md +11 -9
- package/skills/easysociable-content/references/VAULT.md +32 -12
- package/skills/easysociable-content/references/VOICE.md +16 -0
- package/skills/easysociable-content/scripts/contracts.mjs +183 -0
- package/skills/easysociable-content/scripts/export-contracts.mjs +76 -0
- package/skills/easysociable-content/scripts/fixture.test.mjs +24 -0
- package/skills/easysociable-content/scripts/package-skill.mjs +49 -0
- package/skills/easysociable-content/scripts/setup.mjs +127 -83
- package/skills/easysociable-content/scripts/setup.test.mjs +49 -38
- package/skills/easysociable-content/scripts/starter.mjs +50 -48
- package/skills/easysociable-content/scripts/validate-export.mjs +42 -0
- package/skills/easysociable-content/scripts/validate-pack.mjs +48 -0
- package/skills/easysociable-content/scripts/validate-run.mjs +100 -0
- package/skills/easysociable-content/scripts/validate.test.mjs +101 -0
- package/skills/easysociable-content/scripts/workbench.mjs +135 -0
- package/skills/easysociable-content/starter/CLAUDE.md +756 -0
- package/skills/easysociable-content/starter/accounts/README.md +9 -0
- package/skills/easysociable-content/starter/accounts/_index.md +31 -0
- package/skills/easysociable-content/starter/accounts/overrides/README.md +3 -0
- package/skills/easysociable-content/starter/discovery/README.md +18 -0
- package/skills/easysociable-content/starter/discovery/_index.md +27 -0
- package/skills/easysociable-content/starter/discovery/_template.md +41 -0
- package/skills/easysociable-content/starter/engine.json +19 -0
- package/skills/easysociable-content/starter/exports/README.md +28 -0
- package/skills/easysociable-content/starter/inbox/README.md +9 -0
- package/skills/easysociable-content/starter/inbox/_index.md +24 -0
- package/skills/easysociable-content/starter/inbox/entries/README.md +3 -0
- package/skills/easysociable-content/starter/platforms/README.md +19 -0
- package/skills/easysociable-content/starter/platforms/ig.md +69 -0
- package/skills/easysociable-content/starter/platforms/instagram.md +5 -0
- package/skills/easysociable-content/starter/platforms/linkedin.md +72 -0
- package/skills/easysociable-content/starter/platforms/threads.md +69 -0
- package/skills/easysociable-content/starter/platforms/tiktok.md +71 -0
- package/skills/easysociable-content/starter/platforms/x.md +78 -0
- package/skills/easysociable-content/starter/platforms/xiaohongshu.md +19 -0
- package/skills/easysociable-content/starter/profiles/_index.md +13 -0
- package/skills/easysociable-content/starter/profiles/default/README.md +11 -0
- package/skills/easysociable-content/starter/profiles/default/audience.md +38 -0
- package/skills/easysociable-content/starter/profiles/default/pillars.md +33 -0
- package/skills/easysociable-content/starter/profiles/default/voice.md +24 -0
- package/skills/easysociable-content/starter/published/_index.md +20 -0
- package/skills/easysociable-content/starter/raw/README.md +4 -0
- package/skills/easysociable-content/starter/raw/_index.md +12 -0
- package/skills/easysociable-content/starter/runs/README.md +22 -0
- package/skills/easysociable-content/starter/runs/_index.md +41 -0
- package/skills/easysociable-content/starter/runs/_template/brief.md +66 -0
- package/skills/easysociable-content/starter/runs/_template/draft.md +11 -0
- package/skills/easysociable-content/starter/runs/_template/editor.md +18 -0
- package/skills/easysociable-content/starter/runs/_template/feedback.md +15 -0
- package/skills/easysociable-content/starter/runs/_template/idea.md +27 -0
- package/skills/easysociable-content/starter/runs/_template/pack.md +47 -0
- package/skills/easysociable-content/starter/runs/_template/packet.md +25 -0
- package/skills/easysociable-content/starter/runs/_template/rubric.md +19 -0
- package/skills/easysociable-content/starter/swipe/_index.md +27 -0
- package/skills/easysociable-content/starter/swipe/_template.md +34 -0
- package/skills/easysociable-content/starter/topics/README.md +25 -0
- package/skills/easysociable-content/starter/topics/WATCHLIST.md +65 -0
- package/skills/easysociable-content/starter/topics/_index.md +44 -0
- package/skills/easysociable-content/starter/topics/_template-item.md +90 -0
- package/skills/easysociable-content/starter/topics/items/README.md +4 -0
- package/skills/easysociable-content/starter/topics/scoring.md +201 -0
- package/skills/easysociable-content/starter/topics/watchlists/README.md +10 -0
- package/skills/easysociable-content/starter/topics/watchlists/_shared.md +14 -0
- package/skills/easysociable-content/starter/topics/watchlists/default.md +6 -0
- package/skills/easysociable-content/starter/wiki/README.md +13 -0
- package/skills/easysociable-content/starter/wiki/atoms/_index.md +23 -0
- package/skills/easysociable-content/starter/wiki/atoms/_template.md +31 -0
- package/skills/easysociable-content/starter/wiki/claims/_index.md +26 -0
- package/skills/easysociable-content/starter/wiki/claims/_template.md +38 -0
- package/skills/easysociable-content/starter/workbench/README.md +17 -0
- package/skills/easysociable-content/workbench/build.py +1074 -0
- package/skills/easysociable-content/workbench/serve.py +53 -0
- package/skills/easysociable-content/workbench/template.html +2119 -0
- package/skills/easysociable-content/workflows/ANALYSIS_AND_COVERAGE.md +14 -5
- package/skills/easysociable-content/workflows/CONTENT_EXPORT.md +16 -11
- package/skills/easysociable-content/workflows/GETTING_STARTED.md +40 -0
- package/skills/easysociable-content/workflows/MCP_FIRST.md +3 -8
- package/skills/easysociable-content/workflows/OUT_OF_SCOPE.md +18 -0
- package/skills/easysociable-content/workflows/PACK_AUTHORING.md +42 -0
- package/skills/easysociable-content/workflows/SWIPE_CAPTURE.md +18 -0
- package/skills/easysociable-content/workflows/TOPIC_DRAFT.md +28 -4
- package/skills/easysociable-content/workflows/WORKING_DRAFT.md +17 -8
- package/skills/easysociable-slideshow/SKILL.md +20 -13
- package/skills/easysociable-slideshow/references/VAULT.md +13 -11
- package/skills/easysociable-template/scripts/generate-theme-from-hex.mjs +0 -0
- package/skills/easysociable-content/workflows/DEVICE_TASKS.md +0 -5
- package/skills/easysociable-content/workflows/EXPERIMENTS.md +0 -6
- package/skills/easysociable-content/workflows/PUBLICATION.md +0 -5
|
@@ -1,8 +1,17 @@
|
|
|
1
1
|
# Local analysis notes
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Record missing context as a checklist in the Run; do not call a Content CLI,
|
|
5
|
-
Local API or hosted analysis backend.
|
|
3
|
+
Research before a topic or run exists. Capture still follows engine `CLAUDE.md` § Capture when the user is storing a source.
|
|
6
4
|
|
|
7
|
-
|
|
8
|
-
|
|
5
|
+
## Workflow
|
|
6
|
+
|
|
7
|
+
1. Save sources under `raw/` + `raw/_index.md` when the capture has a URL / structure / media.
|
|
8
|
+
2. Working notes: `inbox/entries/C-….md` + `inbox/_index.md`.
|
|
9
|
+
3. Do not silent-write swipe/atoms/claims.
|
|
10
|
+
4. Network tools are optional; never block on search.
|
|
11
|
+
|
|
12
|
+
## Done when
|
|
13
|
+
|
|
14
|
+
- Capture Card returned (if this was a capture)
|
|
15
|
+
- Gaps listed as checklist items the user can answer
|
|
16
|
+
|
|
17
|
+
Next: topics or 开一单 per `CLAUDE.md` — not a multi-platform draft in one folder.
|
|
@@ -1,19 +1,24 @@
|
|
|
1
1
|
# Pack and export workflow
|
|
2
2
|
|
|
3
|
-
The Content Skill
|
|
4
|
-
private template internals and does not render images itself.
|
|
3
|
+
The Content Skill records the run and verifies the local export. It does not render.
|
|
5
4
|
|
|
6
5
|
```text
|
|
7
|
-
|
|
8
|
-
→
|
|
9
|
-
→
|
|
6
|
+
one-platform run
|
|
7
|
+
→ pack.md (slideshow, after SHIP)
|
|
8
|
+
→ Slideshow/Template skill writes pack JSON / fill-slots
|
|
10
9
|
→ Studio preview
|
|
11
10
|
→ user confirmation
|
|
12
|
-
→
|
|
13
|
-
→
|
|
14
|
-
→ locale exports/<slug>/<platform>/01.png + manifest.json
|
|
11
|
+
→ PNG export
|
|
12
|
+
→ {engine}/exports/<run-slug>/01.png + manifest.json
|
|
15
13
|
```
|
|
16
14
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
15
|
+
After export:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
node scripts/validate-export.mjs \
|
|
19
|
+
--export <engine>/exports/<run-slug> \
|
|
20
|
+
--expected-pages <N> --json
|
|
21
|
+
node scripts/validate-run.mjs --run <run-dir> --require-export --json
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Set `runs/_index` `export=yes` only when the directory validates. Preview never consumes Render Page allowance; final rendering does.
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Getting started
|
|
2
|
+
|
|
3
|
+
After setup, the observatory is `http://127.0.0.1:8765/workbench/`. The user works in chat. The Agent writes markdown. Follow engine `CLAUDE.md`.
|
|
4
|
+
|
|
5
|
+
## 1. Confirm the engine
|
|
6
|
+
|
|
7
|
+
Read `Content Engine/engine.json` and `CLAUDE.md`. Replace starter `your-handle` / `profiles/default/` before the first serious draft.
|
|
8
|
+
|
|
9
|
+
## 2. Optional local voice (skip allowed)
|
|
10
|
+
|
|
11
|
+
Ask once whether to fill `profiles/default/voice.md`. This is **local copy persona** — not the hosted Brand Profile (`references/VOICE.md`). Setup must not call `easysociable profiles create`.
|
|
12
|
+
|
|
13
|
+
## 3. One platform = one run (tracer)
|
|
14
|
+
|
|
15
|
+
Walk one local loop before any hosted render:
|
|
16
|
+
|
|
17
|
+
1. **Ask platform** if unset. One platform this time (e.g. `x` or `tiktok`).
|
|
18
|
+
2. Copy `runs/_template/` → `runs/<YYYY-MM-DD-slug[-platform]>/`.
|
|
19
|
+
3. Fill `idea.md` (platform + `swipe_id` / `atoms` / `claim_id`, `none` OK).
|
|
20
|
+
4. Append a row on `runs/_index.md` (`status=open`).
|
|
21
|
+
5. Read `platforms/<platform>.md`, then brief → packet → draft → editor → rubric.
|
|
22
|
+
6. **x text:** stop at SHIP / READY_TO_POST. No Pack JSON.
|
|
23
|
+
7. **Slideshow platform:** after SHIP write `pack.md`. Pack JSON waits for Slideshow handoff.
|
|
24
|
+
|
|
25
|
+
Rebuild workbench after writes: `python3 workbench/build.py`.
|
|
26
|
+
|
|
27
|
+
Watchlist scans write **Discovery** (`discovery/D-*.md`), not Topics. Promote a Discovery to a Topic only when the user names it.
|
|
28
|
+
|
|
29
|
+
## 4. First render (when ready)
|
|
30
|
+
|
|
31
|
+
- **Multi-page** → `easysociable-slideshow` writes `pack-<platform>.json`, then Studio → PNG.
|
|
32
|
+
- **Single-page** → `easysociable-template`.
|
|
33
|
+
|
|
34
|
+
PNGs land at `{engine}/exports/<run-slug>/`.
|
|
35
|
+
|
|
36
|
+
## Done when
|
|
37
|
+
|
|
38
|
+
- Workbench opens and shows the new run row.
|
|
39
|
+
- User knows 开一单 asks platform(s) and splits N platforms into N folders.
|
|
40
|
+
- User knows Pack JSON is a render handoff, not the default run file.
|
|
@@ -1,10 +1,5 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Filesystem-first, then hosted MCP
|
|
2
2
|
|
|
3
|
-
There is no Content MCP
|
|
4
|
-
validate the existing Obsidian Vault, write the Run and platform Pack under
|
|
5
|
-
`Content Engine/runs/<slug>/` or `内容引擎/成稿/<slug>/`, then use the unified EasySociable MCP for hosted
|
|
6
|
-
Template/Slideshow operations. If the MCP is unavailable, use equivalent
|
|
7
|
-
`easysociable` CLI commands.
|
|
3
|
+
There is no Content MCP in V1. Use filesystem tools to write the engine, then the unified EasySociable MCP for hosted Template/Slideshow operations. If MCP is unavailable, use equivalent `easysociable` CLI commands.
|
|
8
4
|
|
|
9
|
-
Never start a Local API
|
|
10
|
-
`easysociable-content` binary.
|
|
5
|
+
Never start a Local API or open SQLite. Do not require Obsidian.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Out of scope (V1)
|
|
2
|
+
|
|
3
|
+
This skill does not do:
|
|
4
|
+
|
|
5
|
+
| Area | V1 boundary |
|
|
6
|
+
|---|---|
|
|
7
|
+
| Publication / social posting | User posts; Agent records URL + result |
|
|
8
|
+
| UGC / SEO / PublicPiece | Deferred |
|
|
9
|
+
| Hosted metrics backends | User-provided numbers in `feedback.md` only |
|
|
10
|
+
| Device / iPhone automation | Not part of Content Skill |
|
|
11
|
+
| Desktop app / browser extensions | Not part of Content Skill |
|
|
12
|
+
| Content CLI / Content MCP / Local API | Use filesystem + workbench |
|
|
13
|
+
| SQLite Content Engine | Not supported |
|
|
14
|
+
| Obsidian install / vault detection | Not required |
|
|
15
|
+
| Hosted Profile at setup | Create on first render via Slideshow/Template skill |
|
|
16
|
+
| One run folder with many platform drafts | One platform = one run folder |
|
|
17
|
+
|
|
18
|
+
If the user asks for any of the above, explain the boundary and offer the local Markdown alternative or hand off to the correct skill.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Pack authoring
|
|
2
|
+
|
|
3
|
+
Vault-native pack is `pack.md` after rubric SHIP (slideshow platforms only).
|
|
4
|
+
`content-pack.v1` JSON is written by **easysociable-slideshow** at render handoff — not during draft.
|
|
5
|
+
|
|
6
|
+
Full rules: engine `CLAUDE.md` § PagePack + render.
|
|
7
|
+
|
|
8
|
+
## Vault pack
|
|
9
|
+
|
|
10
|
+
1. This run is already one platform. Copy `_template/pack.md` → `pack.md` (or `pack-<platform>.md`).
|
|
11
|
+
2. Public slots only. No private AST. No fake images.
|
|
12
|
+
3. Show a Pack Card in chat.
|
|
13
|
+
|
|
14
|
+
## Handoff JSON
|
|
15
|
+
|
|
16
|
+
Slideshow selects a published Page Template per page, then writes:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
{
|
|
20
|
+
"schemaVersion": "content-pack.v1",
|
|
21
|
+
"platform": "tiktok",
|
|
22
|
+
"title": "From idea.md",
|
|
23
|
+
"pages": []
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Validate:
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
node scripts/validate-pack.mjs --file <run-dir>/pack-<platform>.json --platform <platform> --json
|
|
31
|
+
node scripts/validate-run.mjs --run <run-dir> --require-pack --json
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
Pure X text: no pack. `x` / `xiaohongshu` image → Template skill, not a Content Pack.
|
|
35
|
+
|
|
36
|
+
## Routing after SHIP
|
|
37
|
+
|
|
38
|
+
| Condition | Hand off to |
|
|
39
|
+
|---|---|
|
|
40
|
+
| Single-page intent | `easysociable-template` |
|
|
41
|
+
| Multi-page + slideshow platform | `easysociable-slideshow` |
|
|
42
|
+
| `platform ∈ {x, xiaohongshu}` images | `easysociable-template` only |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Swipe capture
|
|
2
|
+
|
|
3
|
+
Turn a reference post into a reusable **structure** under `swipe/`. Full rules: engine `CLAUDE.md` § Library ingest + § Swipe / atom library.
|
|
4
|
+
|
|
5
|
+
## When
|
|
6
|
+
|
|
7
|
+
User shares a URL / pattern **and** approves 入库 as swipe. Never silent-seed from a run.
|
|
8
|
+
|
|
9
|
+
## Workflow
|
|
10
|
+
|
|
11
|
+
1. Copy `swipe/_template.md` → `swipe/<slug>.md`. Default `status: trial`, n=win=loss=0.
|
|
12
|
+
2. Add a row on `swipe/_index.md` (`profiles`, `platforms`, `form`, `one_liner`).
|
|
13
|
+
3. **No Evidence table** in the swipe file. Use history = `published/_index`.
|
|
14
|
+
4. Hit-status is `trial | working | dead` — not claim epistemology.
|
|
15
|
+
|
|
16
|
+
If the user only said 记一下: **§ Capture** only, then library offer. Do not also open a run unless asked.
|
|
17
|
+
|
|
18
|
+
Hand off to topics / 开一单 when the user wants production, not when capturing.
|
|
@@ -1,5 +1,29 @@
|
|
|
1
|
-
# Topic
|
|
1
|
+
# Topic draft
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
Score **what to produce**. Full rules: engine `CLAUDE.md` § Topics + `topics/scoring.md`.
|
|
4
|
+
|
|
5
|
+
Watchlist scans do **not** create Topics. They create Discovery records (`CLAUDE.md` § Discovery). Topic scoring starts only when the user names an explicit input (Discovery ID, Capture ID, URL, or idea).
|
|
6
|
+
|
|
7
|
+
## Pipeline
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
explicit input → hard filters → Scout → (produce only) opportunity 5-dim → dual-gate verdict
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
1. Hard filters (`topics/scoring.md`). Fail → skip or `parked`.
|
|
14
|
+
2. **Scout gate** — set `purpose` (`discard` \| `library` \| `produce`) + `scout_label`.
|
|
15
|
+
Default bias: **discard**. Cap **5 `produce`** per promotion session.
|
|
16
|
+
3. If `produce`: fill context / audience / conflict / insight / evidence fields, then score those five dims → `opp_score`.
|
|
17
|
+
`ready` = opp ≥ **7.5** **and** audience ≥ **6**.
|
|
18
|
+
Conflict > 5 requires a written `current_belief` and `belief_gap`.
|
|
19
|
+
4. If `library`: optional light item with `status: library`, or capture offer only — never `ready`.
|
|
20
|
+
5. Write `topics/items/T-YYYYMMDD-XX.md` from `_template-item.md`; add row on `topics/_index.md` (`opp` `aud` `purpose` `scout` + `src_*` when external).
|
|
21
|
+
6. Output **Opportunity Card** in chat.
|
|
22
|
+
|
|
23
|
+
Suggested swipe/atoms/claim on the topic are **not** citations. Citations happen in `idea.md` when a run opens.
|
|
24
|
+
|
|
25
|
+
## Topic → run
|
|
26
|
+
|
|
27
|
+
On `用 T-xxx 开一单`: **ask platform(s)** if unset. Create **one run per platform**, same `topic_id`. Mark topic `promoted`. List all RUN ids on the topic `run` column. Inherit opportunity fields into `brief.md`.
|
|
28
|
+
|
|
29
|
+
Do not put multiple platforms in one run folder.
|
|
@@ -1,10 +1,19 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Working draft
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
Markdown/JSON inside the locale run folder (`Content Engine/runs/<slug>/` or
|
|
5
|
-
`内容引擎/成稿/<slug>/`), then
|
|
6
|
-
write the platform Pack before handing off to the Template or Slideshow Skill.
|
|
3
|
+
Write copy for **this run’s platform only**. Full gates: engine `CLAUDE.md` § Open a run.
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
5
|
+
## Path
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
Content Engine/runs/<YYYY-MM-DD-slug[-platform]>/
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Workflow
|
|
12
|
+
|
|
13
|
+
1. Load `platforms/<platform>.md` (required; `instagram` → `ig.md`).
|
|
14
|
+
2. Selection already in `idea.md` (`none` allowed with why).
|
|
15
|
+
3. Brief OK → `packet.md` → `draft.md` (this platform) → `editor.md` → `rubric.md`.
|
|
16
|
+
4. Align with `profiles/<id>/voice.md` + audience **core + this platform**.
|
|
17
|
+
5. Do **not** write `pack-<platform>.json` here. Image decks: `pack.md` only after SHIP.
|
|
18
|
+
|
|
19
|
+
Sibling runs for the same topic each re-read their own craft file. No paste-across.
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: easysociable-slideshow
|
|
3
3
|
description: >
|
|
4
|
-
Create and review
|
|
5
|
-
local Obsidian Content Pack. Use the unified
|
|
6
|
-
Studio for preview, and perform final PNG
|
|
7
|
-
|
|
8
|
-
|
|
4
|
+
Create, list, update and review durable multi-page Slideshow Runs for
|
|
5
|
+
EasySociable from a local Obsidian Content Pack. Use the unified
|
|
6
|
+
`easysociable` CLI or MCP, open Studio for preview, and perform final PNG
|
|
7
|
+
rendering only after confirmation. Runs remain in the owner dashboard until
|
|
8
|
+
archive/trash. There is no Slideshow Template product, UGC publishing,
|
|
9
|
+
social posting or separate Slideshow CLI/MCP in V1.
|
|
9
10
|
---
|
|
10
11
|
|
|
11
12
|
# EasySociable Slideshow Skill
|
|
@@ -27,8 +28,8 @@ It is not a reusable Carousel/Deck Template and it is not a public post.
|
|
|
27
28
|
in Studio.
|
|
28
29
|
6. Studio is preview-only. It has no final download, publish, unpublish, UGC,
|
|
29
30
|
SEO/GEO or social-posting action.
|
|
30
|
-
7.
|
|
31
|
-
|
|
31
|
+
7. Before creating a new Run for an existing content intent, list/find prior Runs
|
|
32
|
+
by `contentSlug` and update the same Run when possible.
|
|
32
33
|
8. Preview is free but rate/concurrency limited. Final rendering is PNG-only,
|
|
33
34
|
uses one atomic reservation for all pages and charges only when every page
|
|
34
35
|
succeeds.
|
|
@@ -38,15 +39,21 @@ It is not a reusable Carousel/Deck Template and it is not a public post.
|
|
|
38
39
|
1. Validate the Pack and platform/page count.
|
|
39
40
|
2. Resolve or create the user's Profile/Theme through the unified CLI/MCP.
|
|
40
41
|
3. Select a compatible published Page Template for every page.
|
|
41
|
-
4.
|
|
42
|
+
4. List existing Runs when the Pack has a stable content slug:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
easysociable slideshows list --content-slug my-post --json
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
5. Create or update:
|
|
42
49
|
|
|
43
50
|
```bash
|
|
44
51
|
easysociable slideshows create --file ./pack.json --json
|
|
45
52
|
```
|
|
46
53
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
54
|
+
6. Open the returned `studioUrl` and inspect every page.
|
|
55
|
+
7. Save Studio edits and wait for the saved revision.
|
|
56
|
+
8. After explicit confirmation, call:
|
|
50
57
|
|
|
51
58
|
```bash
|
|
52
59
|
easysociable slideshows render --id run_xxx --idempotency-key run_xxx-final-1 --json
|
|
@@ -60,7 +67,7 @@ It is not a reusable Carousel/Deck Template and it is not a public post.
|
|
|
60
67
|
|
|
61
68
|
8. Verify checksums and the reconstruction `manifest.json` in the Obsidian
|
|
62
69
|
Run export. The export is the local final deliverable; cloud artifacts expire
|
|
63
|
-
after 24 hours.
|
|
70
|
+
after 24 hours while the Run remains listed for the owner.
|
|
64
71
|
|
|
65
72
|
## Failure handling
|
|
66
73
|
|
|
@@ -68,7 +75,7 @@ It is not a reusable Carousel/Deck Template and it is not a public post.
|
|
|
68
75
|
error to the Agent; do not substitute another template.
|
|
69
76
|
- If any final page fails, there is no partial final set and no page charge.
|
|
70
77
|
- Retry the same final request with the same idempotency key to reuse the Job.
|
|
71
|
-
- If
|
|
78
|
+
- If a Run was trashed, create a new Run from the Pack.
|
|
72
79
|
|
|
73
80
|
## Handoff boundary
|
|
74
81
|
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
# Obsidian export
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Final PNGs are written at the **engine root exports directory**:
|
|
4
4
|
|
|
5
5
|
```text
|
|
6
|
-
Content Engine/
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
└── manifest.json
|
|
6
|
+
Content Engine/exports/<slug>/<platform>/ (en)
|
|
7
|
+
内容引擎/导出/<slug>/<platform>/ (zh)
|
|
8
|
+
├── 01.png
|
|
9
|
+
├── 02.png
|
|
10
|
+
└── manifest.json
|
|
12
11
|
```
|
|
13
12
|
|
|
14
|
-
|
|
13
|
+
Semantic work and Packs stay under `runs/<slug>/` or `成稿/<slug>/`. Do not
|
|
14
|
+
write PNGs inside the run folder.
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
Read `locale.json` in the engine root. Pack JSON keys stay English.
|
|
17
|
+
|
|
18
|
+
The CLI verifies checksums and atomically replaces the export directory only
|
|
19
|
+
after a complete atomic Hosted Render succeeds. No ZIP is created. Cloud
|
|
20
|
+
artifacts may expire after 24 hours; local PNGs remain the user's files.
|
|
File without changes
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
# Deferred in V1
|
|
2
|
-
|
|
3
|
-
Experiments, hypotheses, metrics and proposal activation are retained only as
|
|
4
|
-
historical documentation. The V1 Content Skill does not expose these commands
|
|
5
|
-
or a backend. Write any future notes as ordinary Markdown in the Obsidian
|
|
6
|
-
Vault; do not create hosted experiment records.
|