pippit-skill
Self-contained end-to-end Pippit.ai skill for AI creative generation/editing, generated asset downloads, overseas social video publishing, scheduling, task management, and analytics. Use when the user wants an end-to-end Pippit flow from prompt or reference image/video assets to generated video, local download, TikTok/Facebook Page/Instagram scheduling, publish task CRUD, or performance analysis; also use for Pippit access-key setup for either creation or publishing.
What this skill does
# Pippit Skill Workflow
Use this self-contained skill for overseas Pippit.ai workflows. It includes both backend script sets locally:
- `scripts/nest/`: Pippit Nest AI generation, editing, reference uploads, progress polling, and result downloads.
- `scripts/publish/`: Social account lookup, video upload, scheduled publishing, task CRUD, and analytics.
No external Pippit skill directories are required. For local commands, resolve `{baseDir}` to this skill folder. For detailed publishing payload fields, read [references/publishing-api.md](references/publishing-api.md).
Pippit Nest owns creative interpretation, prompt expansion, model choice, storyboarding, and workflow routing. The local agent should only upload references, pass the user's request through, poll progress, handle clarification requests, download results, and then publish the selected video when requested.
## Route the Request
- **Creative only**: Use `scripts/nest/` to generate/edit, poll, and download outputs. Stop after returning local files unless the user asks to publish.
- **Publish only**: Use `scripts/publish/` for existing local videos, bound account checks, scheduling, task CRUD, or analytics.
- **Create-to-publish**: Use `scripts/nest/` first, download the generated video, then use `scripts/publish/` to upload and schedule it.
- **Image-only output**: Publishing supports video only. If the user wants to publish an image/poster, ask whether to generate or convert it into a video first.
## Creative Request Handling
- Pass the user's creative or edit request to `scripts/nest/submit_run.py --message` as-is. Do not compress, summarize, rewrite, polish, translate, split, or add prompt language unless the user explicitly asks.
- Keep one creative task as one Nest submission. Do not turn a single request into per-shot, per-scene, or per-asset runs unless the user explicitly asks for separate runs.
- Do not manually write storyboards, infer camera plans, analyze styles, choose models, or orchestrate sub-prompts locally. Let Pippit Nest do that work.
- When reference images or videos are provided, upload them and submit the original request with the returned asset IDs. Do not replace the user's wording with your own description of the references.
- When Pippit asks for clarification or interaction, show the question to the user and submit the user's answer to the same `thread_id`; do not answer on the user's behalf.
## Access Key
Use one Pippit access key for both creation and publishing. Resolve it in this order:
1. `PIPPIT_ACCESS_KEY`
2. `PippitAccessKey`
3. Local cache at `$CODEX_HOME/pippit-skill/secrets.json`
Save a new key once with either local save script:
```bash
python3 {baseDir}/scripts/nest/save_access_key.py --access-key "..."
```
Do not invent, retrieve, or echo the full access key. If no key is available, respond in English: "No Pippit access key is configured. Please get one from https://www.pippit.ai, then provide it or save it before continuing."
## End-to-End Flow
1. Collect the minimum missing inputs:
- Creative request and any reference image/video files
- Target platform: TikTok, Facebook Page, or Instagram
- Bound platform account
- Title or caption
- Publish mode: default publish unless the user explicitly requests scheduled publish
- For scheduled publish: scheduled publish time with timezone
2. For Pippit generation/editing, tell the user it consumes credits and wait for explicit confirmation before calling `submit_run.py`.
3. Upload reference files one by one with `scripts/nest/upload_file.py` when references are provided.
4. Submit the user's original creative request as a single `scripts/nest/submit_run.py --message` value, with uploaded asset IDs when present.
5. Show `web_thread_link` when returned, then poll with `scripts/nest/get_thread.py` using both `thread_id` and `run_id`.
6. If Pippit asks for clarification or interaction, show the question to the user and submit their answer to the same thread.
7. Download generated result URLs with `scripts/nest/download_results.py`.
8. Choose the generated video file to publish. If multiple videos exist and the user has not indicated one, ask them to choose.
9. List bound social accounts with `scripts/publish/list_user_platform_account.py`. If no usable account exists, stop and direct the user to bind one on Pippit.
10. Upload the final local video with `scripts/publish/upload_file.py`.
11. If the user does not mention scheduling, treat the request as default publish; do not ask the user to choose a publish mode.
12. For default publish, convert it into an explicit near-future scheduled time, defaulting to current local time plus 5 minutes rounded up to the next minute unless the user requests a different short delay. For scheduled publish, require an explicit absolute publish time with timezone.
13. Restate platform, account, video file, caption/title, publish mode, and absolute schedule time. Wait for confirmation only when the platform/account/video/caption is missing or ambiguous, or when the user asked for scheduled publish without providing a concrete time. Do not ask solely because default publish mode or its near-future schedule time was inferred.
14. Create the scheduled task with `scripts/publish/batchcreate_schedule_task.py`. Pippit publishing is scheduled-only; never claim an immediate publish path exists.
15. Return task IDs/statuses, generated local file paths, and the Pippit thread link. If default publish was used, briefly mention that scheduled publish is also supported.
## Local Commands
Use [references/command-map.md](references/command-map.md) for full command examples. Common commands:
```bash
python3 {baseDir}/scripts/nest/submit_run.py --message "Create a product video..."
python3 {baseDir}/scripts/nest/get_thread.py --thread-id THREAD_ID --run-id RUN_ID --after-seq 0
python3 {baseDir}/scripts/nest/download_results.py --urls URL1 URL2 --output-dir ./pippit_output --prefix artifact
python3 {baseDir}/scripts/publish/list_user_platform_account.py
python3 {baseDir}/scripts/publish/upload_file.py /path/to/video.mp4
python3 {baseDir}/scripts/publish/batchcreate_schedule_task.py --platform tiktok --platform-user-id PLATFORM_USER_ID --asset-id ASSET_ID --title "TITLE_OR_CAPTION" --schedule-time "2026-05-15T20:00:00+08:00"
```
## Publishing Rules
- Publish only videos through `scripts/publish/`.
- Treat unspecified publish mode as default publish. Default publish means "publish soon" and must still be implemented as a near-future scheduled task.
- Do not schedule without a platform account, caption/title, publish mode, and explicit absolute schedule time. For default publish, compute the absolute near-future schedule time before creating the task.
- After successfully creating a default publish task, add a short note that scheduled publish is also supported.
- Resolve relative dates such as "today", "tomorrow", or "next Friday" into absolute dates before scheduling.
- For TikTok, Instagram, or Facebook-specific settings, use script flags and JSON override options. Do not guess complex platform payloads; read [references/publishing-api.md](references/publishing-api.md) first.
- One batch create call supports up to 10 tasks. Split larger batches deliberately.
## Follow-Up Operations
- To update, delete, or list scheduled tasks, use `scripts/publish/` task scripts and keep platform plus `platform_user_id` in the query.
- To analyze published posts, use `scripts/publish/list_videos.py` and summarize title, platform, publish time, views, likes, comments, shares, and engagement rate when available.
- To refine a generated asset before publishing, continue the same Pippit Nest thread with `scripts/nest/submit_run.py --thread-id`.
## Output Expectations
Keep the user-facing response concise but include the operational identifiers they need:
- Nest generation: `thread_id`, `run_id`, `web_thread_link`, downloaded local files
- Publishing: platform, `platform_userRelated in Ads & Marketing
ads
IncludedMulti-platform paid advertising audit and optimization skill. Analyzes Google, Meta, YouTube, LinkedIn, TikTok, Microsoft, and Apple Ads. 250+ checks with scoring, parallel agents, industry templates, and AI creative generation.
banana
IncludedAI image generation Creative Director powered by Google Gemini Nano Banana models. Use this skill for ANY request involving image creation, editing, visual asset production, or creative direction. Triggers on: generate an image, create a photo, edit this picture, design a logo, make a banner, visual for my anything, and all /banana commands. Handles text-to-image, image editing, multi-turn creative sessions, batch workflows, and brand presets.
rpg-migration-analyzer
IncludedAnalyzes legacy RPG (Report Program Generator) programs from AS/400 and IBM i systems for migration to modern Java applications. Extracts business logic from RPG III/IV/ILE source code, identifies data structures (D-specs), file operations (F-specs), program dependencies (CALLB/CALLP), and converts RPG constructs to Java equivalents. Generates migration reports, complexity estimates, and Java implementation strategies with POJO classes, JPA entities, and service methods. Use when modernizing AS/400 or IBM i legacy systems, analyzing RPG source files (.rpg, .rpgle, .RPGLE), converting RPG to Java, mapping data specifications to Java classes, planning legacy system migration, or when user mentions RPG analysis, Report Program Generator, RPG III/IV/ILE, AS/400 modernization, IBM i migration, packed decimal conversion, or mainframe application rewrite.
brand-library-architect
IncludedBuild a complete brand library for a product — visual asset render pipeline, brand documentation set (BRAND, COPY, MANIFESTO, BIOS, FAQ, GLOSSARY, TONE, PRICING), open-source convention files (README, CONTRIBUTING, SECURITY, CODE_OF_CONDUCT), and a self-contained press kit. This skill should be used when the user asks to "build a brand library / brand kit / press kit / brand assets" for a product, "set up a brand library workflow," "create a positioning manifesto plus visual identity," or any combination of brand documentation + visual asset pipeline. Apply phase-by-phase or run end-to-end. Templates are product-agnostic and use {{TOKEN}} placeholders the skill prompts the user to fill.
writing-tech-post
IncludedAuthors engineering blog posts end-to-end: launch deep-dives, incident postmortems, architecture migrations, performance case studies, tutorials, AI/agent system writeups, security disclosures, and research-to-product translations. Picks the correct archetype, plans the abstraction ladder, enforces an evidence cadence (diagrams, benchmarks, profiles, traces, code, ablations), tunes voice against publisher house styles (Datadog, Vercel, GitHub, AWS, Meta, Cloudflare, Jane Street), and runs a pre-publish gate for narrative momentum and disclosure ethics. Use when drafting a new engineering post, restructuring a draft that feels flat, deciding which evidence form belongs where, validating that depth and product context are balanced, or preparing a postmortem, migration, or performance narrative for external publication. Do not use for API reference documentation, README authoring, marketing copy, release notes, generic SEO content, ghost-written executive thought leadership, or non-engineering long-form essays.
blog-google
IncludedGoogle API integration for blog performance: PageSpeed Insights, CrUX Core Web Vitals with 25-week history, Search Console performance, URL Inspection, Indexing API, GA4 organic traffic, NLP entity analysis for E-E-A-T, YouTube video search for embedding, and Google Ads Keyword Planner. Progressive feature availability based on credential tier (API key, OAuth/service account, GA4, Ads). Shares config with claude-seo at ~/.config/claude-seo/google-api.json. Use when user says "google data", "page speed", "core web vitals", "search console", "indexation", "GA4", "keyword research", "nlp entities", "blog performance", "youtube search", "google api setup".