
Postplus Shared
- 720 installs
- 19 repo stars
- Updated July 27, 2026
- postplusai/postplus-skills
postplus-shared is an agent skill that loads PostPlus ad-platform routing and safety rules for developers who must keep connect, read, diagnose, and spend-affecting writes approval-gated.
About
postplus-shared is the shared rulebook in postplusai/postplus-skills for every PostPlus ad and research skill. It forbids treating ad management as one free-form agent task and splits work into five stages: connect account, read data, normalize, diagnose and propose, then approve and apply. A default mermaid flow routes user intent through ads-router into connect or discover, read or normalize, diagnose, propose patch, a human approval gate, and only then apply changes. Platform-specific skills in the family must load postplus-shared first so spend-affecting writes never run before explicit approval. Developers reach for postplus-shared when wiring agents to Meta, Google, TikTok, or other PostPlus ad surfaces and need consistent safety boundaries across Instagram research, Facebook research, Google Trends, and paid ad diagnostics. Use it before any task that touches ad accounts, campaign reads, or budget-impacting patches.
- Enforces a fixed five-stage pipeline: connect account, read data, normalize, diagnose and propose, then approve and appl
- Keeps read paths and write paths separate with an explicit human approval gate before any spend-affecting change
- Routes intent through ads-router roles (connect, read, diagnose, propose, apply, sync) instead of one free-form ad-manag
- Requires deterministic adapter layers—no direct model-to-platform API calls
- Treats account binding, token storage, and billing as sensitive operations with dry-run or validation-first execution
Postplus Shared by the numbers
- 720 all-time installs (skills.sh)
- +43 installs in the week ending Aug 4, 2026 (Skillselion tracking)
- Ranked #113 of 853 Sales & Marketing skills by installs in the Skillselion catalog
- Security screen: MEDIUM risk (skills.sh audit)
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/postplusai/postplus-skills --skill postplus-sharedAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 720 |
|---|---|
| repo stars | ★ 19 |
| Security audit | 2 / 3 scanners passed |
| Last updated | July 27, 2026 |
| Repository | postplusai/postplus-skills ↗ |
How do you gate ad platform agent writes safely?
Load shared routing and safety rules before any PostPlus ad-platform task so connect, read, diagnose, and spend-affecting writes stay separated and approval-gated.
Who is it for?
Developers automating PostPlus ad or research skills who need consistent safety rails before platform-specific connect or spend tasks.
Skip if: Engineers building unrelated backend APIs or organic code features with no PostPlus ad accounts should skip postplus-shared.
When should I use this skill?
Any PostPlus ad-platform task starts and the agent must load shared routing before connect, read, diagnose, or apply steps.
What you get
Stage-separated ad workflow, human approval gate before apply, and normalized read/diagnose outputs.
- Stage-gated ad workflow plan
- Normalized campaign read outputs
- Approval-gated patch proposals
By the numbers
- Defines 5 gated ad workflow stages from connect through approve-and-apply
- Documents a default ads-router flow with a human approval gate before apply
Files
PostPlus Shared
Use this skill first when another PostPlus skill asks for shared rules or shared workflow preferences.
This skill is the single source of truth for principle-level PostPlus skill documents. It is instruction-only: do not run provider runtimes, mutate public metadata or release metadata, or invent alternate execution paths from this shared-rule handoff.
References
- `shared-public-skill-rules.md`
- `shared-research-preferences.md`
- `shared-product-selection-preferences.md`
- `shared-source-of-truth-files.md`
- `shared-tiktok-music-workflow.md`
- `shared-ads-workflow.md`
- `shared-user-guidance.md`
Default Workflow
1. Read the reference named by the downstream skill. 2. Apply the shared rule before reading platform- or production-specific details. 3. If a downstream skill and this shared rule conflict, fail fast and surface the conflict instead of inventing a fallback. 4. Keep executable work in the downstream skill or PostPlus CLI boundary; this shared skill only owns the principle-level rule.
Shared Ads Workflow
Shared routing and safety rules for the ad skill family.
Use this file when a task touches any ad platform and you need the common model before platform-specific work.
Core Rule
Do not treat ad management as a single free-form agent task.
Split it into five stages:
1. connect account 2. read data 3. normalize 4. diagnose and propose 5. approve and apply
This family should always keep those stages separate.
Default Flow
flowchart LR
A["User intent"] --> B["ads-router"]
B --> C["connect / discover"]
C --> D["read / normalize"]
D --> E["diagnose"]
E --> F["propose patch"]
F --> G["human approval gate"]
G --> H["apply changes"]
H --> I["audit log"]
D --> J["conversion sync"]Safety Rules
- Keep read and write paths separate.
- Require explicit approval before any spend-affecting write.
- Treat account binding, token storage, and billing as sensitive operations.
- Prefer dry-run or validation-only mode before real execution.
- Never let the model call the platform API directly without a deterministic adapter layer.
Common Roles
ads-router
- classify intent
- decide whether the request is connect, read, diagnose, propose, apply, or sync
- route to the correct platform adapter
ads-core
- own the normalized ad schema
- own the approval record schema
- own the audit and execution record schema
ads-read
- pull accounts, campaigns, ad groups, ads, creatives, budgets, reports, and conversion summaries
- never mutate
ads-diagnose
- identify wasted spend, fatigue, unstable CPA, budget constraints, and broken tracking
- output reasons, not commands
ads-propose
- produce a structured patch for review
- keep proposed changes small and explicit
ads-apply
- execute only approved changes
- keep a full result record
ads-conversion-sync
- send server-side events or conversion signals back to the platform
- treat this as an execution path with tracking and audit
Shared Output Contract
All platform-specific skills should be able to return at least:
access_scopeaccount_treenormalized_reportsdiagnosisproposed_patchapproval_recordexecution_resultaudit_log
Platform Policy
Each platform adapter should declare:
- auth method
- readable objects
- writable objects
- conversion sync support
- expected rate-limit behavior
- known policy or access caveats
First Version Boundary
The first version should support:
- connect
- read
- normalize
- diagnose
- propose
- manual approve
- apply a small safe action set
The first version should not try to automate:
- full campaign generation from scratch
- unrestricted budget allocation
- multi-account spend migration
- self-directed creative replacement
Shared Product Selection Preferences
Shared routing rules for product-selection work.
Use this file first. It exists to help the agent choose the right path before collecting data or making recommendations.
Merchant Models
Classify the business model first:
white-label: generic or lightly customized products, speed and margin firstbrand: differentiated products, trust and premium firstdistribution: authorized resale, assortment and channel leverage firstcontent-led: creator or media-driven selling, content efficiency firsthybrid: mixed model, choose the dominant constraint first
Do not confuse merchant model with sales channel.
Channels
Classify the main selling channel next:
amazon: search-led marketplacetiktok-shop: content-led marketplaceindependent-site: audience and LTV-led storefrontmulti-channel: compare channel fit explicitly instead of averaging assumptions
Treat channel choice as a strategy question, not a formatting detail.
Question Types
Classify the user request before doing any work:
platform data: listings, prices, reviews, rankings, creators, comments, shop pagessocial proof: cross-platform content demand, audience language, creator traction, comment signalssupply chain: factory options, MOQ, lead time, customization, packaging, logistics feasibilityfinancial judgment: margin, contribution profit, break-even CPA, inventory pressure, return sensitivitycompliance risk: restricted claims, category restrictions, certification or safety exposureselection synthesis: whether a product fits a merchant model and channel combination
Do not answer a platform-data question from generic web search if a platform skill exists.
Skill Routing
Default route:
1. identify merchant model 2. identify channel 3. classify question type 4. collect the minimum valid evidence 5. synthesize only after evidence exists
Use these routes:
- Instagram/Meta demand or content proof ->
social-media-extractor - TikTok content and audience language ->
tiktok-research - Instagram creator/content/comment proof ->
instagram-account-researchorinstagram-content-benchmarkorinstagram-audience-voice - supply-side product or supplier data -> user-provided supplier sheets,
quotations, or approved marketplace exports
- cross-source sourcing judgment ->
sourcing-selection - Hook, structure, and why content works ->
video-analysis - Creative benchmark adaptation ->
benchmark-to-brief
If no supply-chain or finance skill exists yet, state the missing layer clearly and avoid false confidence.
Minimum Judgment Order
Use this order unless the user asks otherwise:
1. Is there real demand or proof of demand? 2. What kind of competition is this: price, content, trust, supply, or search ranking? 3. Does this product fit the target channel? 4. Does this product fit the merchant model? 5. Can the unit economics survive ads, fees, shipping, and returns? 6. Is the compliance or operational risk acceptable?
Do not jump from "people are selling it" to "we should sell it."
Failure Patterns To Avoid
- mixing merchant model and channel into one label
- using TikTok signals to justify an Amazon-first launch without search proof
- using Amazon demand to justify TikTok Shop without content-demo fit
- using one social platform's proof as if it represents all audience demand without checking channel fit
- skipping margin and return sensitivity because top-line demand looks strong
- treating "product selection" as one workflow when the real bottleneck is supply chain or finance
Shared Public Skill Rules
Shared execution rules for released PostPlus skills running inside the PostPlus runtime.
Use this rulebook when a skill needs PostPlus Cloud service access, temporary local artifacts, or a compile step before provider execution.
PostPlus Cloud Rule
- Treat host-managed adapters, auth, and billing boundaries as the source of
truth for provider-backed execution.
- Do not probe local secret env vars or ask the user to paste provider tokens
into the chat just to see whether a capability exists.
- If the PostPlus Cloud boundary reports that a capability is unavailable, unauthorized,
or not configured, fail fast and report that directly to the user.
- On that capability-missing path, do not switch into a “we can collect later”
discovery flow.
Supported Script Rule
- Use PostPlus-supported scripts and PostPlus Cloud services as the supported
execution path.
- Do not replace PostPlus-supported scripts with ad hoc
curl,fetch,
node -e, heredoc, or exploratory shell glue.
- If a supported script returns a stable proxy, DNS, network, or
infrastructure error, stop immediately and report that failure directly.
Parallel Request Rule
- When multiple tool calls, file reads, script requests, provider submissions,
or data-collection requests are independent, prepare their inputs first and dispatch them as a bounded parallel batch instead of running them one by one.
- Do not serialize independent requests just because they target different
files, accounts, URLs, keywords, assets, platforms, or scripts.
- Keep steps serial only when a later request depends on an earlier result, a
skill explicitly requires a serial queue, approval or quote confirmation is still missing, or the skill's own cost/rate-limit boundary requires smaller batches.
- For approved side-effecting or provider-backed work, submit approved
independent items concurrently within the skill's stated batch or concurrency limit. Do not create duplicate requests to mask slow or failing providers.
Async Provider Task Rule
- When a supported script returns
pending,processing,generationHandle,
runHandle, providerUrls.get, or a collection-report.json, treat that as a real resumable checkpoint.
- Do not block the user's conversation by looping on provider polling when the
next useful action does not depend on the finished artifact.
- Tell the user the job is still running, name the durable checkpoint in
business terms, and continue with independent planning, review, or prep work when useful.
- Poll again only when the next step truly needs the finished result or when
the user explicitly asks to wait for completion.
- If there is no useful parallel work, run one bounded poll pass, report the
current status, and keep the resume command or checkpoint available. The resume command for a hosted media job is postplus media poll --handle <output.data.id>; for a public-content scrape (the s_... handle from research scrape) it is postplus research scrape --run-handle <runHandle>; for a hosted research collection it is postplus research collect --run-handle <runHandle>.
Work Folder Rule
- Temporary request files, actor-input files, raw datasets, index files, and
cache-like intermediates belong under the current work folder's .postplus/ directory.
- Keep final user-facing deliverables outside
.postplus/. - Treat
.postplus/as internal implementation state and do not explain its
management steps to the user unless the user explicitly asks for internals.
- Do not write runtime temp artifacts into installed skill directories.
Real File Rule
- When a tool or script expects
--input <file.json>or a comparable file
argument, provide a real file path.
- If the input must be synthesized first, write it as a real file under
.postplus/ instead of passing inline JSON text.
Hosted Request Shape Rule
- Hosted skills run the converged verb grammar. The agent supplies only the
skill-specific input; the closed-source CLI runner translates it into the hosted request, mints identifiers, and derives billing dimensions.
- Each hosted command reads its input from
--request <file>:
postplus research collect <collection-key> --request <input.json>, postplus research scrape <source-key> --request <input.json> (scrape input is a JSON array of { "url": ... } entries), postplus media <verb> <endpoint-key> --request <input.json>, postplus media analyze <model-key> --request <payload.json>, and postplus publish <operation> --request <input.json>. Flags-surface media endpoints take the input as --<flag> options instead and read no --request file.
- Before writing a
--requestfile, read the public schema with
postplus research schema --collection-key <key> --json, postplus media schema --endpoint <endpoint-key> --json, or postplus publish schema --json.
- Put only the skill-specific request under
--request(an object, or an array
for research scrape). Do not hand-write runner-managed fields such as ids, tokens, or billing dimensions; the CLI mints or derives them and rejects them in the request body.
- Pass shared execution fields as command-supported flags
(--quote-confirmation-token, --hosted-operation-id, or --run-handle to resume a pending research collection), not inside the skill-specific input.
- If a hosted command prints
Quote confirmation challenge: <path>, run the
exact postplus quote confirm --json --challenge-file <path> command, then rerun the same hosted command with --quote-confirmation-token <token>.
Conversation Media Rule
- When the user shares images, videos, or other media inside a local AI agent
conversation, only save or upload the media if the agent can access a real local file path, attachment handle, clipboard bytes, or other actual binary source exposed by the host runtime.
- If the agent can only see the media as model context and cannot access the
original bytes, do not recreate, screenshot, summarize, or generate a substitute file and present it as the original asset.
- On that path, stop and tell the user the honest unblocker: provide a local
path, attach the file through a host mode that exposes a path, or save the media to disk before continuing.
- Do not send conversation media to PostPlus Cloud through inline base64 in the
hosted JSON request. Use the supported local file upload path when a real file or binary source exists.
Compile-Step Rule
- For complex collection families, compile the user brief into provider-ready
input before the expensive execution step.
- Inspect or adjust the compiled input when the request is high-cost, ambiguous,
or unusually broad.
Local Dependency Bootstrap Rule
- For approved local media dependencies in the current CLI-first release, the
user's agent must proactively install the missing dependency in the user's local environment before running the supported script that needs it.
- Current approved local media dependencies are:
python3yt_dlpffmpegffprobe- Skill scripts must call the PostPlus CLI local dependency checks for
these dependencies. Individual skills must not hard-code OS-specific binary names, shell syntax, or install paths.
- The resolver owns platform command selection. It keeps macOS/Linux on the
canonical python3 path and uses the Windows Python launcher / Python 3 command candidates when the host platform is Windows.
PostPlus CLIitself is not the installer for those tools.- Do not ask a non-technical end user to install those tools manually or to
interpret tool names such as ffprobe.
- Use the smallest direct install path already supported by the host
environment.
- After installation, rerun a direct verification command before continuing.
- If installation or verification fails, stop immediately and report that
failure directly instead of inventing fallback glue.
Cost Discipline
- Default to a bounded first pass before a broader second pass.
- Treat the first pass as evidence gathering for inspection and iteration, not
as the full-market scrape.
Shared Research Preferences
Shared routing rules for research skills.
Core Rule
Classify the request first:
Web facts: news, rules, company facts, public articles, policy context -> use web searchPlatform data: creators, hashtags, posts, comments, engagement, listings, rankings, reviews -> use the relevant platform skill firstContent breakdown: hook, structure, shots, spoken lines, adaptation -> use analysis skill after collectionMixed: collect first, shortlist second, analyze third
If a platform skill exists, do not answer a platform-data question primarily from public web search. Use web only when:
- the user explicitly wants a fast public-web read
- the fact is external to the platform dataset
- no platform skill exists
- the platform skill path is blocked
Platform-First Rule
Treat these as platform-data requests by default:
- research data from a specific platform
- find bloggers / creators / KOCs / KOLs
- see which content is currently taking off
- inspect comments, engagement, price bands, rankings, and competitors
- find benchmark samples
Default execution order:
1. use the platform skill to collect a small valid dataset 2. normalize or rank locally 3. synthesize findings from the dataset 4. use deeper analysis skills only on shortlisted samples 5. use web search only as a secondary layer if needed
Preferred Routes
- Instagram and Meta social research routing ->
social-media-extractor - Instagram creator discovery ->
instagram-creator-discovery - Google search-intent and topic momentum ->
google-trends-research - TikTok platform data ->
tiktok-research - TikTok ad creative research ->
tiktok-ad-research - supply-side product or supplier data -> user-provided supplier sheets,
quotations, or approved marketplace exports
- Instagram creator discovery ->
instagram-creator-discovery - Instagram creator/account research ->
instagram-account-research - Instagram content benchmark ->
instagram-content-benchmark - Instagram audience language ->
instagram-audience-voice - Instagram hashtag/tagged campaign scouting ->
instagram-campaign-scout - YouTube channel and video research ->
youtube-research - Facebook page and post research ->
facebook-research - Hook, structure, and why content works ->
video-analysis
Chaining Rule
Do not treat research skills as isolated.
Typical chain:
1. collect 2. normalize 3. rank or shortlist 4. analyze the strongest samples 5. adapt into strategy or creative output
If the user also wants execution after research, hand off only after the research output is explicit:
1. package into brief, shortlist, or publish-ready copy 2. confirm channels or destinations if execution is high-impact 3. then route to outreach or publishing skills
For Instagram creator discovery requests, add a routing step before collection:
1. normalize the brief 2. choose handle-first, content-first, graph-first, or mixed 3. collect with instagram-creator-discovery using a wider recall band when needed 4. enrich candidates 5. classify creator type 6. shortlist 7. hand off to outreach only after scoring
Clarify Only When It Changes The Route
If the user intent is broad and the next step is ambiguous, ask one short question.
Examples:
- Do you want to inspect an account shortlist first, or start with content benchmarks?
- Do you want a platform data scan, or a breakdown of specific content structures?
- Are you scanning the market first, or do you already have samples to analyze?
If the route is already clear, do not stop to ask.
Video Analysis Proactive Ask
When the user wants to analyze a specific video — hook, structure, shots, or why it works — ask if they want to use video-analysis before falling back to generic analysis. Skip the ask only if the user already named the skill.
Failure Pattern To Avoid
Common mistake:
- user asks a platform-specific strategic question
- agent interprets it as a generic strategy question
- agent answers from web search first
Correct response:
- recognize the named platform
- route to the relevant skill first
- collect the minimum valid evidence
- synthesize only after evidence exists
Creator-discovery-specific mistake:
- user asks for
5k-10kcreators in a niche - agent defaults to keyword-based account search
- follower filtering happens only after noisy recall
Better response:
- recognize that follower band + niche fit usually needs routing
- prefer
content-firstorgraph-firstwhen account search is likely to over-rank large accounts - use
instagram-creator-discoveryfor Instagram creator discovery - use wider recall and tighter shortlist instead of strict first-pass filtering
- classify
individual creatorvsbrand/productvseducator/consultantvsaggregatorbefore producing outreach-ready leads
Cross-platform mistake:
- user asks a broad social question across multiple networks
- agent jumps straight into one familiar platform
- cross-platform differences are never surfaced
Better response:
- recognize when the request is about Instagram/Meta social direction rather than one named platform
- start with
social-media-extractor - use platform-specific skills only after the route is clear
Shared Source-Of-Truth Files
Use this reference when a skill needs stable campaign- or project-level context for repeated creative generation.
The goal is not to create more documents.
The goal is to stop every script, hook, storyboard, and render request from starting as a blank prompt with no memory.
Why This Matters
Short-form creative systems drift when they regenerate everything from one chat turn:
- brand voice shifts
- product claims become inconsistent
- personas lose credibility
- hooks repeat or flatten
- the next skill cannot tell what was grounded versus improvised
Stable source-of-truth files solve that.
Default File Set
Recommended default files:
brand.mdpersona.mdproduct.mdhooks.md
These are shared campaign or project assets. They are not private implementation details of any one creative skill.
What Each File Owns
brand.md
Owns:
- brand voice rules
- forbidden phrases
- positioning
- message boundaries
Use it so the brief does not get lost in scattered chat threads or copied inconsistently.
persona.md
Owns:
- who is speaking
- why this person is credible
- relationship to the product
- repeatable delivery constraints
Use it to keep recurring AI UGC creators or narrator identities coherent across many assets.
product.md
Owns:
- product facts
- claims
- mechanism
- objections
- approved proof anchors
Use it so scripts, voice, and render layers do not invent unsupported product logic.
hooks.md
Owns:
- hook shells
- tested openers
- emotional triggers
- format variations
- anti-repetition memory
Use it as a living hook library. Do not automatically treat it as validated performance truth unless the surrounding workflow confirms that.
When To Recommend This System
Default recommendation signals:
- repeated script generation for one brand
- multiple products or SKUs
- multiple personas
- multiple platforms
- batch testing of hooks or angles
- need for continuity across script, storyboard, and render layers
For one-off exploration, this file system may be optional. For repeated campaign work, it should become the default bias.
Relationship To Skills
Creative skills may read these files.
Creative skills should not each reinvent their own local equivalent.
Typical pattern:
- shared or project setup creates or maintains the files
- script review consumes them for scripts
- storyboard and render skills consume the approved script objects downstream
User-Facing Framing
Explain this as a quality and consistency system, not as paperwork.
Good framing:
- "If you want stronger batch script quality, I recommend keeping brand, persona, product, and hook context in four stable files so later generations stay consistent."
Weak framing:
- "Please fill out these files before we can help."
Shared TikTok Music Workflow
Shared routing and chaining rules for TikTok music, sound, video sample, and local audio-reference work.
Core Rule
Classify the request by the object the user already has:
No specific sound yet: find candidates first withtiktok-researchMusic URL / sound URL / musicId / song keyword: usetiktok-research
when the released TikTok collection path can produce sample video URLs; if it cannot, ask the user for selected video URLs or an existing sample dataset
Selected video URLs or sample dataset: download videos and extract audio withtiktok-music-archive-downloaderLocal video or audio files: route throughmedia-routerinto transcription, subtitles, orvideo-analysis
Do not start with downloading when the user has not selected a sound or sample set. Do not treat extracted audio as commercially cleared unless the user confirms rights or platform-licensed use. Download claims are limited to TikTok post URLs reachable from the user's current local browser/IP environment. If yt_dlp reports that the current IP is blocked, preserve the failed source URL and stop the archive/audio-extraction chain instead of retrying broad downloads or inventing an unapproved proxy/cookie path.
Skill Chain
Use this default chain for TikTok music research:
1. tiktok-research: discover candidate sounds by region, category, or campaign fit. 2. tiktok-research: collect or normalize selected video samples when the released collection path supports the request. 3. tiktok-music-archive-downloader: download representative videos and extract reference audio. 4. video-analysis: analyze video structure, hook, pacing, visual pattern, and usage context. 5. audio-transcription or video-transcription: transcribe lyrics, speech, or voiceover when needed. 6. subtitle-packager: produce SRT/ASS only after timed transcript artifacts exist.
Skip steps when the user already provides the corresponding artifact.
Collection Boundary
The released public surface does not expose a separate TikTok music-sound collector skill. Keep music-specific collection claims inside tiktok-research only when the released collection key and script path support the exact request. If they do not, ask for selected TikTok video URLs or an existing sample dataset before downloading.
Download Access Boundary
tiktok-music-archive-downloader is a local downloader for reachable TikTok post URLs. Passing the local dependency bootstrap does not prove that TikTok will let the current local IP/browser access path fetch the post. A download report item with failureCode: "tiktok_ip_blocked" is the supported fail-fast outcome: report the blocker with sourceUrl, stderr, and the report path, then stop until a reachable URL/sample file or approved access bootstrap exists.
Output Contracts
Music Candidate
Use for trend discovery outputs:
{
"platform": "tiktok",
"recordType": "musicCandidate",
"musicId": "",
"musicTitle": "",
"musicAuthor": "",
"musicUrl": "",
"regionCode": "",
"rank": null,
"trendReason": "",
"sampleVideoUrls": [],
"sourceCollectionPath": "",
"fetchedAt": ""
}Music Video Sample
Use for sound collection outputs:
{
"platform": "tiktok",
"recordType": "musicVideoSample",
"videoId": "",
"videoUrl": "",
"authorUsername": "",
"text": "",
"musicId": "",
"musicTitle": "",
"musicAuthor": "",
"likeCount": null,
"commentCount": null,
"shareCount": null,
"viewCount": null,
"publishedAt": "",
"sourceCollectionPath": ""
}Download Manifest
Use for archive-download inputs:
{
"items": [
{
"sourceId": "musicid-videoid",
"sourceUrl": "https://www.tiktok.com/@user/video/123"
}
]
}Storage
Use this campaign layout:
customers/<customer-id>/campaigns/<campaign-id>/research/tiktok-music/
raw/
normalized/
analysis/
archive/<run-id>/
manifest/
videos/
audio/
index.jsonKeep raw collection output, normalized datasets, and archive manifests. Do not keep only the final audio files.
Combination Cases
Use tiktok-research with this workflow when music fit must be judged against broader TikTok content, creator, hashtag, or comment context.
Use tiktok-ad-research separately when the request is about paid ads or Creative Center ads. Do not infer organic music trends from ad-only data unless the user asks for paid creative context.
Use video-analysis after downloading only the shortlisted strongest samples. Do not run semantic video analysis over broad unscreened trend results.
Use media-router when the user gives local files and the needed output is unclear. Let it choose transcription, subtitle packaging, semantic analysis, or edit prep.
Use creative-qa only after a human has reviewed candidate audio/video samples and wants structured review records.
Failure Patterns
- Jumping from a trend list directly to audio extraction without checking videos that use the sound.
- Ranking sounds only by trend rank instead of campaign fit and sample availability.
- Treating TikTok sound-page downloads as reliable when
yt-dlpsound extraction may be broken. - Retrying broad archive downloads after
failureCode: "tiktok_ip_blocked"
instead of reporting the access blocker.
- Losing provenance by saving audio without source video URL, music id, and actor output.
- Presenting scraped or extracted audio as cleared for commercial reuse.
Shared User Guidance
Rules for proactive user communication when using PostPlus skills. Apply these before any skill-specific execution, especially when the user intent is broad or the interaction appears early in the session.
Orient Before Acting
When the user gives a broad request and hasn't named a specific skill, briefly name which skill will be used and what it does before proceeding. Then ask a short confirmation.
Keep it to one sentence. Don't run in silence.
Audience Language
Assume the user is a marketing operator, not an engineer. Use everyday business language in user-facing messages.
- Prefer "image file", "saved file", "upload", "account connection", "service
limit", and "next step" over implementation terms when the technical detail is not the real unblocker.
- Avoid unnecessary provider, API, schema, endpoint, payload, base64, runtime,
attachment handle, or storage internals in normal user-facing copy.
- If a technical term is the real blocker, translate it into what the user can
do next in the same sentence.
- Keep detailed technical evidence in local artifacts, logs, or task summaries
unless the user asks for implementation details.
Execution Expectation
Before running a skill that will collect data, call a PostPlus Cloud service, or write durable local artifacts, say what will happen in one compact sentence:
- the first action
- the expected output artifact
- the likely downstream handoff
Use the concrete skill names, not abstract workflow labels.
Good shape:
- "I will first use tiktok-research to collect a small public sample and output a shortlist; after approval, I will pass it to video-analysis for hook and shot breakdown."
- "I will first put the persona lock and source basis into the image-batch-runner request and output a local asset manifest; the next step can go to creative-qa or video-batch-runner."
Do not promise hosted, provider, file-reference, account-connection, or publishing behavior unless the current skill contract and registry release requirements already support that path.
Async Task Copy
When a long-running skill returns a pending generation, transcription, or collection checkpoint, tell the user two things in plain language:
- the job is running and can be checked again from the saved checkpoint
- the conversation does not need to pause while the provider finishes
Good shapes:
- "The render is running now. I saved the checkpoint, so I can keep preparing the QA checklist and check the render again when we need it."
- "The collection is still processing. I can continue outlining the summary structure now, then poll the saved report before filling in metrics."
Do not keep the chat idle just to poll. Poll immediately only when the user's next requested step depends on the completed artifact or the user explicitly asked to wait.
Technical Boundary Orientation
Before an expensive collection, media generation, transcription, publishing, or large local processing step, inspect the skill's own boundary section and public metadata requirements. If the request crosses a known limit, do one of these before execution:
- internalize the boundary into the request shape, such as bounded first passes,
segment contracts, capped frame counts, or compiled hosted inputs
- ask one short scope question when the skill cannot choose safely
- stop with a direct blocker when the released contract does not support the
requested path
Do not ask the user to understand provider limits, endpoint names, actor fields, polling internals, or local implementation details unless that detail is the real unblocker. Use the business meaning of the limit instead.
Brief Decomposition
When the user gives a fuzzy business goal ("help me promote this product", "make a viral video"), do not jump into execution. Decompose the goal into 2-4 concrete sub-tasks, map each to a PostPlus skill, and present as a numbered plan. Then ask which step to start with.
Common decomposition templates:
| User intent | Decomposition |
|---|---|
| "Promote this product" | ① Instagram/Meta content proof (social-media-extractor) → ② campaign brief (benchmark-to-brief) → ③ creator shortlist or draft publishing path |
| "Make a viral video" | ① trend collection (tiktok-research) → ② hook breakdown (video-analysis) → ③ request planning (video-request-architect) → ④ video render (video-batch-runner) |
| "Build a social presence for this brand" | ① Instagram/Meta audit (social-media-extractor) → ② content strategy (benchmark-to-brief) → ③ creative QA and production planning (creative-qa) |
| "Analyze this account" | ① account research (instagram-account-research) → ② audience voice (audience-voice) → ③ content benchmark (content-benchmark) |
Use these as reference, not a rigid checklist. Adapt to the user's actual scope.
Cross-Skill Suggestion
After completing a skill, offer one concrete downstream skill as the logical next step. One suggestion at a time. Don't list all possibilities.
Examples:
- tiktok-research done → "Want me to break down the hooks and structure of these videos with video-analysis?"
- video-analysis done → "These insights could feed into a campaign brief via benchmark-to-brief."
- benchmark-to-brief done → "Brief is ready. Want me to turn it into a video request plan?"
First-Use Mini Onboarding
If this appears to be the user's first time using a skill, add one line of context before executing. Explain what the skill does and when it's typically used. Don't over-explain — one sentence is enough.
Boundary Redirect
If the user asks for something this skill does not handle, name the right skill immediately instead of saying "I can't do that" or attempting a fallback.
Failure Copy
When a supported script or PostPlus Cloud service fails with a stable error, stop and report the blocker directly. The user-facing failure message must include:
- the skill and script or PostPlus Cloud service that failed
- the exact boundary that blocked execution
- the missing input, dependency, account connection, hosted endpoint, or file
contract when known
- the next honest unblocker
Do not say a task is queued, partially completed, or recoverable unless a real artifact exists and the skill contract defines that recovery path.
For images or other media pasted into a local AI agent conversation, be explicit about whether the agent has access to the original asset bytes or only visual model context. If the host runtime does not expose a readable path, attachment handle, clipboard bytes, or binary source, do not claim that the original media was saved or uploaded. Tell the user to provide a local path or save the asset to disk before continuing.
Good shapes:
- "video-analysis stopped before provider analysis: the upload reached Gemini Files API, but the file never became ACTIVE within the hosted wait window. The real unblocker is provider file activation, not another local retry."
- "image-batch-runner cannot use image-gpt-image-2-text in this release: the skill runner and registry only expose hosted endpoints already present in the PostPlus media-generation catalog."
- "social-media-publisher preview succeeded, but publishing is still approval-gated; no post was sent."
- "I can see the pasted image in this conversation, but this Codex session has not exposed the original image bytes or a local file path to tools. Please save the image locally or provide its path, then I can upload that real file."
Continuity Copy
When a generation request claims continuity across segments, say whether that continuity is text-only or actually bound by image or audio evidence.
Prefer short, honest wording:
- "人物连续性这次还是文字约束;如果你愿意补一张人物图,会更稳。"
- "商品和 App UI 已有图片绑定,这部分会比人物更稳。"
- "声音这次还没锁;如果你在意角色连续性,我建议先固定一个 voice take。"
- "这版可以直接跑,但更准确地说是已约束,不是已锁定。"
Do not tell the user continuity is locked, confirmed, or guaranteed when the request is only text-constrained.
Keep It Brief
All of the above must fit in 1-2 sentences per interaction point. Proactive communication builds trust; verbose communication erodes it. If you have more to say, wait for the user to ask.
Related skills
How it compares
Pick postplus-shared over ad-hoc agent prompts when PostPlus skills need a shared safety model instead of one-shot campaign edits.
FAQ
What stages does postplus-shared require?
postplus-shared requires five separated stages—connect account, read data, normalize, diagnose and propose, then approve and apply—so agents never combine discovery reads with spend-affecting writes.
When must agents load postplus-shared?
Agents must load postplus-shared before any PostPlus ad-platform or research skill runs, whenever tasks touch ad accounts, campaign reads, diagnostics, or patches that could change spend.
Is Postplus Shared safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.