Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/Zoen-DEV/repurpose-youtube-video/llms.txt

Use this file to discover all available pages before exploring further.

Most errors in the skill fall into one of three categories: missing or incorrect credentials, upstream API limits, and optional-dependency failures (Pillow, yt-dlp). The accordions below cover every known issue and its fix.
Cause: The .env file does not exist or is in the wrong folder.The skill searches for .env in two locations, in order:
  1. The current working directory (wherever you launched Claude Code from).
  2. The skill root: ~/.claude/skills/repurpose-youtube-video/.
Fix: Verify that your .env file is in one of these two locations and contains BLOTATO_API_KEY=your_key_here. See Installation for the full setup steps.
Cause: The API key in your .env is invalid or has been revoked.Fix: Regenerate your API key at https://my.blotato.com/settings/api and update your .env file.
Cause: The Instagram post contains more than 5 hashtags. Blotato enforces this limit at the API level.The skill automatically trims excess hashtags via bc.enforce_ig_hashtags() before every Instagram publish call. If the error still appears, it means the auto-trim didn’t catch a hashtag format edge case.Fix: In the Step 6 approval block, reply editar and ask to reduce the Instagram hashtags to 5 or fewer. Then confirm with .
Cause: The Blotato or Freepik rate limit was hit. Blotato’s presigned upload endpoint allows 10 requests per minute per user.Fix: The skill auto-retries once after a 10-second wait. If the error happens repeatedly (e.g. generating a carousel with many slides in quick succession), wait a minute and re-run the command.
Cause: More than one account of the same platform is connected in your Blotato workspace. The skill cannot choose automatically.Fix: When this happens, the skill prints a list of available account IDs with their display names. Copy the ID you want into your .env as:
BLOTATO_LINKEDIN_ACCOUNT_ID=<id>
or
BLOTATO_INSTAGRAM_ACCOUNT_ID=<id>
Then run the command again.
Cause: The video has no subtitles, is private, or is region-blocked. youtube-transcript-api cannot fetch a transcript in these cases.Fix: The skill continues with the video title and description only, and prints:
[aviso] No se pudo extraer el transcript del video (puede que no tenga subtítulos o el video es privado).
        Continuaré con la información disponible del título.
If you need more content fidelity, try a different URL format (e.g. youtu.be/ID vs youtube.com/watch?v=ID), or use a video that has subtitles enabled.
Cause: Either FREEPIK_API_KEY is missing from your .env, or the Freepik API timed out.Fix:
  • If the key is missing, add FREEPIK_API_KEY=your_key_here to your .env and re-run.
  • If the key is present and the error persists (task timeout or API outage), the skill publishes text-only with a [aviso] warning. You can also pass your own visuals using the images: field to bypass AI generation entirely.
Cause: None of the expected system fonts (Arial on Windows, Helvetica on macOS, DejaVu/Liberation on Linux) were found, so Pillow used its default bitmap font. This fallback renders at very low quality.Fix: Place a font-bold.ttf (and optionally font.ttf for the regular weight) in the scripts/ directory alongside image_overlay.py. Alternatively, set the OVERLAY_FONT_PATH environment variable to the absolute path of any .ttf or .otf file on your system:
OVERLAY_FONT_PATH=/path/to/your/font.ttf
Cause: The /v2/media/uploads endpoint is rate-limited to 10 requests per minute, or the presigned URL expired before the PUT request completed.Fix: Retry the command. The skill falls back to the Freepik CDN URL if the Blotato upload fails, so the post can still publish — though the Freepik URL may have a shorter CDN lifetime than a Blotato-hosted URL.

Build docs developers (and LLMs) love