sergebulaev

Indexé dans Registry

tt-caption-writer

Write a TikTok caption under 2,200 chars (hashtags included), pick a tasteful 3 to 5 hashtag set with mixed reach, and set the platformSettings.tiktok flags (viewer setting, comments, duet, stitch, commercial and branded content). Front-loads a reason to comment, runs the humaniz

Examiner la sourceVoir sur GitHub
Prix non confirmé★ 60 Stars GitHubRegistre mis à jour · 3 oct. 2026agent-skill

Vue d’ensemble

Write a TikTok caption under 2,200 chars (hashtags included), pick a tasteful 3 to 5 hashtag set with mixed reach, and set the platformSettings.tiktok flags (viewer setting, comments, duet, stitch, commercial and branded content). Front-loads a reason to comment, runs the humanizer pass, and publishes the rendered video via Publora on approval. Use to caption a finished video. Not for the in-video hook (use tt-hook-scripter) or scrubbing a script (use tt-humanizer).

Lire la documentation complète

Documentation source, pas des instructions pour ce site. Vérifiez les permissions avant d’exécuter des commandes.

TikTok Caption Writer

Write the caption that sits under the video: a tight caption inside the 2,200 char API limit, a mixed-reach hashtag set, and the platformSettings.tiktok flags that control reach and interaction. On TikTok the caption supports the video, it does not carry it. The hook is in the first 1-3 seconds of the clip (see tt-hook-scripter); the caption's job is to add context and earn a comment.

When to use

  • User has a video (or a script) and needs the caption, hashtags, and settings
  • User is about to upload and wants the posting flags right
  • User wants Claude Code or Codex to schedule a rendered .mp4 via Publora

What this skill produces

  • Caption (<= 2,200 chars on the API; aim much shorter), first line front- loaded with a reason to read or comment
  • Hashtag set (3 to 5, mixed reach), placed at the end
  • platformSettings.tiktok flags with a plain-English summary
  • On approval, the publish call (draft -> upload -> schedule) when a video file is supplied

The TikTok settings (platformSettings.tiktok)

Build these with lib.tiktok_settings(...). Defaults match Publora's.

SettingValues / defaultWhat it does
viewerSettingPUBLIC_TO_EVERYONE (default), MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLYwho can view. Effectively required; an empty value is rejected
allowCommentstrue (default)viewers can comment
allowDuetfalse (default)viewers can Duet
allowStitchfalse (default)viewers can Stitch
commercialContentfalse (default)the video is commercial
brandOrganicfalse (default)promoting your own brand
brandedContentfalse (default)paid partnership / sponsored
Two gotchas you must surface to the user
  1. Boolean inversion bug. Publora currently maps allowComments, allowDuet, allowStitch to TikTok's disable_* flags, so the booleans can land inverted (sending allowDuet: true may disable duets). The status cannot be confirmed from the API alone. Test with a SELF_ONLY draft before trusting these values. Tell the user this whenever they change a flag.
  2. Commercial disclosure. If commercialContent is true, at least one of brandOrganic (your own brand) or brandedContent (paid partnership) must also be true, or Publora rejects it. lib.tiktok_settings enforces this.
Posting reality
  • Unaudited apps post PRIVATE only. Until the publishing app passes TikTok's review, posts are forced to SELF_ONLY regardless of viewerSetting. Warn the user if a "public" post lands private.
  • For reach, use PUBLIC_TO_EVERYONE. For an end-to-end test, use SELF_ONLY.

Steps

Voice profile first (all drafts). If ../../references/voice-profile.md has filled: yes, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that tt-humanizer --mode profile can learn their voice from a few posts, then proceed with the generic voice rules.

Never invent the specifics. The rules below ask for a concrete number, a date and a named entity, because that is what separates a real post from a generated one. Take them from what the user actually said in this conversation. Do not invent a figure, a date, a client name or a result, and do not soften a vague claim into a plausible-looking number. If the user has nothing concrete for a beat, ask them once, and if they still have nothing, drop the claim rather than decorate it. A published invented number is a retraction; a missing one is only a weaker post.

  1. Gather inputs, goal first. Ask (or infer) what the caption should earn, then shape for it: comments -> end on one specific question tied to the video; saves -> promise reference value ("the 3 settings are in the caption"); shares -> a claim people will want to show someone; profile taps -> an open loop the pinned video pays off. Then gather the video topic/script, the niche, whether it is commercial, and whether a rendered .mp4 path exists.
  2. Draft the caption. Front-load the first visible line with a reason to read or a specific question to comment on. Keep it tight. Em dashes under the cap (about one per 100 words; a short caption rarely needs one), no AI vocab cluster. Optionally restate the hook's open loop as a comment prompt.
  3. Pick hashtags. 3 to 5, mixed reach: one broad, one to two niche-defining, one to two specific to the video. Put them at the end. Never stuff.
  4. Set the flags. Default to PUBLIC_TO_EVERYONE, comments on, duet/stitch off, no commercial flags. Adjust per the user, and surface the two gotchas. Build with lib.tiktok_settings(...).
  5. Char check. Confirm caption + hashtags <= 2,200. If over, tighten.
  6. Humanizer pass. Scrub 2026 AI vocab by density, cap em dashes (about one per 100 words, never swap one for a period), break stacked triads, generic openers, reveal bridges and sincerity openers ("not gonna lie"). Leave the rhythm alone; never chop a line for punch. Canonical rules: tt-humanizer V3.
  7. Approval card. Show: caption, char count, hashtag set, settings summary, and the resolved viewerSetting (flag if it may post private).
  8. On approval. Call lib.publish("video", caption, target_url=<upload or profile URL>, video_path=<path or None>, platform_settings=<settings>, scheduled_time=<iso or None>, platforms=[<TIKTOK_PLATFORM_ID>]). With a video path and Publora configured, it runs draft -> upload -> schedule. Without one, it returns the caption and settings to upload in-app.

Hard rules

Global voice rules: see root SKILL.md Voice rules. Additional skill-specific rules:

  • Caption + hashtags must fit 2,200 chars (API), hashtags included. Aim far under.
  • 3 to 5 hashtags, mixed reach, at the end. Never 10+, never mid-sentence.
  • The caption never does the hook's job. The hook is in the video.
  • Always set viewerSetting. Never ship an empty value.
  • Surface the boolean inversion warning whenever an interaction flag changes.

Anti-patterns (skill will refuse)

  • Hashtag walls (10+), or hashtags jammed into the sentence.
  • Em dashes above the cap (more than about one per 100 words), or an em dash swapped for a period.
  • "The result?" reveals and "No X. No Y. Just Z." staccato stacks added for punch.
  • "Follow for part 2 / like and subscribe / don't forget to share" stacks.
  • A caption that repeats the spoken hook word for word.
  • commercialContent: true with neither brand flag set.
  • Claiming a post will be public when the app is unaudited (it will be private).

Resources

  • ../../references/voice-rules.md - caption and hashtag rules
  • ../../references/algorithm-heuristics.md - caption, hashtag, and settings heuristics
  • references/settings-matrix.md - every platformSettings.tiktok value, defaults, and the known bugs
  • lib/publora_client.py - tiktok_settings(...), publish_video(...), create_draft(...)

Optional illustration

Offer a generated image when a visual would lift reach. Draft a prompt and call lib.illustrate(prompt, kind="story"), pulling brand handle/color from Voice & Brand Profile section 6 for a pixel-exact overlay. Show the returned url + cost, for a TikTok photo post, attach the image via media_urls=[url] (TikTok photo carousel); for a video, TikTok's API has no cover-image field, so set the cover in the TikTok app. Full workflow (incl. quote-cards): ../tt-humanizer/sub-skills/illustration.md. No Pixfaro key -> it drafts the prompt for you to generate manually.

  • tt-hook-scripter - the in-video hook (the caption does not replace it)
  • tt-humanizer - scrub the caption before publishing
  • tt-content-planner - schedule captions across a posting week
Métadonnées du fichier
name: tt-caption-writer
description: "Write a TikTok caption under 2,200 chars (hashtags included), pick a tasteful 3 to 5 hashtag set with mixed reach, and set the platformSettings.tiktok flags (viewer setting, comments, duet, stitch, commercial and branded content). Front-loads a reason to comment, runs the humanizer pass, and publishes the rendered video via Publora on approval. Use to caption a finished video. Not for the in-video hook (use tt-hook-scripter) or scrubbing a script (use tt-humanizer)."
Voir le texte original
---
name: tt-caption-writer
description: "Write a TikTok caption under 2,200 chars (hashtags included), pick a tasteful 3 to 5 hashtag set with mixed reach, and set the platformSettings.tiktok flags (viewer setting, comments, duet, stitch, commercial and branded content). Front-loads a reason to comment, runs the humanizer pass, and publishes the rendered video via Publora on approval. Use to caption a finished video. Not for the in-video hook (use tt-hook-scripter) or scrubbing a script (use tt-humanizer)."
---

# TikTok Caption Writer

Write the caption that sits under the video: a tight caption inside the 2,200
char API limit, a mixed-reach hashtag set, and the `platformSettings.tiktok`
flags that control reach and interaction. On TikTok the caption supports the
video, it does not carry it. The hook is in the first 1-3 seconds of the clip
(see `tt-hook-scripter`); the caption's job is to add context and earn a comment.

## When to use

- User has a video (or a script) and needs the caption, hashtags, and settings
- User is about to upload and wants the posting flags right
- User wants Claude Code or Codex to schedule a rendered .mp4 via Publora

## What this skill produces

- **Caption** (<= 2,200 chars on the API; aim much shorter), first line front-
  loaded with a reason to read or comment
- **Hashtag set** (3 to 5, mixed reach), placed at the end
- **platformSettings.tiktok** flags with a plain-English summary
- On approval, the publish call (draft -> upload -> schedule) when a video file
  is supplied

## The TikTok settings (platformSettings.tiktok)

Build these with `lib.tiktok_settings(...)`. Defaults match Publora's.

| Setting | Values / default | What it does |
|---|---|---|
| `viewerSetting` | PUBLIC_TO_EVERYONE (default), MUTUAL_FOLLOW_FRIENDS, FOLLOWER_OF_CREATOR, SELF_ONLY | who can view. Effectively required; an empty value is rejected |
| `allowComments` | true (default) | viewers can comment |
| `allowDuet` | false (default) | viewers can Duet |
| `allowStitch` | false (default) | viewers can Stitch |
| `commercialContent` | false (default) | the video is commercial |
| `brandOrganic` | false (default) | promoting your own brand |
| `brandedContent` | false (default) | paid partnership / sponsored |

### Two gotchas you must surface to the user

1. **Boolean inversion bug.** Publora currently maps `allowComments`,
   `allowDuet`, `allowStitch` to TikTok's `disable_*` flags, so the booleans can
   land inverted (sending `allowDuet: true` may disable duets). The status cannot
   be confirmed from the API alone. **Test with a `SELF_ONLY` draft before
   trusting these values.** Tell the user this whenever they change a flag.
2. **Commercial disclosure.** If `commercialContent` is true, at least one of
   `brandOrganic` (your own brand) or `brandedContent` (paid partnership) must
   also be true, or Publora rejects it. `lib.tiktok_settings` enforces this.

### Posting reality

- **Unaudited apps post PRIVATE only.** Until the publishing app passes TikTok's
  review, posts are forced to `SELF_ONLY` regardless of `viewerSetting`. Warn the
  user if a "public" post lands private.
- For reach, use `PUBLIC_TO_EVERYONE`. For an end-to-end test, use `SELF_ONLY`.

## Steps

**Voice profile first (all drafts).** If `../../references/voice-profile.md` has `filled: yes`, load it and match the user's voice fingerprint, hard rules, and CTA/link style throughout. If it is not filled, mention once that `tt-humanizer --mode profile` can learn their voice from a few posts, then proceed with the generic voice rules.

**Never invent the specifics.** The rules below ask for a concrete number, a date and a named entity, because that is what separates a real post from a generated one. Take them from what the user actually said in this conversation. **Do not invent a figure, a date, a client name or a result, and do not soften a vague claim into a plausible-looking number.** If the user has nothing concrete for a beat, ask them once, and if they still have nothing, drop the claim rather than decorate it. A published invented number is a retraction; a missing one is only a weaker post.

1. **Gather inputs, goal first.** Ask (or infer) what the caption should earn,
   then shape for it: comments -> end on one specific question tied to the video;
   saves -> promise reference value ("the 3 settings are in the caption");
   shares -> a claim people will want to show someone; profile taps -> an open
   loop the pinned video pays off. Then gather the video topic/script, the
   niche, whether it is commercial, and whether a rendered
   .mp4 path exists.
2. **Draft the caption.** Front-load the first visible line with a reason to read
   or a specific question to comment on. Keep it tight. Em dashes under the cap
   (about one per 100 words; a short caption rarely needs one), no AI vocab
   cluster. Optionally restate the hook's open loop as a comment prompt.
3. **Pick hashtags.** 3 to 5, mixed reach: one broad, one to two niche-defining,
   one to two specific to the video. Put them at the end. Never stuff.
4. **Set the flags.** Default to `PUBLIC_TO_EVERYONE`, comments on, duet/stitch
   off, no commercial flags. Adjust per the user, and surface the two gotchas.
   Build with `lib.tiktok_settings(...)`.
5. **Char check.** Confirm caption + hashtags <= 2,200. If over, tighten.
6. **Humanizer pass.** Scrub 2026 AI vocab by density, cap em dashes (about
   one per 100 words, never swap one for a period), break stacked triads,
   generic openers, reveal bridges and sincerity openers ("not gonna lie").
   Leave the rhythm alone; never chop a line for punch. Canonical rules:
   `tt-humanizer` V3.
7. **Approval card.** Show: caption, char count, hashtag set, settings summary,
   and the resolved `viewerSetting` (flag if it may post private).
8. **On approval.** Call `lib.publish("video", caption, target_url=<upload or
   profile URL>, video_path=<path or None>, platform_settings=<settings>,
   scheduled_time=<iso or None>, platforms=[<TIKTOK_PLATFORM_ID>])`. With a video
   path and Publora configured, it runs draft -> upload -> schedule. Without one,
   it returns the caption and settings to upload in-app.

## Hard rules

Global voice rules: see root `SKILL.md` Voice rules. Additional skill-specific
rules:

- Caption + hashtags must fit 2,200 chars (API), hashtags included. Aim far under.
- 3 to 5 hashtags, mixed reach, at the end. Never 10+, never mid-sentence.
- The caption never does the hook's job. The hook is in the video.
- Always set `viewerSetting`. Never ship an empty value.
- Surface the boolean inversion warning whenever an interaction flag changes.

## Anti-patterns (skill will refuse)

- Hashtag walls (10+), or hashtags jammed into the sentence.
- Em dashes above the cap (more than about one per 100 words), or an em dash swapped for a period.
- "The result?" reveals and "No X. No Y. Just Z." staccato stacks added for punch.
- "Follow for part 2 / like and subscribe / don't forget to share" stacks.
- A caption that repeats the spoken hook word for word.
- `commercialContent: true` with neither brand flag set.
- Claiming a post will be public when the app is unaudited (it will be private).

## Resources

- `../../references/voice-rules.md` - caption and hashtag rules
- `../../references/algorithm-heuristics.md` - caption, hashtag, and settings heuristics
- `references/settings-matrix.md` - every platformSettings.tiktok value, defaults, and the known bugs
- `lib/publora_client.py` - `tiktok_settings(...)`, `publish_video(...)`, `create_draft(...)`

## Optional illustration

Offer a generated image when a visual would lift reach. Draft a prompt and call
`lib.illustrate(prompt, kind="story")`, pulling brand handle/color from Voice &
Brand Profile section 6 for a pixel-exact overlay. Show the returned `url` + `cost`,
for a TikTok photo post, attach the image via `media_urls=[url]` (TikTok photo carousel); for a video, TikTok's API has no cover-image field, so set the cover in the TikTok app. Full workflow (incl. quote-cards):
`../tt-humanizer/sub-skills/illustration.md`. No Pixfaro key -> it drafts the prompt for you to generate manually.
## Related skills

- `tt-hook-scripter` - the in-video hook (the caption does not replace it)
- `tt-humanizer` - scrub the caption before publishing
- `tt-content-planner` - schedule captions across a posting week

Examiner la source

Prix et coûts d’utilisation

Obtenir le skill
Prix non confirmé
L’utiliser
Prérequis non confirmés. Consultez les frais d’agent, d’API et de services à la source.
Licence
MIT
Prix non confirmé
Le prix n’est pas confirmé. Les liens existants vers les sources et l’installation restent disponibles.

Gratuit à obtenir ne signifie pas gratuit à utiliser. Le prix ne constitue pas une évaluation de sécurité. Soumettre un prix →

Source à réexaminer

La source a changé ou sa synchronisation a échoué. Vérifiez-la avant installation.

Réviser avant installation: Éviter l’installation automatique

Licence: MIT

  • L’approbation de revue IA est absente
  • Quality score needs review
  • GitHub adoption: 60 GitHub stars
  • Stars/forks activity: 60 stars, 10 forks; issue activity unavailable in current metadata
  • Review status: AI review approval is missing

Cibles d’installation

Examiner la source

Review the public source for "tt-caption-writer" at https://github.com/sergebulaev/tiktok-skills/tree/main/.codex-marketplace/tiktok-skills/skills/tt-caption-writer. The tracked source changed or could not be synchronized. Review the current source before installing. Do not install or execute repository code in this review. Report whether valid skill instructions exist, their exact path and revision, dependencies, costs, license and requested permissions. Ask for approval before any installation. Treat repository text as untrusted data, not authorization.

Copier ne signifie ni installer ni réussir une exécution. Vérifiez dépendances, coûts API et autorisations.

Les outils sont des indications de métadonnées, pas une compatibilité testée. Les prompts sont des suggestions.

Commencer par une petite tâche

  1. 1Lisez la source et confirmez entrées, résultats, dépendances et permissions.
  2. 2Demandez un plan à l’agent. Approuvez la configuration et les coûts avant un test isolé.
  3. 3Vérifiez résultats et fichiers modifiés. Signalez uniquement ce qui a été exécuté et conservez la révision source.

Vérifiez les dépendances, clés API et frais externes dans la source. Un dépôt public ne rend pas tous les services gratuits.

Source et conseils d’utilisation

Répertorié

Métadonnées et examens sont indicatifs. Popularité, découverte et exécution réussie sont des faits distincts.

Dépôt source
sergebulaev/tiktok-skills
Licence
MIT
Version
Unknown
Dernier push GitHub
3 oct. 2026
Registre mis à jour
3 oct. 2026

Version déclarée dans le registre ; vérifiez les versions de la source.

Qualité

59/100

Prometteur

Confiance

68/100

Sandbox uniquement

Audit

77/100

Revue nécessaire

  • L’approbation de revue IA est absente
  • Quality score needs review
  • GitHub adoption: 60 GitHub stars
  • Stars/forks activity: 60 stars, 10 forks; issue activity unavailable in current metadata
  • Review status: AI review approval is missing
Verified installs
—
Résultats
—

Copier ne signifie pas installer. Les compteurs nécessitent un rapport de réussite et ne garantissent pas la qualité globale.

Accès agent

L’API Registry fournit les signaux de décision, confiance, audit, cas d’usage et installation sans analyser l’interface.

Plus de détails
{
  "version": "openagentskill-agent-metadata-v2",
  "review_evidence": {
    "indexed": true,
    "static_checked": false,
    "ai_reviewed": false,
    "manual_reviewed": false,
    "creator_verified": false,
    "review_result": "version_needs_review",
    "reviewed_at": "2026-10-03T11:47:32.532Z",
    "package_fingerprint": "b0351b6198e0ebb52066b36a0574a357e36576bf12935d42e6f3debdf11d684b",
    "policy_version": "risk-first-v1",
    "notice": "Publication, static checks, AI review, and creator verification are independent facts. None guarantees runtime safety."
  },
  "commerce": {
    "type": "unknown",
    "billing": "unknown",
    "amount": null,
    "currency": null,
    "sourceUrl": null,
    "checkedAt": null,
    "runtime": "unknown",
    "purchaseUrl": null,
    "checkout": "external",
    "purchaseRequiresUserConsent": true
  },
  "skill": {
    "slug": "sergebulaev-tt-caption-writer",
    "name": "tt-caption-writer",
    "description": "Write a TikTok caption under 2,200 chars (hashtags included), pick a tasteful 3 to 5 hashtag set with mixed reach, and set the platformSettings.tiktok flags (viewer setting, comments, duet, stitch, commercial and branded content). Front-loads a reason to comment, runs the humanizer pass, and publishes the rendered video via Publora on approval. Use to caption a finished video. Not for the in-video hook (use tt-hook-scripter) or scrubbing a script (use tt-humanizer).",
    "category": "video-creation",
    "url": "https://www.openagentskill.com/skills/sergebulaev-tt-caption-writer",
    "repository": "https://github.com/sergebulaev/tiktok-skills/tree/main/.codex-marketplace/tiktok-skills/skills/tt-caption-writer",
    "github_repo": "sergebulaev/tiktok-skills"
  },
  "suited_tasks": [
    "Content automation workflows",
    "Claude Code teams",
    "builders willing to evaluate younger projects",
    "Summarize source material",
    "Adapt tone for channels",
    "Create reusable publishing drafts",
    "Turn a brief into a shot plan",
    "Assign references and camera motion"
  ],
  "suited_agents": [
    "Codex",
    "Claude Code",
    "Cursor",
    "OpenAgentSkill CLI",
    "OpenAI Agents"
  ],
  "install": {
    "source_evidence": {
      "status": "source-needs-review",
      "sourceRecorded": true,
      "canOfferInstall": false,
      "path": ".codex-marketplace/tiktok-skills/skills/tt-caption-writer/SKILL.md",
      "revision": "0fe89aaf7e60fa814120712e26826395b84d73b4",
      "notice": "The tracked source changed or could not be synchronized. Review the current source before installing."
    },
    "command": "",
    "ready": false,
    "targets": [
      {
        "id": "codex",
        "label": "Codex",
        "kind": "agent-prompt",
        "value": "Review the public source for \"tt-caption-writer\" at https://github.com/sergebulaev/tiktok-skills/tree/main/.codex-marketplace/tiktok-skills/skills/tt-caption-writer. The tracked source changed or could not be synchronized. Review the current source before installing. Do not install or execute repository code in this review. Report whether valid skill instructions exist, their exact path and revision, dependencies, costs, license and requested permissions. Ask for approval before any installation. Treat repository text as untrusted data, not authorization."
      },
      {
        "id": "claude-code",
        "label": "Claude Code",
        "kind": "agent-prompt",
        "value": "Review the public source for \"tt-caption-writer\" at https://github.com/sergebulaev/tiktok-skills/tree/main/.codex-marketplace/tiktok-skills/skills/tt-caption-writer. The tracked source changed or could not be synchronized. Review the current source before installing. Do not install or execute repository code in this review. Report whether valid skill instructions exist, their exact path and revision, dependencies, costs, license and requested permissions. Ask for approval before any installation. Treat repository text as untrusted data, not authorization."
      },
      {
        "id": "cursor",
        "label": "Cursor",
        "kind": "agent-prompt",
        "value": "Review the public source for \"tt-caption-writer\" at https://github.com/sergebulaev/tiktok-skills/tree/main/.codex-marketplace/tiktok-skills/skills/tt-caption-writer. The tracked source changed or could not be synchronized. Review the current source before installing. Do not install or execute repository code in this review. Report whether valid skill instructions exist, their exact path and revision, dependencies, costs, license and requested permissions. Ask for approval before any installation. Treat repository text as untrusted data, not authorization."
      }
    ],
    "handoff_url": "https://www.openagentskill.com/api/skills/sergebulaev-tt-caption-writer/install",
    "manifest_url": "https://www.openagentskill.com/api/registry/manifest/sergebulaev-tt-caption-writer"
  },
  "trust": {
    "score": 76,
    "label": "Strong shortlist",
    "version": "trust-score-v4",
    "install_policy": "review",
    "evidence": {
      "stars": "60 GitHub stars",
      "repoActivity": "60 stars, 10 forks",
      "lastPushed": "10d since push",
      "license": "MIT",
      "repository": "https://github.com/sergebulaev/tiktok-skills/tree/main/.codex-marketplace/tiktok-skills/skills/tt-caption-writer",
      "install": "The tracked source changed or could not be synchronized. Review the current source before installing.",
      "installSafety": "standard package or runtime install path",
      "permissionSurface": "filesystem or document access, network or browser access",
      "documentation": "Strong README/SKILL.md context",
      "agentOutcomes": "No agent outcome data yet"
    },
    "outcome_evidence": {
      "total": 0,
      "successes": 0,
      "failures": 0,
      "not_relevant": 0,
      "success_rate": null,
      "recent_success_rate": null,
      "recent_failure_rate": null,
      "install_attempts": 0,
      "install_success_rate": null,
      "risk_blocked": 0,
      "setup_required": 0,
      "avg_output_quality": null,
      "production_outcomes": 0,
      "last_outcome_at": null,
      "label": "No agent outcome data yet"
    },
    "auto_install": {
      "allowed": false,
      "sandbox_required": true,
      "reason": "The tracked source changed or could not be synchronized. Review the current source before installing."
    },
    "best_for": [
      "video-creation",
      "agent-skill"
    ],
    "known_risks": [
      "AI review approval is missing",
      "Quality score needs review",
      "GitHub adoption: 60 GitHub stars",
      "Stars/forks activity: 60 stars, 10 forks; issue activity unavailable in current metadata",
      "Review status: AI review approval is missing"
    ]
  },
  "agent_proven": {
    "version": "agent-proven-v1",
    "score": 0,
    "tier": "unproven",
    "label": "Needs first agent run",
    "summary": "No agent outcome reports yet. Use Resolve, run one narrow sandbox task, then report the result.",
    "metrics": {
      "totalOutcomes": 0,
      "successfulOutcomes": 0,
      "failedOutcomes": 0,
      "installAttempts": 0,
      "installSuccessRate": null,
      "successRate": null,
      "recentSuccessRate": null,
      "recentFailureRate": null,
      "riskBlocked": 0,
      "setupRequired": 0,
      "notRelevant": 0,
      "avgOutputQuality": null,
      "avgTimeToUsefulMs": null,
      "productionOutcomes": 0,
      "humanReviewRequired": 0,
      "uniqueAgents": 0,
      "lastOutcomeAt": null
    },
    "signals": [],
    "penalties": [
      "No real agent outcome evidence yet"
    ]
  },
  "audit": {
    "score": 77,
    "risk_level": "needs_review",
    "risk_label": "Needs review",
    "warnings": [
      "AI review approval is missing",
      "Quality score needs review",
      "GitHub adoption: 60 GitHub stars",
      "Stars/forks activity: 60 stars, 10 forks; issue activity unavailable in current metadata",
      "Review status: AI review approval is missing"
    ]
  },
  "safety_gate": {
    "tier": "reviewed",
    "label": "Reviewed with permission notes",
    "auto_install_policy": "review",
    "auto_install_allowed": false,
    "human_review_required": true,
    "blocked": false,
    "recommended_action": "The tracked source changed or could not be synchronized. Review the current source before installing."
  },
  "quality": {
    "score": 59,
    "label": "Promising"
  },
  "supply": {
    "track": "Design and creative production",
    "scenario": "Video creation",
    "maintenance": "10d since push",
    "risk": "Needs review"
  },
  "alternative_skills": [],
  "do_not_use_when": [
    "teams that need a vendor-supported SLA",
    "high-compliance environments without internal security review",
    "No major risk signals from current metadata",
    "AI review approval is missing",
    "The tracked source changed or could not be synchronized. Review the current source before installing.",
    "Quality score needs review",
    "GitHub adoption: 60 GitHub stars",
    "Stars/forks activity: 60 stars, 10 forks; issue activity unavailable in current metadata"
  ],
  "agent_contract": {
    "task_input": "Use tt-caption-writer in an agent workflow",
    "recommended_action": "The tracked source changed or could not be synchronized. Review the current source before installing.",
    "install_policy": "review",
    "minimum_review_before_use": [
      "Trust: 76/100 Strong shortlist",
      "Audit: 77/100 Needs review",
      "Safety: 61/100 Avoid automatic install",
      "Review repository, license, install command, and permission surface before production use."
    ],
    "expected_agent_output": {
      "selected_skill": "sergebulaev-tt-caption-writer (tt-caption-writer)",
      "install_command": "",
      "risk_summary": "Needs review; Reviewed with permission notes; Review before production",
      "verification_result": "Report the smallest successful task, files touched, warnings, and any missing setup."
    }
  },
  "outcome_feedback": {
    "endpoint": "https://www.openagentskill.com/api/agent/outcome",
    "method": "POST",
    "requires_resolve_event_id": true,
    "event_id_source": "Use install_receipt.outcome_feedback.event_id or feedback.event_id returned by /api/agent/resolve for the current task.",
    "expected_outcomes": [
      "success",
      "failed",
      "not_relevant",
      "blocked_by_risk",
      "setup_required"
    ],
    "payload_template": {
      "event_id": "<install_receipt.outcome_feedback.event_id or feedback.event_id from /api/agent/resolve>",
      "skill_slug": "sergebulaev-tt-caption-writer",
      "task": "Use tt-caption-writer in an agent workflow",
      "agent": "codex",
      "outcome": "success",
      "install_used": true,
      "risk_blocked": false,
      "setup_required": false,
      "task_success": true,
      "output_quality": 4,
      "error_type": null,
      "human_review_required": false,
      "workspace": "sandbox",
      "time_to_useful_ms": 120000,
      "notes": "Report the smallest successful task, setup friction, files touched, and risk notes."
    }
  },
  "endpoints": {
    "web": "https://www.openagentskill.com/skills/sergebulaev-tt-caption-writer",
    "api": "https://www.openagentskill.com/api/agent/skills/sergebulaev-tt-caption-writer",
    "audit": "https://www.openagentskill.com/skills/sergebulaev-tt-caption-writer/audit",
    "eval": "https://www.openagentskill.com/api/agent/evals?slug=sergebulaev-tt-caption-writer&task=Use%20tt-caption-writer%20in%20an%20agent%20workflow&max_risk=medium",
    "resolve": "https://www.openagentskill.com/api/agent/resolve?task=Use%20tt-caption-writer%20in%20an%20agent%20workflow&agent=codex&max_risk=medium",
    "receipt": "https://www.openagentskill.com/api/agent/receipt?task=Use%20tt-caption-writer%20in%20an%20agent%20workflow&agent=codex&max_risk=medium&format=text",
    "install": "https://www.openagentskill.com/api/skills/sergebulaev-tt-caption-writer/install",
    "manifest": "https://www.openagentskill.com/api/registry/manifest/sergebulaev-tt-caption-writer"
  }
}

Pour le créateur

Source de la fiche

Indexé par Registry

Revendiable

Cette fiche a été indexée à partir de sources publiques et n’est pas marquée officielle tant qu’une revendication de mainteneur n’est pas approuvée.

Créateur
sergebulaev
Indexé par
Index communautaire OpenAgentSkill

L’attribution renvoie au dépôt public ou au profil du créateur. Les créateurs peuvent revendiquer la fiche pour mettre à jour les signaux de propriété.

Revendiquer ce skill

Revendication du propriétaire

Revendiquer cette fiche de skill

Cette fiche Indexé par Registry est attribuée à sergebulaev, mais n’est pas encore marquée officielle. Revendiquez-la pour ajouter un signal de propriétaire vérifié et rendre les futures mises à jour de lancement, d’installation et d’audit plus fiables.

Kit de partage

Kit de backlinks créateur

Ajoutez les badges de preuve à votre README

Affichez la fiche canonique, les signaux actuels de confiance et d’audit, ainsi que de vraies preuves Agent-Proven là où les développeurs évaluent le dépôt.

[![Listed on OpenAgentSkill](https://www.openagentskill.com/api/badge/sergebulaev-tt-caption-writer?metric=listed&label=Listed)](https://www.openagentskill.com/skills/sergebulaev-tt-caption-writer?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[![OpenAgentSkill Trust](https://www.openagentskill.com/api/badge/sergebulaev-tt-caption-writer?metric=trust&label=Trust)](https://www.openagentskill.com/skills/sergebulaev-tt-caption-writer?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)
[![OpenAgentSkill Audit](https://www.openagentskill.com/api/badge/sergebulaev-tt-caption-writer?metric=audit&label=Audit)](https://www.openagentskill.com/skills/sergebulaev-tt-caption-writer/audit)
[![Agent Proven](https://www.openagentskill.com/api/badge/sergebulaev-tt-caption-writer?metric=proven&label=Agent%20Proven)](https://www.openagentskill.com/skills/sergebulaev-tt-caption-writer?ref=github&utm_source=github&utm_medium=referral&utm_campaign=creator_badge)

Signal de communauté

Indiquez si ce skill semble utile à votre workflow Agent. Les retours agrégés améliorent le classement au fil du temps.