/SKILL.md
Complete genviral Partner API automation. Create and schedule posts (video + slideshow) across TikTok, Instagram, and any supported platform. Includes slideshow generation, file uploads, template/pack management, analytics, and full content pipeline automation.
npx skillsauth add fdarkaou/genviral-skill genviralInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
TL;DR: Wraps genviral's Partner API into 60+ bash commands. Core flow:
get-pack→ analyze images (metadata + vision) →generatewithpinned_images→render→ visual review (hard gate) →create-post→ log toworkspace/performance/log.json. TikTok copy flow:copy-tiktok-preview→copy-tiktok-import(with exactly one ofpack_idorpack_images). Studio AI:studio-models→studio-generate-image(sync) orstudio-generate-video→studio-video-status --poll(async). Folders:create-folder→folder-items-addto organize files/slideshows. Analytics correlation: treatanalyticsId/id,platformPostId, andgenviralPostIdas different identifiers; usegenviralPostIdorexternalIdto map analytics rows back to created posts. Auth viaGENVIRAL_API_KEY. Config indefaults.yaml. Instance data inworkspace/.
trend-brief) for hashtags, sounds, creators, posting windows, and hook anglesImportant analytics identity rule:
analyticsId is the analytics-row ID (id is a legacy alias of the same value)platformPostId is the platform-native post/video IDgenviralPostId is the originating Genviral post ID when correlation succeedsexternalId is the originating Partner API external_id when presentMEDIA_UPLOAD, the draft/inbox publish_id is not the final public TikTok video ID. Correlation is best-effort for recent unresolved drafts after the user actually publishes in TikTok, so older rows can still show genviralPostId / externalId as null.All configuration in defaults.yaml. Secrets via environment variables. Everything posted shows up in the Genviral dashboard.
If fresh install, read docs/setup.md and walk the user through onboarding conversationally:
No hardcoded defaults. Ask the user what they prefer and adapt. Everything done through this skill shows up in the Genviral dashboard, so the user always has full visibility and control.
genviral/
SKILL.md # This file (kernel + routing)
README.md # Human-facing overview
defaults.yaml # API config and defaults
docs/
setup.md # Onboarding guide (conversational, 5 phases)
api/
accounts-files.md # accounts, upload, list-files
folders.md # folder CRUD, move, ancestors, items management
posts.md # create-post, update-post, retry, list, get, delete
slideshows.md # generate/render/update + TikTok copy preview/import + text styles
packs.md # pack CRUD + smart image selection (MANDATORY reading for any pack workflow)
templates.md # template CRUD + create-from-slideshow
analytics.md # all analytics commands
studio.md # Studio AI: generate images/videos, list models, poll status
subscription.md # subscription status, credits, tier
pipeline.md # content pipeline, performance loop, CTA testing, platform tips
errors.md # error codes and troubleshooting
references/
analytics-loop.md # Full analytics feedback loop and weekly review process
competitor-research.md # How to research competitors
prompts/
slideshow.md # Prompt templates for slideshow generation
hooks.md # Prompt templates for hook brainstorming
workspace/ # All instance/customer data (override with GENVIRAL_WORKSPACE_DIR)
content/
scratchpad.md # Working content plan and drafts
calendar.json # Upcoming planned posts
context/
product.md # Product description, value props, target audience
brand-voice.md # Tone, style, do's and don'ts
niche-research.md # Platform research for the niche
hooks/
library.json # Hook instances (grows over time, tracks performance)
formulas.md # Hook formula patterns and psychology
performance/
log.json # CANONICAL post record (single source of truth)
hook-tracker.json # Hook and CTA tracking with metrics (the feedback loop)
insights.md # Agent learnings from performance data
weekly-review.md # Weekly review notes
competitor-insights.md # Competitor research findings
scripts/
genviral.sh # Main API wrapper (all commands)
update-skill.sh # Self-updater
Load only what you need for the current task:
| Task | Read |
|------|------|
| Account discovery, file upload | docs/api/accounts-files.md |
| Folder management (create, list, move, delete, items) | docs/api/folders.md |
| Create, update, list, delete posts | docs/api/posts.md |
| Slideshow generation, TikTok copy import, rendering, editing, text styles | docs/api/slideshows.md |
| Pack management, image selection (ANY pack workflow) | docs/api/packs.md |
| Template creation and management | docs/api/templates.md |
| Analytics queries and target management | docs/api/analytics.md |
| Studio AI: generate images, videos, list models | docs/api/studio.md |
| Subscription: check credits, tier, renewal dates | docs/api/subscription.md |
| Research a specific niche quickly (trend + competitors + hooks) | docs/api/analytics.md, docs/references/competitor-research.md, docs/prompts/hooks.md |
| Full content pipeline, performance loop, CTA testing | docs/api/pipeline.md |
| Error codes, troubleshooting | docs/api/errors.md |
When asked things like "research this niche", "find what works in this niche", or "give me niche intelligence":
trend-brief first for the niche keyword (7d baseline, then 24h for freshness if needed).docs/references/competitor-research.md (3-5 accounts minimum).workspace/performance/competitor-insights.md and use them in subsequent content prompts.When the user wants to copy a TikTok slideshow idea but generate new visuals:
copy-tiktok-preview first and capture preview_id, source image URLs, and slide count.copy-tiktok-import with exactly one pack source (pack_id or pack_images) so text overlays are extracted and mapped into editable slides.google/nano-banana-2 with each source slide image as reference input:
studio-generate-image --model-id "google/nano-banana-2" --image-urls "<source_url>" --prompt "<product-aware transformation prompt>"workspace/context/product.md so generated visuals stay relevant to the advertised product.update --slides-file ...) while preserving/editing imported text elements.render) and review (review) before posting; never skip visual QA.analytics-posts --json.genviralPostId for matching analytics rows back to Genviral posts.externalId.analyticsId/legacy id as the analytics-row identifier only.platformPostId as the platform-native TikTok/Instagram/YouTube post identifier only.MEDIA_UPLOAD), do not assume a draft upload is correlated immediately. The draft publish_id becomes matchable only after the human posts from TikTok and Genviral resolves it to the final public TikTok video ID.These apply regardless of what docs you've loaded:
ALWAYS use pinned_images when generating a slideshow with a pack. Never call generate with just --pack-id — the server will pick random images. Read docs/api/packs.md before any pack workflow.
ALWAYS visually review every rendered slide before posting. If any slide fails readability, fix it. This is a hard gate — not a suggestion.
ALWAYS log to workspace/performance/log.json immediately after posting. This is the canonical record.
ALWAYS add a hook-tracker entry after posting. No tracking = no learning.
Never use em-dashes in any generated content.
Respect workspace/ — all instance data lives here. Do not write state files to the skill root.
/path/to/genviral/scripts/genviral.sh <command> [options]
Requires GENVIRAL_API_KEY as an environment variable (format: public_id.secret). Loads defaults from defaults.yaml. Set GENVIRAL_WORKSPACE_DIR to override the workspace path (defaults to workspace/ relative to the skill dir).
This skill includes a self-updater that keeps skill-owned files in sync with the latest version from fdarkaou/genviral-skill.
bash scripts/update-skill.sh # check + apply if updates available
bash scripts/update-skill.sh --dry-run # preview only, no changes
bash scripts/update-skill.sh --force # force re-apply even if already current
What gets updated (skill-owned): README.md, SKILL.md, scripts/, docs/ (all subdirs)
What never gets touched (user-owned): workspace/ — your data, context, hooks, and performance logs are always preserved.
post_mode: MEDIA_UPLOAD to save to drafts inbox for audio additionMEDIA_UPLOAD) create the Genviral post immediately, but the final public TikTok video ID exists only after the user publishes in TikTok. In analytics-posts, use genviralPostId or externalId for correlation; treat analyticsId/legacy id as the analytics-row ID and platformPostId as the TikTok-native ID.This repo includes the meta-ads companion guide in the meta-ads/ directory — an autonomous Meta (Facebook/Instagram) Ads manager and 8-stage AI campaign builder that uses Genviral's Studio API for ad creative generation.
See meta-ads/INSTRUCTIONS.md for the bundled workflow and setup guide.
Also available standalone: fdarkaou/meta-ads-skill
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------
tools
A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.