suede-clip-to-guide
Suede-owned short-to-long content funnel blueprint. Use when turning a video, clip, interview moment, talk excerpt, screen recording, or transcript into a repeatable package that bridges attention to an X Article, LinkedIn article, newsletter, blog guide, or playbook, or when thi
Install
npx skills add https://github.com/JasonColapietro/suede-creator-skills/tree/main/skills/suede-clip-to-guide
claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install jasoncolapietro-suede-creator-skills@llmmart
git clone https://github.com/JasonColapietro/suede-creator-skills.git
The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole jasoncolapietro/suede-creator-skills collection as a plugin from our marketplace. Git is the plain clone.
Skill manifest
Suede Clip to Guide
Build one evidence-backed path from a video moment to a deeper written asset. Treat the clip as the attention layer and the guide as the authority layer. Do not assume the pattern performs; test the bridge against the account baseline.
Default Success Blueprint
Use this as the recommended pattern when the rights, source, claim, platform, and approval gates pass:
Useful guide with one promise
↓
Self-contained video moment
↓
Rights route + 8/10 moment score
↓
Clip hook + source credit + subtitles
↓
Post explains why the moment matters
↓
One explicit bridge to the guide
↓
Max Effort/Fleet: dual certainty gate
↓
Exact-content approval
↓
Public readback + clip-to-guide measurement
↓
Keep, revise, or stop from the observed result
Prefer this blueprint when:
- a guide already answers the natural next question created by the clip;
- the goal is deeper understanding, bookmarks, qualified replies, leads, or authority rather than raw views alone;
- the selected moment passes the 8/10 score and claim-support threshold;
- the rights route and current platform sequence are recorded;
- the account can observe at least one clip metric and one guide-transition or campaign metric.
Do not use it when:
- the guide is thin, unrelated, unpublished without a stable draft, or has no specific promise;
- the clip needs missing context, distorts the source, or exists only because it is popular;
- third-party reuse is blocked or the accountable fair-use decision is absent;
- the platform cannot preserve the source, clip, and guide bridge in a verified sequence;
- the idea is complete in the short post and the guide would add no depth.
For a first test, build three distinct packages only when three moments pass all gates. Compare them with the account's recent comparable posts. Keep the pattern only if the named guide-transition or campaign metric meets the decision rule; revise one variable at a time when it does not.
Non-Negotiable Gates
Apply these throughout the run. Resolve rights, source, and claims before writing copy; resolve platform, certainty, and approval before a live action:
- Rights gate — classify the video as owned, licensed, permission-recorded, native-repost-only, fair-use-review, or blocked. Public availability is not reuse permission.
- Source gate — obtain the video, transcript or exact timestamps, guide draft or URL, target platform, intended account, and desired next action.
- Claim gate — trace factual claims and quotations to the source. Label interpretations as interpretations.
- Platform gate — inspect current official requirements and the live composer before promising that media, quote-posts, article cards, links, or replies can be combined.
- Approval gate — do not publish, schedule, repost, upload, reply, or edit a live article until the user approves the exact media, copy, guide, account, and sequence.
- Certainty gate — when a max-effort or worker-fleet controller runs this skill, require two distinct evidence checks before marking a package approved or published. A worker conclusion is not the second check.
When a blocking gate fails, stop the affected action and return:
HALT — <one-line blocker>
Options:
1. <bounded resolution>
2. <bounded resolution>
3. <bounded resolution, if useful>
Waiting on: <specific evidence or approval>
Continue only on independent draft work that does not bypass the blocker.
Rationalizations that precede a violation
Each excuse below shows up immediately before a gate gets skipped. When one appears in your own reasoning or in the request, treat it as the signal to run the gate, not to waive it.
| Excuse | Reality |
|---|---|
| "It's only 12 seconds." | Duration is not a rights basis. The clip still needs an owned, licensed, permission-recorded, native-repost, or accountable fair-use route. |
| "I credited the source." | Credit is attribution, not clearance. A blocked or unreviewed source stays blocked with a credit line attached. |
| "It's public, so it's reusable." | Public availability is not reuse permission. Classify the video before writing copy. |
| "The composer accepted it, so it published." | A prepared composer, scheduled item, or click is not a publication. Only the public permalink readback proves it. |
| "The worker already checked it." | Under Max Effort or Worker Fleet a worker conclusion is one check. The certainty gate needs a second, independent one. |
| "The guide is basically finished." | An unpublished guide with no stable draft or specific promise fails the fit test. Build the bridge to something that exists. |
| "The moment is getting traction, so ship it." | Popularity is not the score. A moment below 8/10, or below 2 on claim support or guide bridge, does not qualify. |
Workflow
1. Define the funnel contract
Capture:
- campaign goal: article reads, bookmarks, qualified replies, profile visits, leads, or another named action;
- target platform and visible posting identity;
- video source URL or file, owner, transcript availability, and candidate timestamps;
- guide title, URL or draft, its promise, and current publication state;
- audience and one next action;
- whether the user wants a private draft, scheduled package, or live execution.
If product-marketing context exists in .agents/product-marketing.md,
.claude/product-marketing.md, or product-marketing-context.md, read it
before asking for information already covered there.
2. Choose a lawful video route
| Rights status | Allowed route |
|---|---|
original |
Cut and publish within the user's approved scope. |
licensed |
Follow the license terms and record the evidence. |
permission-recorded |
Follow the exact approved platforms, duration, credit, and edit scope. |
native-repost-only |
Use the platform's native quote, repost, stitch, duet, embed, or link path. Do not download and re-upload. Treat this as an operational sharing route, not legal clearance. |
fair-use-review |
Prepare a four-factor review for commentary, criticism, news reporting, teaching, scholarship, or research. Do not label the use fair or publish until the accountable owner records the decision. |
blocked |
Do not use the footage. Offer an original commentary clip, a permission request, or a source link instead. |
For any source that is not original, licensed, or permission-recorded, read references/third-party-video-rights.md. Do not infer fair use, ownership, or permission. Shortness, credit, a public source, or added commentary alone does not settle fair use. Do not remove watermarks, attribution, or provenance. Prefer a native repost with added analysis or create an original camera or screen-recorded response that summarizes the idea without copying the footage.
3. Establish the guide anchor
The long-form asset must have:
- one specific promise that the clip can honestly introduce;
- a title and stable draft or URL;
- enough depth to reward the transition from short to long;
- sources for material factual claims;
- one next action that matches the campaign goal.
If the guide does not exist, return a brief and route the full draft to
suede-copy and the portfolio decision to suede-content-strategy. Resume this
skill after the guide has a reviewable draft. Do not fabricate a live URL.
4. Score candidate moments
Score each candidate from 0 to 2 on five dimensions:
| Dimension | 0 | 1 | 2 |
|---|---|---|---|
| Opening clarity | Premise is missing | Premise arrives late | Premise is clear in 1–3 seconds |
| Standalone value | Needs surrounding context | Partly self-contained | Complete useful idea or story |
| Guide bridge | Unrelated | Adjacent | Naturally creates the next question the guide answers |
| Claim support | Unverifiable or misleading | Needs qualification | Directly supported and correctly framed |
| Audience fit | No named audience fit | Broad fit | Solves a named audience problem |
Select a moment only when it scores at least 8/10, claim support is 2, guide bridge is 2, and the rights gate passes. If none qualify, return the scorecard and request a better source instead of forcing a clip.
5. Build the package
Read references/package-template.md and produce:
- Decision snapshot — goal, audience, platform, identity, and chosen sequence.
- Source and rights record — owner, source, evidence, transcript excerpt, permitted route, jurisdiction, and any four-factor review.
- Guide anchor — exact title, promise, URL or draft state, and the question it answers after the clip.
- Clip brief — in/out timestamps, target duration, exact opening, subtitle text, on-screen credit, ending bridge, and export owner.
- Funnel post — exact text with four jobs:
- hook the video moment;
- explain why it matters;
- bridge to the deeper guide;
- give one specific next action.
- Publish sequence — one of the verified patterns below.
- Measurement plan — baseline, observation window, and decision rule.
- Certainty record — execution mode, two check owners or processes, direct evidence, contradictions, and final verdict.
- Approval bundle — exact media, post copy, guide, identity, and sequence.
Do not pad the post with generic setup, unsupported performance language, or multiple competing calls to action.
6. Choose a verified sequence
Use one:
- Anchor-first — publish or verify the guide, then publish the clip-led post that references it.
- Clip-first — publish the clip, then place the guide in the platform's verified companion location, such as a first reply or supported link field.
- Native-repost — quote or repost the third-party source with original analysis and a guide bridge; do not re-upload the source media.
Do not assume a quote-post can also carry new media. Verify the current composer and choose the smallest sequence that preserves the clip, guide, and source credit.
7. Run the dual certainty gate when required
Record execution_mode as standard, max-effort, or worker-fleet. Standard
mode may record certainty_status: not-required. Max Effort and Worker Fleet
must run both checks and may not mark a package approved or published until
certainty_status: proved. Record one package version, timestamp, or content
hash so both checks evaluate the same unchanged artifact.
Check 1 — production proof
- Reopen the video or transcript at the selected timestamps.
- Match the quotation, claim framing, rights evidence, moment score, guide promise, bridge, exact copy, identity, sequence, and one CTA to the package.
- Run the package validator for a saved artifact.
- In Fleet mode, the fleet worker's acceptance-criteria self-check may satisfy this check, but remains provisional.
Check 2 — independent proof
- Inspect the source evidence and assembled package directly; do not review only Check 1's summary.
- Use a different failure lens, evidence source, or acceptance criterion and try to disprove the rights route, factual framing, guide fit, platform sequence, and approval readiness.
- In Max Effort with useful parallel work, keep the producer and adversarial reviewer separate. For one atomic Max Effort job, perform a fresh second pass after reloading the source evidence.
- In Fleet mode, the controller must perform this check and mark the worker
output
accepted,rejected, orfix brief. A second worker or repeated self-check does not replace controller review.
Use only:
PROVED— both checks pass with direct evidence and every contradiction is resolved;UNPROVED— a check is incomplete, indirect, or disagrees with the other;BLOCKED— access, authority, rights, or platform state prevents a required check.
If either check is not PROVED, keep publication unapproved, use the halt
format, and name the smallest fix or evidence needed. The dual check raises
confidence; it does not guarantee truth, create legal clearance, or replace
the live readback. A material change to the media, timestamps, rights evidence,
guide, copy, identity, sequence, or CTA resets certainty_status to pending
and requires both checks again.
8. Require exact-content approval
Before a live action, show:
Account:
Platform:
Media:
Source/rights status:
Guide title and URL:
Exact post text:
Publish sequence:
Approval is valid only for that bundle. If the media, copy, guide URL, account, or sequence changes materially, show the changed bundle and obtain approval again. Verify the visible identity immediately before acting and fail closed on an account mismatch, login challenge, or ambiguous composer.
9. Verify completion
For a saved package, run:
python3 /path/to/suede-clip-to-guide/scripts/validate_package.py path/to/clip-to-guide-package.md
For a live run, also read back:
- the final public permalink;
- visible posting identity;
- rendered post text and media or native source reference;
- guide URL and publication state;
- timestamp and any platform warning.
Do not claim publication from a click alone. A complete live run needs the
public readback. A draft-only run is complete when the package validator passes
and the approval state is reported as draft.
Measurement
Choose the smallest comparable window the account can support. Record:
- clip retention or completion where exposed;
- guide opens or link clicks where exposed;
- bookmarks, saves, qualified replies, and profile visits;
- the exact campaign action;
- a comparable recent baseline.
When the platform exposes compatible denominators, calculate:
guide transition rate = verified guide opens / clip-post impressions
qualified action rate = named qualified actions / verified guide opens
If compatible denominators are unavailable, report the available counts separately. Do not combine mismatched platform windows or call clicks article reads.
Change one variable per next test: moment, opening, bridge, sequence, or CTA. Do not report causal lift from an unpaired or tiny sample.
Boundaries
- Do not download, clip, or re-upload third-party footage without a recorded rights basis or an accountable fair-use decision.
- Do not give legal clearance or label uncertain reuse as fair use.
- Do not invent transcripts, timestamps, permissions, URLs, performance, audience demand, or platform capabilities.
- Do not publish or schedule without exact-content approval and visible-identity verification.
- Do not alter a source quote to make the hook stronger.
- Do not describe the campaign as successful until current analytics support the named decision rule.
- Do not call a Max Effort or Fleet package certain, approved, or publishable
when either required check is
UNPROVEDorBLOCKED.
Routing
- Need full video editing, generation, captions, color, or exports -> use
suede-video, then return here for the funnel package. - Need a general platform plan, calendar, listening, or engagement program ->
use
suede-social. - Need the long-form guide written -> use
suede-copy; usesuede-content-strategyfor pillars and portfolio priority. - Need paid variants -> use
suede-ad-creative. - Need maximum-effort orchestration or a high-volume worker-fleet batch -> private Suede Labs companions, not in this pack: suede-full-send and suede-codex-fleet. In either mode, return here for the dual certainty record.
- From those skills, route a video-to-long-form bridge, moment score, rights
route, exact approval bundle, and readback back to
suede-clip-to-guide.
Files (suede-creator-skills)
-
agents
-
openai.yaml 410 B
interface: display_name: "Suede Clip to Guide" short_description: "Turn video moments into long-form content funnels" default_prompt: "Use $suede-clip-to-guide to turn this video moment and guide into a rights-aware, platform-native funnel package ready for exact-content approval, with the dual certainty gate when Max Effort or Worker Fleet controls the run." policy: allow_implicit_invocation: true
-
-
evals
-
evals.json 8.7 KB
{ "skill_name": "suede-clip-to-guide", "evals": [ { "id": 1, "prompt": "I have a 37-second clip from my own podcast and an X Article that explains the full framework. Make one of those video-plus-guide posts.", "expected_output": "Should use the default success blueprint, verify the article and owned-footage claim, score the moment out of 10, create a clip brief, exact funnel post, verified platform sequence, measurement plan, and exact approval bundle. It must not publish before exact-content and visible-identity approval.", "assertions": [ "Uses the default success blueprint", "Records the original-footage rights basis", "Scores the moment and requires at least 8/10", "Bridges the exact question created by the clip to the article", "Produces exact post copy and one CTA", "Returns an exact-content approval bundle", "Does not publish without approval" ], "files": [ "references/package-template.md" ] }, { "id": 2, "prompt": "Use this 45-second clip from someone else's conference talk with my guide. I don't have permission, but I will add commentary and credit them.", "expected_output": "Should read the third-party rights reference, explain that credit, short duration, public availability, and added commentary do not settle fair use, identify the likely owner, prefer a native repost or original response clip, and offer a fair-use-review package that records all four factors without granting legal clearance. Publication must remain blocked until the accountable owner records a decision.", "assertions": [ "Loads the third-party video rights reference", "Does not treat credit as permission", "Does not treat 45 seconds as an automatic safe duration", "Offers native repost or original commentary alternatives", "Records all four fair-use factors when requested", "Does not grant legal clearance", "Keeps publication blocked pending an accountable decision" ], "files": [ "references/third-party-video-rights.md", "references/package-template.md" ] }, { "id": 3, "prompt": "The video is public and everyone on X clips these talks. Just download it and post it with my article.", "expected_output": "Should reject public availability and common practice as a rights basis, use the halt format for re-uploading, and offer three bounded routes: obtain permission, use a native repost with analysis, or make an original response clip. It should not download or re-upload the footage.", "assertions": [ "Rejects public availability as permission", "Rejects everyone-does-it as a rights basis", "Uses the halt format", "Offers permission, native repost, and original-response options", "Does not download or re-upload the footage" ], "files": [ "references/third-party-video-rights.md" ] }, { "id": 4, "prompt": "Here is a transcript and my published provenance guide. Pick the best three clips and build a small pilot.", "expected_output": "Should score candidate moments on opening clarity, standalone value, guide bridge, claim support, and audience fit. It should select up to three only when each reaches 8/10 with claim support and guide bridge both at 2, then return three distinct packages and a comparable-baseline decision rule. It must not force three when fewer pass.", "assertions": [ "Scores all five moment dimensions", "Enforces the 8/10 threshold", "Requires claim support and guide bridge at 2", "Selects no more than three qualifying packages", "Does not force weak clips to fill the pilot", "Defines a comparable baseline and decision rule" ], "files": [ "references/package-template.md" ] }, { "id": 5, "prompt": "Edit my raw footage, color grade it, add animated captions, and export vertical versions for Reels and Shorts.", "expected_output": "Should recognize full video production and export work, route it to suede-video, and state that the completed exports can return to suede-clip-to-guide only if a guide bridge is also needed.", "assertions": [ "Recognizes full video production work", "Routes to suede-video", "Does not pretend the clip-to-guide package validator edits media", "Explains the return route when a guide bridge is needed" ], "files": [] }, { "id": 6, "prompt": "Plan my full 30-day social calendar across X, LinkedIn, Instagram, and Facebook.", "expected_output": "Should recognize this as general social strategy and calendar work, route it to suede-social, and avoid expanding suede-clip-to-guide into a complete channel plan.", "assertions": [ "Recognizes general social-calendar work", "Routes to suede-social", "Does not build a full calendar with this narrower skill" ], "files": [] }, { "id": 7, "prompt": "Write the entire 2,500-word guide about creator provenance first, then make the video post.", "expected_output": "Should brief the guide, route long-form writing to suede-copy and portfolio priority to suede-content-strategy, avoid fabricating a live URL, and resume the clip-to-guide workflow after a reviewable guide draft exists.", "assertions": [ "Routes long-form writing to suede-copy", "Routes portfolio priority to suede-content-strategy when needed", "Does not fabricate a live guide URL", "Resumes only after a reviewable guide draft exists" ], "files": [] }, { "id": 8, "prompt": "Post it now from whichever Suede account is open.", "expected_output": "Should refuse an ambiguous live action because the exact media, copy, guide, identity, and sequence are not approved. It should show the exact approval bundle fields and require visible-identity verification immediately before any action.", "assertions": [ "Does not choose whichever account is open", "Requires exact media, copy, guide, identity, and sequence approval", "Requires visible-identity verification", "Fails closed on ambiguity" ], "files": [] }, { "id": 9, "prompt": "Max effort on this one clip-to-guide package and double-check it so we can be certain before it goes live.", "expected_output": "Should record max-effort execution mode, keep this atomic job with the smallest relevant specialist, and run two distinct evidence passes: production proof and a fresh source-truth review using a different failure lens. It may mark certainty proved only when both checks directly verify the rights route, source claims, guide bridge, exact package, identity, sequence, and validator result and all contradictions are resolved. Otherwise it must return unproved or blocked and keep publication unapproved.", "assertions": [ "Records execution_mode as max-effort", "Does not create parallel production lanes for one atomic package", "Runs production proof against direct evidence", "Runs a distinct fresh-context second pass", "Requires both checks and the final verdict to be PROVED", "Resets certainty to pending when the checked bundle changes", "Keeps publication unapproved on disagreement or missing evidence", "Does not claim absolute certainty or legal clearance" ], "files": [ "references/package-template.md" ] }, { "id": 10, "prompt": "Use a worker fleet to make 20 clip-to-guide packages, but double-check every one for certainty before anything ships.", "expected_output": "Should run the well-specified high-volume batch as a worker fleet, record worker-fleet execution mode, treat each worker self-check as provisional Check 1, and require the controller to inspect source evidence and each assembled package as independent Check 2. A second worker or repeated self-check cannot replace controller review. Only packages with two PROVED checks, resolved contradictions, exact-content approval, and live readback may ship.", "assertions": [ "Runs the high-volume batch as a worker fleet", "Records execution_mode as worker-fleet", "Treats worker self-checks as provisional", "Requires controller inspection as the independent second check", "Does not substitute another worker for controller review", "Requires two PROVED checks and resolved contradictions", "Does not ship unproved or blocked packages" ], "files": [ "references/package-template.md" ] } ] }
-
-
references
-
example-package.md 4.3 KB
--- campaign: "Creator provenance explainer" platform: "X" identity: "@ExampleCreator" rights_status: "original" guide_status: "existing" publication_status: "draft" execution_mode: "standard" certainty_status: "not-required" --- # Clip-to-Guide Package ## Decision Snapshot - Goal: Earn qualified guide reads. - Audience: Independent creators evaluating provenance tools. - Platform: X. - Visible identity: @ExampleCreator. - Sequence: anchor-first. - Blueprint fit: use. - Fit evidence: The owned 10/10 moment creates the exact provenance question answered by the existing guide. - Next action: Read and bookmark the guide. ## Source and Rights - Video source: Original recorded interview file. - Video owner: Example Creator. - Rights evidence: Owner-supplied original file. - Allowed use: Organic social excerpt. - Jurisdiction: United States. - Transcript source: Owner-supplied transcript. - Selected excerpt: A 31-second explanation of why a dated file is evidence, not automatic ownership. - Claim qualifications: Preserve the evidence-versus-ownership distinction. ### Fair-use review - Purpose and character: Not applicable; original footage. - Nature of the source work: Not applicable; original footage. - Amount and substantiality: Not applicable; original footage. - Effect on the potential market: Not applicable; original footage. - Why this exact excerpt is necessary: Not applicable; original footage. - Accountable decision owner: Example Creator. - Decision or legal-review state: Not required for owned footage. ## Guide Anchor - Guide title: A Practical Guide to Creator Provenance - Guide URL: https://example.com/creator-provenance - Publication state: Published. - Promise: Explain what provenance records can and cannot prove. - Question the clip creates: What evidence should a creator preserve? - Answer the guide delivers: A step-by-step evidence checklist. ## Clip Brief - In timestamp: 00:12:08 - Out timestamp: 00:12:39 - Target duration: 31 seconds. - Moment score: 10/10. - Exact opening: "A timestamp is evidence. It is not automatic ownership." - Subtitle text: Match the verified transcript. - On-screen source credit: Original interview — Example Creator. - Ending bridge: "The full evidence checklist is in the guide." - Export owner: Example Creator. - Media file: not available. ## Funnel Post ### Exact post text A timestamp is evidence. It is not automatic ownership. That distinction matters whenever creators document provenance. Watch the 31-second explanation, then use the full evidence checklist in the guide below. Read and bookmark: https://example.com/creator-provenance ### Copy checks - Hook matches the clip: Yes. - Claim language matches the source: Yes. - Guide bridge is explicit: Yes. - One CTA only: Yes. - Platform composer verified: Pending live execution. ## Publish Sequence 1. Verify the guide URL and article rendering. 2. Publish the approved clip post with the verified guide link. 3. Read back the public permalink, account identity, media, copy, and guide URL. ## Measurement - Baseline: Median of the account's five most recent comparable original-video posts. - Observation window: Seven days. - Clip metric: Completion rate where exposed. - Guide metric: Tracked guide opens. - Campaign action: Guide bookmarks. - Decision rule: Test a second package only if the guide-open rate meets or exceeds the comparable median without a drop in qualified replies. ## Certainty Gate - Required: No; standard execution mode. - Checked artifact version/hash: not required. - Check 1 owner/process: not required. - Check 1 evidence: not required. - Check 1 verdict: NOT-REQUIRED. - Check 2 owner/process: not required. - Check 2 evidence: not required. - Check 2 verdict: NOT-REQUIRED. - Contradictions resolved: not required. - Final certainty verdict: NOT-REQUIRED. ## Approval Gate - Exact media approved: No. - Exact post text approved: No. - Exact guide and URL approved: No. - Exact identity approved: No. - Exact sequence approved: No. - Approved by: not available. - Approval timestamp: not available. ## Verification - Package validation: Pending validator run. - Live permalink: not available. - Visible identity: not verified for live execution. - Rendered media or source reference: not available. - Guide readback: not performed. - Publication timestamp: not available. - Caveats: Illustrative example only; no live action is authorized. -
package-template.md 3 KB
# Clip-to-Guide Package Template Use this structure for every durable package. Keep URLs and timestamps exact. Use `not available` instead of inventing a value. Max Effort and Worker Fleet packages need two distinct evidence records and a final `PROVED` verdict before approval or publication. ```markdown --- campaign: "<short campaign name>" platform: "<platform>" identity: "<visible account identity>" rights_status: "<original|licensed|permission-recorded|native-repost-only|fair-use-review|blocked>" guide_status: "<existing|drafted|needs-long-form|blocked>" publication_status: "<draft|approved|published|blocked>" execution_mode: "<standard|max-effort|worker-fleet>" certainty_status: "<not-required|pending|proved|unproved|blocked>" --- # Clip-to-Guide Package ## Decision Snapshot - Goal: - Audience: - Platform: - Visible identity: - Sequence: <anchor-first|clip-first|native-repost> - Blueprint fit: <use|revise|do-not-use> - Fit evidence: - Next action: ## Source and Rights - Video source: - Video owner: - Rights evidence: - Allowed use: - Jurisdiction: - Transcript source: - Selected excerpt: - Claim qualifications: ### Fair-use review - Purpose and character: - Nature of the source work: - Amount and substantiality: - Effect on the potential market: - Why this exact excerpt is necessary: - Accountable decision owner: - Decision or legal-review state: ## Guide Anchor - Guide title: - Guide URL: - Publication state: - Promise: - Question the clip creates: - Answer the guide delivers: ## Clip Brief - In timestamp: - Out timestamp: - Target duration: - Moment score: - Exact opening: - Subtitle text: - On-screen source credit: - Ending bridge: - Export owner: - Media file: ## Funnel Post ### Exact post text <exact copy> ### Copy checks - Hook matches the clip: - Claim language matches the source: - Guide bridge is explicit: - One CTA only: - Platform composer verified: ## Publish Sequence 1. <first action> 2. <second action> 3. <readback action> ## Measurement - Baseline: - Observation window: - Clip metric: - Guide metric: - Campaign action: - Decision rule: ## Certainty Gate - Required: <yes|no> - Checked artifact version/hash: - Check 1 owner/process: - Check 1 evidence: - Check 1 verdict: <PROVED|UNPROVED|BLOCKED|NOT-REQUIRED> - Check 2 owner/process: - Check 2 evidence: - Check 2 verdict: <PROVED|UNPROVED|BLOCKED|NOT-REQUIRED> - Contradictions resolved: - Final certainty verdict: <PROVED|UNPROVED|BLOCKED|NOT-REQUIRED> ## Approval Gate - Exact media approved: - Exact post text approved: - Exact guide and URL approved: - Exact identity approved: - Exact sequence approved: - Approved by: - Approval timestamp: ## Verification - Package validation: - Live permalink: - Visible identity: - Rendered media or source reference: - Guide readback: - Publication timestamp: - Caveats: ``` For chat-only delivery, mirror these headings and state that no saved package was validated. For a saved package, validate with: ```bash python3 scripts/validate_package.py path/to/package.md ``` -
third-party-video-rights.md 3 KB
# Third-Party Video Rights Review Read this reference whenever the video is not demonstrably original, licensed, or permission-recorded. This is a risk-recording workflow, not legal advice or legal clearance. ## Current primary sources - U.S. Copyright Office, Fair Use: https://www.copyright.gov/fair-use/more-info.html - U.S. Copyright Office, Fair Use FAQ: https://www.copyright.gov/help/faq/faq-fairuse.html - X Fair Use Policy: https://help.x.com/en/rules-and-policies/fair-use-policy - X Copyright Policy: https://help.x.com/en/rules-and-policies/copyright-policy Verify these pages again when platform rules, jurisdiction, or the planned use changes. ## Review sequence 1. Identify the likely copyright owner. The speaker, subject, uploader, organizer, camera operator, producer, and rights holder may be different people or entities. 2. Check the source page, event terms, license, press kit, and written permission. Record the evidence; do not treat silence as permission. 3. Prefer a native quote, repost, stitch, duet, embed, or link when it achieves the goal. This avoids making a new upload but does not create legal clearance. 4. If the campaign requires a copied excerpt without permission, record all four U.S. fair-use factors: - purpose and character, including what new commentary, criticism, explanation, or context is added; - nature of the copyrighted work; - amount and substantiality, including whether the excerpt takes the qualitative heart of the work; - effect on the actual or potential market, including whether the post acts as a substitute. 5. Use no more of the source than the documented commentary requires. There is no automatic safe duration, word count, or percentage. 6. Put the new analysis in the media or immediate presentation, not only in a distant guide. Preserve source credit, links, watermarks, and provenance. 7. Record the accountable owner's decision. If the factors remain uncertain or the use is commercially material, request qualified legal review. ## Decision states - `native-repost-only` — use only the platform's built-in sharing route. - `fair-use-review` — analysis is prepared; publication remains blocked until the accountable owner records a decision. - `blocked` — the review does not support proceeding, the source owner objects, a prior takedown exists, or the decision owner is unavailable. ## Hard stops Return the skill halt format when: - ownership or source provenance cannot be identified; - the planned post substitutes for the original work; - the excerpt is longer than the commentary needs; - the use relies only on credit, short duration, public availability, or "everyone does it"; - the same material was previously removed or the rights holder objected; - the user asks the skill to guarantee fair use or immunity from a complaint. X states that it cannot determine whether a use is fair use, that courts decide case by case, and that repeat copyright complaints may lead to account suspension. Keep those two risks visible in the approval bundle.
-
-
scripts
-
validate_package.py 8.3 KB
#!/usr/bin/env python3 """Validate a durable Suede clip-to-guide Markdown package.""" from __future__ import annotations import re import sys from pathlib import Path REQUIRED_FIELDS = { "campaign", "platform", "identity", "rights_status", "guide_status", "publication_status", "execution_mode", "certainty_status", } ALLOWED_VALUES = { "rights_status": { "original", "licensed", "permission-recorded", "native-repost-only", "fair-use-review", "blocked", }, "guide_status": {"existing", "drafted", "needs-long-form", "blocked"}, "publication_status": {"draft", "approved", "published", "blocked"}, "execution_mode": {"standard", "max-effort", "worker-fleet"}, "certainty_status": { "not-required", "pending", "proved", "unproved", "blocked", }, } REQUIRED_HEADINGS = [ "# Clip-to-Guide Package", "## Decision Snapshot", "## Source and Rights", "### Fair-use review", "## Guide Anchor", "## Clip Brief", "## Funnel Post", "### Exact post text", "## Publish Sequence", "## Measurement", "## Certainty Gate", "## Approval Gate", "## Verification", ] UNRESOLVED_VALUES = { "", "pending", "not available", "not required", "blocked", "none", "n/a", } def parse_frontmatter(text: str) -> tuple[dict[str, str], list[str]]: errors: list[str] = [] if not text.startswith("---\n"): return {}, ["missing opening YAML frontmatter delimiter"] end = text.find("\n---\n", 4) if end < 0: return {}, ["missing closing YAML frontmatter delimiter"] fields: dict[str, str] = {} for line_number, line in enumerate(text[4:end].splitlines(), start=2): if not line.strip(): continue match = re.fullmatch(r"([a-z_]+):\s*[\"']?(.+?)[\"']?\s*", line) if not match: errors.append(f"frontmatter line {line_number} is not key: value") continue key, value = match.groups() fields[key] = value return fields, errors def bullet_value(text: str, label: str) -> str | None: match = re.search(rf"(?mi)^-\s*{re.escape(label)}:\s*(.+)$", text) return match.group(1).strip() if match else None def validate(path: Path) -> list[str]: errors: list[str] = [] try: text = path.read_text(encoding="utf-8") except (OSError, UnicodeError) as exc: return [f"cannot read {path}: {exc}"] fields, frontmatter_errors = parse_frontmatter(text) errors.extend(frontmatter_errors) missing_fields = sorted(REQUIRED_FIELDS - fields.keys()) if missing_fields: errors.append(f"missing frontmatter fields: {', '.join(missing_fields)}") for field, allowed in ALLOWED_VALUES.items(): value = fields.get(field) if value is not None and value not in allowed: errors.append( f"{field} must be one of {', '.join(sorted(allowed))}; got {value!r}" ) for heading in REQUIRED_HEADINGS: if not re.search(rf"(?m)^{re.escape(heading)}\s*$", text): errors.append(f"missing heading: {heading}") if re.search(r"\b(?:TODO|TBD|PLACEHOLDER)\b", text, flags=re.IGNORECASE): errors.append("contains TODO, TBD, or PLACEHOLDER text") rights_status = fields.get("rights_status") publication_status = fields.get("publication_status") guide_status = fields.get("guide_status") execution_mode = fields.get("execution_mode") certainty_status = fields.get("certainty_status") if publication_status in {"approved", "published"}: if rights_status == "blocked" or guide_status == "blocked": errors.append( f"{publication_status} package cannot have blocked rights or guide status" ) if rights_status == "fair-use-review" and publication_status in { "approved", "published", }: decision_match = re.search( r"(?mi)^-\s*Decision or legal-review state:\s*(.+)$", text ) owner_match = re.search( r"(?mi)^-\s*Accountable decision owner:\s*(.+)$", text ) unresolved = {"pending", "not available", "blocked", "not reviewed"} if not decision_match or decision_match.group(1).strip().lower() in unresolved: errors.append( "approved fair-use-review package needs a resolved accountable decision" ) if not owner_match or owner_match.group(1).strip().lower() in unresolved: errors.append( "approved fair-use-review package needs an accountable decision owner" ) certainty_required = execution_mode in {"max-effort", "worker-fleet"} if certainty_required and certainty_status == "not-required": errors.append(f"{execution_mode} package requires the dual certainty gate") if certainty_required and publication_status in {"approved", "published"}: if certainty_status != "proved": errors.append( f"{publication_status} {execution_mode} package needs " "certainty_status: proved" ) if certainty_required and certainty_status == "proved": check_labels = [ "Checked artifact version/hash", "Check 1 owner/process", "Check 1 evidence", "Check 1 verdict", "Check 2 owner/process", "Check 2 evidence", "Check 2 verdict", "Contradictions resolved", "Final certainty verdict", ] values = {label: bullet_value(text, label) for label in check_labels} for label, value in values.items(): if value is None or value.rstrip(".").strip().lower() in UNRESOLVED_VALUES: errors.append(f"proved certainty gate needs resolved {label}") for label in ("Check 1 verdict", "Check 2 verdict", "Final certainty verdict"): value = values[label] if value is not None and value.rstrip(".").strip().upper() != "PROVED": errors.append(f"{label} must be PROVED when certainty_status is proved") check_1 = values["Check 1 owner/process"] check_2 = values["Check 2 owner/process"] if ( check_1 is not None and check_2 is not None and check_1.rstrip(".").strip().casefold() == check_2.rstrip(".").strip().casefold() ): errors.append( "proved certainty gate needs two distinct check owners or processes" ) evidence_1 = values["Check 1 evidence"] evidence_2 = values["Check 2 evidence"] if ( evidence_1 is not None and evidence_2 is not None and evidence_1.rstrip(".").strip().casefold() == evidence_2.rstrip(".").strip().casefold() ): errors.append( "proved certainty gate needs two distinct evidence records" ) if execution_mode == "worker-fleet": normalized_check_1 = (check_1 or "").casefold() normalized_check_2 = (check_2 or "").casefold() if "worker" not in normalized_check_1 or "self-check" not in normalized_check_1: errors.append( "proved worker-fleet gate needs a worker self-check as Check 1" ) if "controller" not in normalized_check_2: errors.append( "proved worker-fleet gate needs controller review as Check 2" ) if publication_status == "published": if not re.search(r"(?mi)^-\s*Live permalink:\s*https?://\S+", text): errors.append("published package needs a public Live permalink URL") if not re.search(r"(?mi)^-\s*Publication timestamp:\s*\S+", text): errors.append("published package needs a publication timestamp") return errors def main(argv: list[str]) -> int: if len(argv) != 2: print("Usage: validate_package.py path/to/clip-to-guide-package.md", file=sys.stderr) return 2 path = Path(argv[1]).expanduser() errors = validate(path) if errors: print(f"FAIL {path}") for error in errors: print(f"- {error}") return 1 print(f"PASS {path}") return 0 if __name__ == "__main__": raise SystemExit(main(sys.argv))
-
-
CARD.md 4.8 KB
# Skill Card — Suede Clip to Guide <!-- Generated by scripts/build-skill-cards.mjs — do not hand-edit. --> <!-- Regenerate with: npm run build:cards --> Release record for the `suede-clip-to-guide` skill, following the NVIDIA skill-card template (<https://docs.nvidia.com/skills/skill-cards>). It tells a reviewer what the skill does, who owns it, what it needs, what could go wrong, and what evidence backs the release — without requiring them to open the source first. ## Description Suede-owned short-to-long content funnel blueprint. Status: production. Ships in the `suede-skills` plugin (the full pack) at release 0.19.0; loads as a Claude Code / Codex agent skill from this directory's [SKILL.md](./SKILL.md). ## Owner Jason Colapietro, Suede Labs AI (<https://github.com/JasonColapietro>). Security contact: `info@suedeai.ai` per [SECURITY.md](../../SECURITY.md). ## License / Terms of Use MIT ([LICENSE](../../LICENSE)). The pack's combined license expression is `MIT AND BSD-3-Clause`; this skill bundles no third-party licensed material of its own. ## Use Case Target users: developers and creators running the skill inside a Claude Code or Codex CLI session. Use when turning a video, clip, interview moment, talk excerpt, screen recording, or transcript into a repeatable package that bridges attention to an X Article, LinkedIn article, newsletter, blog guide, or playbook, or when third-party footage needs a rights route before reuse. Out of scope — full video editing or production (use suede-video), general social calendars or listening (use suede-social), creating the long-form asset from scratch (use suede-copy and suede-content-strategy), paid ads (use suede-ad-creative), or publishing or reposting without exact-content and visible-identity approval. ## Deployment Geography Global. The skill is a prompt-and-script package that runs locally inside the invoking agent session; it pins no region-specific service of its own. ## Requirements / Dependencies - A Claude Code or Codex CLI session with the `suede-skills` plugin installed (install options: <https://skills.suedeai.ai/>). - Bundled files loaded relative to this directory: `agents/` (1 file), `scripts/` (1 file), `references/` (3 files). - Credentials: none are bundled or required by the skill files. Any tool or API credentials come from the host session; never paste credentials into skill files, prompts, or outputs. ## Known Risks and Mitigations - Risk: an agent treats a quality gate as autonomous authority. Mitigation: every gate in the pack is advisory — it changes what is reported, never what the user decided; only extreme-risk findings (data loss, credential exposure, legal/rights violations, payment mistakes, irreversible public damage) pause for the user's explicit choice. - Risk: a skill instruction is used to act outside its mandate. Mitigation: the hard limits in the skill body's "Boundaries" section, quoted below. From "Boundaries": - Do not download, clip, or re-upload third-party footage without a recorded rights basis or an accountable fair-use decision. - Do not give legal clearance or label uncertain reuse as fair use. - Do not invent transcripts, timestamps, permissions, URLs, performance, audience demand, or platform capabilities. - Do not publish or schedule without exact-content approval and visible-identity verification. - Do not alter a source quote to make the hook stronger. - Do not describe the campaign as successful until current analytics support the named decision rule. - Do not call a Max Effort or Fleet package certain, approved, or publishable when either required check is `UNPROVED` or `BLOCKED`. ## References - Skill source: [`skills/suede-clip-to-guide/SKILL.md`](./SKILL.md) - Rendered reference page: <https://skills.suedeai.ai/skills/suede-clip-to-guide.html> - Security policy and reviewed scanner exceptions: [SECURITY.md](../../SECURITY.md) and [`.plugin-scanner.toml`](../../.plugin-scanner.toml) at the repo root ## Skill Output Markdown analysis and recommendations returned in the agent's response. The skill publishes, posts, and sends nothing without the user's explicit authorization; delivery decisions stay with the user. ## Skill Version 0.19.0 — the pack is single-versioned, so every skill releases together; see [VERSION](../../VERSION) and [CITATION.cff](../../CITATION.cff) for the release identifier this card describes. ## Ethical Considerations - The skill produces recommendations for a human decision-maker. Publishing, sending, payment, and rights decisions stay with the user. - Its gates require verifiable claims and honest reporting; do not use the skill to fabricate claims, evidence, metrics, or attribution. - Report suspected misuse or a security concern privately per [SECURITY.md](../../SECURITY.md); do not open a public issue for it. -
SKILL.md 16.3 KB
--- name: suede-clip-to-guide description: "Suede-owned short-to-long content funnel blueprint. Use when turning a video, clip, interview moment, talk excerpt, screen recording, or transcript into a repeatable package that bridges attention to an X Article, LinkedIn article, newsletter, blog guide, or playbook, or when third-party footage needs a rights route before reuse. NOT FOR: full video editing or production (use suede-video), general social calendars or listening (use suede-social), creating the long-form asset from scratch (use suede-copy and suede-content-strategy), paid ads (use suede-ad-creative), or publishing or reposting without exact-content and visible-identity approval." metadata: version: 1.0.0 --- # Suede Clip to Guide Build one evidence-backed path from a video moment to a deeper written asset. Treat the clip as the attention layer and the guide as the authority layer. Do not assume the pattern performs; test the bridge against the account baseline. ## Default Success Blueprint Use this as the recommended pattern when the rights, source, claim, platform, and approval gates pass: ```text Useful guide with one promise ↓ Self-contained video moment ↓ Rights route + 8/10 moment score ↓ Clip hook + source credit + subtitles ↓ Post explains why the moment matters ↓ One explicit bridge to the guide ↓ Max Effort/Fleet: dual certainty gate ↓ Exact-content approval ↓ Public readback + clip-to-guide measurement ↓ Keep, revise, or stop from the observed result ``` Prefer this blueprint when: - a guide already answers the natural next question created by the clip; - the goal is deeper understanding, bookmarks, qualified replies, leads, or authority rather than raw views alone; - the selected moment passes the 8/10 score and claim-support threshold; - the rights route and current platform sequence are recorded; - the account can observe at least one clip metric and one guide-transition or campaign metric. Do not use it when: - the guide is thin, unrelated, unpublished without a stable draft, or has no specific promise; - the clip needs missing context, distorts the source, or exists only because it is popular; - third-party reuse is blocked or the accountable fair-use decision is absent; - the platform cannot preserve the source, clip, and guide bridge in a verified sequence; - the idea is complete in the short post and the guide would add no depth. For a first test, build three distinct packages only when three moments pass all gates. Compare them with the account's recent comparable posts. Keep the pattern only if the named guide-transition or campaign metric meets the decision rule; revise one variable at a time when it does not. ## Non-Negotiable Gates Apply these throughout the run. Resolve rights, source, and claims before writing copy; resolve platform, certainty, and approval before a live action: 1. **Rights gate** — classify the video as owned, licensed, permission-recorded, native-repost-only, fair-use-review, or blocked. Public availability is not reuse permission. 2. **Source gate** — obtain the video, transcript or exact timestamps, guide draft or URL, target platform, intended account, and desired next action. 3. **Claim gate** — trace factual claims and quotations to the source. Label interpretations as interpretations. 4. **Platform gate** — inspect current official requirements and the live composer before promising that media, quote-posts, article cards, links, or replies can be combined. 5. **Approval gate** — do not publish, schedule, repost, upload, reply, or edit a live article until the user approves the exact media, copy, guide, account, and sequence. 6. **Certainty gate** — when a max-effort or worker-fleet controller runs this skill, require two distinct evidence checks before marking a package approved or published. A worker conclusion is not the second check. When a blocking gate fails, stop the affected action and return: ```text HALT — <one-line blocker> Options: 1. <bounded resolution> 2. <bounded resolution> 3. <bounded resolution, if useful> Waiting on: <specific evidence or approval> ``` Continue only on independent draft work that does not bypass the blocker. ### Rationalizations that precede a violation Each excuse below shows up immediately before a gate gets skipped. When one appears in your own reasoning or in the request, treat it as the signal to run the gate, not to waive it. | Excuse | Reality | |---|---| | "It's only 12 seconds." | Duration is not a rights basis. The clip still needs an owned, licensed, permission-recorded, native-repost, or accountable fair-use route. | | "I credited the source." | Credit is attribution, not clearance. A blocked or unreviewed source stays blocked with a credit line attached. | | "It's public, so it's reusable." | Public availability is not reuse permission. Classify the video before writing copy. | | "The composer accepted it, so it published." | A prepared composer, scheduled item, or click is not a publication. Only the public permalink readback proves it. | | "The worker already checked it." | Under Max Effort or Worker Fleet a worker conclusion is one check. The certainty gate needs a second, independent one. | | "The guide is basically finished." | An unpublished guide with no stable draft or specific promise fails the fit test. Build the bridge to something that exists. | | "The moment is getting traction, so ship it." | Popularity is not the score. A moment below 8/10, or below 2 on claim support or guide bridge, does not qualify. | ## Workflow ### 1. Define the funnel contract Capture: - campaign goal: article reads, bookmarks, qualified replies, profile visits, leads, or another named action; - target platform and visible posting identity; - video source URL or file, owner, transcript availability, and candidate timestamps; - guide title, URL or draft, its promise, and current publication state; - audience and one next action; - whether the user wants a private draft, scheduled package, or live execution. If product-marketing context exists in `.agents/product-marketing.md`, `.claude/product-marketing.md`, or `product-marketing-context.md`, read it before asking for information already covered there. ### 2. Choose a lawful video route | Rights status | Allowed route | |---|---| | `original` | Cut and publish within the user's approved scope. | | `licensed` | Follow the license terms and record the evidence. | | `permission-recorded` | Follow the exact approved platforms, duration, credit, and edit scope. | | `native-repost-only` | Use the platform's native quote, repost, stitch, duet, embed, or link path. Do not download and re-upload. Treat this as an operational sharing route, not legal clearance. | | `fair-use-review` | Prepare a four-factor review for commentary, criticism, news reporting, teaching, scholarship, or research. Do not label the use fair or publish until the accountable owner records the decision. | | `blocked` | Do not use the footage. Offer an original commentary clip, a permission request, or a source link instead. | For any source that is not original, licensed, or permission-recorded, read [references/third-party-video-rights.md](references/third-party-video-rights.md). Do not infer fair use, ownership, or permission. Shortness, credit, a public source, or added commentary alone does not settle fair use. Do not remove watermarks, attribution, or provenance. Prefer a native repost with added analysis or create an original camera or screen-recorded response that summarizes the idea without copying the footage. ### 3. Establish the guide anchor The long-form asset must have: - one specific promise that the clip can honestly introduce; - a title and stable draft or URL; - enough depth to reward the transition from short to long; - sources for material factual claims; - one next action that matches the campaign goal. If the guide does not exist, return a brief and route the full draft to `suede-copy` and the portfolio decision to `suede-content-strategy`. Resume this skill after the guide has a reviewable draft. Do not fabricate a live URL. ### 4. Score candidate moments Score each candidate from 0 to 2 on five dimensions: | Dimension | 0 | 1 | 2 | |---|---|---|---| | Opening clarity | Premise is missing | Premise arrives late | Premise is clear in 1–3 seconds | | Standalone value | Needs surrounding context | Partly self-contained | Complete useful idea or story | | Guide bridge | Unrelated | Adjacent | Naturally creates the next question the guide answers | | Claim support | Unverifiable or misleading | Needs qualification | Directly supported and correctly framed | | Audience fit | No named audience fit | Broad fit | Solves a named audience problem | Select a moment only when it scores at least 8/10, claim support is 2, guide bridge is 2, and the rights gate passes. If none qualify, return the scorecard and request a better source instead of forcing a clip. ### 5. Build the package Read [references/package-template.md](references/package-template.md) and produce: 1. **Decision snapshot** — goal, audience, platform, identity, and chosen sequence. 2. **Source and rights record** — owner, source, evidence, transcript excerpt, permitted route, jurisdiction, and any four-factor review. 3. **Guide anchor** — exact title, promise, URL or draft state, and the question it answers after the clip. 4. **Clip brief** — in/out timestamps, target duration, exact opening, subtitle text, on-screen credit, ending bridge, and export owner. 5. **Funnel post** — exact text with four jobs: - hook the video moment; - explain why it matters; - bridge to the deeper guide; - give one specific next action. 6. **Publish sequence** — one of the verified patterns below. 7. **Measurement plan** — baseline, observation window, and decision rule. 8. **Certainty record** — execution mode, two check owners or processes, direct evidence, contradictions, and final verdict. 9. **Approval bundle** — exact media, post copy, guide, identity, and sequence. Do not pad the post with generic setup, unsupported performance language, or multiple competing calls to action. ### 6. Choose a verified sequence Use one: - **Anchor-first** — publish or verify the guide, then publish the clip-led post that references it. - **Clip-first** — publish the clip, then place the guide in the platform's verified companion location, such as a first reply or supported link field. - **Native-repost** — quote or repost the third-party source with original analysis and a guide bridge; do not re-upload the source media. Do not assume a quote-post can also carry new media. Verify the current composer and choose the smallest sequence that preserves the clip, guide, and source credit. ### 7. Run the dual certainty gate when required Record `execution_mode` as `standard`, `max-effort`, or `worker-fleet`. Standard mode may record `certainty_status: not-required`. Max Effort and Worker Fleet must run both checks and may not mark a package `approved` or `published` until `certainty_status: proved`. Record one package version, timestamp, or content hash so both checks evaluate the same unchanged artifact. **Check 1 — production proof** - Reopen the video or transcript at the selected timestamps. - Match the quotation, claim framing, rights evidence, moment score, guide promise, bridge, exact copy, identity, sequence, and one CTA to the package. - Run the package validator for a saved artifact. - In Fleet mode, the fleet worker's acceptance-criteria self-check may satisfy this check, but remains provisional. **Check 2 — independent proof** - Inspect the source evidence and assembled package directly; do not review only Check 1's summary. - Use a different failure lens, evidence source, or acceptance criterion and try to disprove the rights route, factual framing, guide fit, platform sequence, and approval readiness. - In Max Effort with useful parallel work, keep the producer and adversarial reviewer separate. For one atomic Max Effort job, perform a fresh second pass after reloading the source evidence. - In Fleet mode, the controller must perform this check and mark the worker output `accepted`, `rejected`, or `fix brief`. A second worker or repeated self-check does not replace controller review. Use only: - `PROVED` — both checks pass with direct evidence and every contradiction is resolved; - `UNPROVED` — a check is incomplete, indirect, or disagrees with the other; - `BLOCKED` — access, authority, rights, or platform state prevents a required check. If either check is not `PROVED`, keep publication unapproved, use the halt format, and name the smallest fix or evidence needed. The dual check raises confidence; it does not guarantee truth, create legal clearance, or replace the live readback. A material change to the media, timestamps, rights evidence, guide, copy, identity, sequence, or CTA resets `certainty_status` to `pending` and requires both checks again. ### 8. Require exact-content approval Before a live action, show: ```text Account: Platform: Media: Source/rights status: Guide title and URL: Exact post text: Publish sequence: ``` Approval is valid only for that bundle. If the media, copy, guide URL, account, or sequence changes materially, show the changed bundle and obtain approval again. Verify the visible identity immediately before acting and fail closed on an account mismatch, login challenge, or ambiguous composer. ### 9. Verify completion For a saved package, run: ```bash python3 /path/to/suede-clip-to-guide/scripts/validate_package.py path/to/clip-to-guide-package.md ``` For a live run, also read back: - the final public permalink; - visible posting identity; - rendered post text and media or native source reference; - guide URL and publication state; - timestamp and any platform warning. Do not claim publication from a click alone. A complete live run needs the public readback. A draft-only run is complete when the package validator passes and the approval state is reported as `draft`. ## Measurement Choose the smallest comparable window the account can support. Record: - clip retention or completion where exposed; - guide opens or link clicks where exposed; - bookmarks, saves, qualified replies, and profile visits; - the exact campaign action; - a comparable recent baseline. When the platform exposes compatible denominators, calculate: ```text guide transition rate = verified guide opens / clip-post impressions qualified action rate = named qualified actions / verified guide opens ``` If compatible denominators are unavailable, report the available counts separately. Do not combine mismatched platform windows or call clicks article reads. Change one variable per next test: moment, opening, bridge, sequence, or CTA. Do not report causal lift from an unpaired or tiny sample. ## Boundaries - Do not download, clip, or re-upload third-party footage without a recorded rights basis or an accountable fair-use decision. - Do not give legal clearance or label uncertain reuse as fair use. - Do not invent transcripts, timestamps, permissions, URLs, performance, audience demand, or platform capabilities. - Do not publish or schedule without exact-content approval and visible-identity verification. - Do not alter a source quote to make the hook stronger. - Do not describe the campaign as successful until current analytics support the named decision rule. - Do not call a Max Effort or Fleet package certain, approved, or publishable when either required check is `UNPROVED` or `BLOCKED`. ## Routing - Need full video editing, generation, captions, color, or exports -> use `suede-video`, then return here for the funnel package. - Need a general platform plan, calendar, listening, or engagement program -> use `suede-social`. - Need the long-form guide written -> use `suede-copy`; use `suede-content-strategy` for pillars and portfolio priority. - Need paid variants -> use `suede-ad-creative`. - Need maximum-effort orchestration or a high-volume worker-fleet batch -> private Suede Labs companions, not in this pack: suede-full-send and suede-codex-fleet. In either mode, return here for the dual certainty record. - From those skills, route a video-to-long-form bridge, moment score, rights route, exact approval bundle, and readback back to `suede-clip-to-guide`.
Comments (0)
Sign in to join the conversation.
Reviews (0)
No reviews yet.
No comments yet.