Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Create and publish an Instagram carousel post from a tabiji.ai itinerary. Given an itinerary URL, finds Instagram-worthy photos for the destination + top att...
Create and publish an Instagram carousel post from a tabiji.ai itinerary. Given an itinerary URL, finds Instagram-worthy photos for the destination + top att...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
End-to-end pipeline: itinerary URL โ photo sourcing โ text overlays โ Instagram carousel publish.
itinerary_url (required): tabiji.ai itinerary URL (e.g. https://tabiji.ai/i/thaw-dome/) destination (required): City/region name (e.g. "Kuala Lumpur") attractions (required): List of 5 attraction names + short descriptions caption (optional): Custom caption. If omitted, generate one with destination name, attraction list, CTA to link in bio, and relevant hashtags.
Split into 3 sub-agents for reliability. Each writes outputs to /tmp/ig-carousel/.
Use the instagram-photo-find skill workflow for each subject (1 destination + 5 attractions = 6 total). For each subject: web_search: site:instagram.com/p/ "{subject}" photo (10 results) Download top 5 candidates: curl -s -L -o /tmp/ig-carousel/raw-{slug}-{n}.jpg "https://www.instagram.com/p/{shortcode}/media/?size=l" Vision-score each with: "Rate 1-10 as hero destination photo for {subject}. Description + score only." Keep best per subject โ /tmp/ig-carousel/{slug}-best.jpg Output: 6 best images + JSON manifest at /tmp/ig-carousel/manifest.json: [{"slug": "kuala-lumpur", "subject": "Kuala Lumpur", "score": 7, "path": "/tmp/ig-carousel/kuala-lumpur-best.jpg", "source": "instagram.com/p/XXX/"}]
Read manifest from sub-agent 1. Run overlay script for each image. Slide 1 (cover) โ clean style: python3 skills/instagram-photo-text-overlay/scripts/overlay.py \ --input /tmp/ig-carousel/{dest-slug}-best.jpg \ --output /tmp/ig-carousel/slide-1.jpg \ --title "{N} Day {DESTINATION} Itinerary Highlights" \ --style clean --watermark "tabiji.ai" Slides 2โ6 โ quote style per attraction with insider tip: python3 skills/instagram-photo-text-overlay/scripts/overlay.py \ --input /tmp/ig-carousel/{slug}-best.jpg \ --output /tmp/ig-carousel/slide-{N}.jpg \ --title "{ATTRACTION}" \ --quote "{Specific insider tip about THIS attraction โ must directly reference the place in the title, not a generic travel tip}" \ --author "tabiji.ai" \ --style quote --watermark "tabiji.ai" Output: 6 overlay images at /tmp/ig-carousel/slide-{1-6}.jpg
Host images publicly โ copy slides to tabiji repo (img/instagram/), git push, use raw GitHub URLs (https://raw.githubusercontent.com/psyduckler/tabiji/main/img/instagram/slide-{N}.jpg). Wait ~30s after push for GitHub CDN. Create carousel item containers (one per slide): curl -s -X POST "https://graph.facebook.com/v21.0/${IG_USER}/media" \ -d "image_url=${PUBLIC_URL}" \ -d "is_carousel_item=true" \ -d "access_token=${IG_TOKEN}" Create carousel container with all children + caption: curl -s -X POST "https://graph.facebook.com/v21.0/${IG_USER}/media" \ --data-urlencode "caption=${CAPTION}" \ -d "media_type=CAROUSEL" \ -d "children=${CHILD_IDS}" \ -d "access_token=${IG_TOKEN}" Publish: curl -s -X POST "https://graph.facebook.com/v21.0/${IG_USER}/media_publish" \ -d "creation_id=${CAROUSEL_ID}" \ -d "access_token=${IG_TOKEN}" Get permalink (or verify publish on rate-limit error): If media_publish returns a POST_ID, get the permalink directly: curl -s "https://graph.facebook.com/v21.0/${POST_ID}?fields=permalink&access_token=${IG_TOKEN}" If media_publish returns error 2207051 (rate limit / action blocked): Instagram sometimes processes the request despite returning an error. Always verify by checking the account's recent media before declaring failure: curl -s "https://graph.facebook.com/v21.0/${IG_USER}/media?fields=id,timestamp,permalink&limit=1&access_token=${IG_TOKEN}" If the most recent post timestamp is within the last few minutes, the publish likely succeeded โ grab that permalink. Cleanup hosted images โ after publish is confirmed, delete the images from the tabiji repo and push: cd /path/to/tabiji/repo git rm img/instagram/slide-*.jpg git commit -m "cleanup: remove instagram carousel images after publish" git push Also clean up local temp files: rm -rf /tmp/ig-carousel/ Output: Instagram post URL
Keys from macOS Keychain: instagram-access-token โ Graph API token instagram-account-id โ IG user ID (17841449394591017)
๐ฒ๐พ {N} Nights in {Destination} โ {Itinerary Subtitle} {One-line hook about the trip} ๐ Swipe through our top 5 picks: 1. {Attraction 1} โ {one-line reason} 2. {Attraction 2} โ {one-line reason} 3. {Attraction 3} โ {one-line reason} 4. {Attraction 4} โ {one-line reason} 5. {Attraction 5} โ {one-line reason} Full free itinerary with tips, prices & Reddit recs ๐ {ITINERARY_URL} ๐ฌ {PROVOCATIVE_QUESTION โ e.g. "Is 5 nights enough for {Destination} or do you need more?" or "What's the one thing most tourists get wrong about {Destination}?"} #{destination_hashtag} #{country} #travelitinerary #foodietravel #southeastasia #asiatravel #travelguide #tabiji
Raw GitHub URLs work for IG image_url; tabiji.ai Cloudflare CDN may trigger format validation errors. Add sleep 1 between container creation calls to avoid rate limits. If a subject yields low photo scores (<5), broaden search: try Unsplash/Flickr or more specific landmark names. Islamic/cultural museums tend to have fewer quality IG photos โ try searching the museum's official IG handle.
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.