-
Notifications
You must be signed in to change notification settings - Fork 2
feat(social-ship-posts): wire the account story canon (NARRATIVE.md) into the loop #77
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
5df0e70
ed748e2
b7a30bc
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -12,7 +12,7 @@ Authenticate to the Recoup API with an `x-api-key` (`RECOUP_API_KEY`) or `Author | |
| ## The loop | ||
|
|
||
| 1. **Learn** — pull how recent posts performed, so copy is grounded in evidence, not vibes. | ||
| 2. **Draft** — write topic-first copy that fits the platform and the goal. | ||
| 2. **Draft** — write topic-first copy that fits the platform, the goal, and the account's story canon. | ||
| 3. **Decide the CTA** — comment-gate for leads, or direct link for reach. | ||
| 4. **Publish** — via the connector where supported, or hand off for manual posting. | ||
| 5. **Log & re-measure** — record what went out; re-pull performance ~48h later. | ||
|
|
@@ -65,6 +65,8 @@ Read the top performer against the flatliners and name the differences (framing, | |
|
|
||
| ## Step 2 — Draft | ||
|
|
||
| **Check the story canon first.** If the account workspace has a `NARRATIVE.md` (story bible: premise, recurring cast, storylines), read it and name **which arc and which character this post serves** before writing a word. A post that serves no arc is an ad — reframe it into the story or drop it. Serialized rules live in the canon itself (recurring catchphrases, who may be fictionalized vs. who gets only verified numbers, cliffhanger beats); follow them over generic copy instincts. If the workspace has no `NARRATIVE.md`, note that to the account owner — the account is posting without a story. | ||
|
|
||
|
Comment on lines
+68
to
+69
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win Keep the skill self-contained. These steps now require reading As per coding guidelines: Also applies to: 118-118 🤖 Prompt for AI AgentsSource: Coding guidelines |
||
| Write to the brief from step 1 plus the principles above. Structure that travels well: | ||
|
|
||
| ``` | ||
|
|
@@ -113,7 +115,7 @@ Native video works, but the bytes can't go inline: `media` won't fetch a URL, an | |
|
|
||
| ## Step 5 — Log and re-measure | ||
|
|
||
| Record each post immediately: account, platform, the post id/URN, UTC time, the CTA used, and the copy. Then **re-pull performance ~48h later**: one bulk scrape (step 1) covers all four platforms; add `LINKEDIN_LIST_REACTIONS` only when you need reactor identities, and read gated posts' comment bodies manually. Compare week-over-week — report deltas, not all-time totals. Feed the result back into step 1 for the next post. | ||
| Record each post immediately: account, platform, the post id/URN, UTC time, the CTA used, the copy, and — when the account has a `NARRATIVE.md` — **the arc and character the post served** (continuity is what makes the next episode land; an unlogged arc breaks the serial). Then **re-pull performance ~48h later**: one bulk scrape (step 1) covers all four platforms; add `LINKEDIN_LIST_REACTIONS` only when you need reactor identities, and read gated posts' comment bodies manually. Compare week-over-week — report deltas, not all-time totals. Feed the result back into step 1 for the next post. | ||
|
|
||
| ## Producing a demo video? | ||
|
|
||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
P1: The LLM tier of the resolver eval will always fail for the
recoup-internal-video-grok-1.5-imagine-facetimeskill fixture:SKILL_TOKEN_PLAIN(line 86) only matches[a-z0-9-]characters, so a dot-containing slug likerecoup-internal-video-grok-1.5-imagine-facetimegets truncated at the dot torecoup-internal-video-grok-1, which doesn't match any real skill directory. The model could reply with the exact correct slug and_picked_skillwould still return"none", causing a false mis-route failure.Update
SKILL_TOKEN_PLAINto also allow dots, matching the same pattern as the updatedSKILL_TOKENbut without the surrounding backticks.Prompt for AI agents