← 返回
效率工具 Key

Reddit Quote Carousel Topaz

Create an Instagram carousel from a popular-picks list with Reddit quotes + Topaz 2x upscaling. Cover = "clean" style ("Top CATEGORY in Destination"), attrac...
用热门精选列表、Reddit 引用及 Topaz 2x 放大制作 Instagram 轮播图。封面=“简洁”风格(“目的地顶级分类”),吸睛...
psyduckler
效率工具 clawhub v1.0.0 1 版本 99822.1 Key: 需要
★ 0
Stars
📥 1,122
下载
💾 27
安装
1
版本
#latest

概述

Reddit Quote Carousel (Topaz Enhanced)

Same as reddit-quote-carousel but adds Topaz Labs 2x AI upscale after photo finding, before text overlays.

Trigger

Bernard says "reddit-quote-topaz" → use this skill.

Bernard says "reddit-quote" → use reddit-quote-carousel (no Topaz).

Parameters

  • destination (required): City/region (e.g. "Barcelona")
  • category (required): What the picks are (e.g. "Cheap Eats", "Hidden Gems", "Date Night Spots")
  • popular_picks_url (required): tabiji.ai popular-picks page URL to pull attractions + Reddit quotes from
  • reddit_post_count (optional): Number of Reddit posts analyzed (for subtitle). Pull from the page if available.

Pipeline (3 chained sub-agents)

Working directory: /tmp/ig-reddit-quote/

Sub-agent 1: Scrape Picks + Find Photos + Topaz Enhance

  1. Fetch the popular-picks page via web_fetch to get:
    • List of attractions (names)
    • A compelling Reddit quote for each attraction (vivid, specific, personal — not generic praise)
    • The subreddit each quote came from (e.g. "r/london", "r/AskLondon")
    • Total Reddit post count if shown on the page
  1. Find photos using instagram-photo-find workflow:
    • 1 hero photo for the destination (for cover slide)
    • 1 photo per attraction (for quote slides)
    • For each: web_search → download candidates → vision-score → keep best
  1. Topaz 2x Enhance each best photo:
  2. TOPAZ_API_KEY=$(security find-generic-password -s "topaz-api-key" -w)
    
    curl --request POST \
      --url https://api.topazlabs.com/image/v1/enhance \
      --header "X-API-Key: ${TOPAZ_API_KEY}" \
      --header 'accept: image/jpeg' \
      --header 'content-type: multipart/form-data' \
      --form 'model=Low Resolution V2' \
      --form 'output_scale_factor=2' \
      --form 'output_format=jpeg' \
      --form "image=@/tmp/ig-reddit-quote/${slug}-best.jpg" \
      --output "/tmp/ig-reddit-quote/${slug}-enhanced.jpg"
    

If sync returns JSON with process_id instead of image bytes, use async flow:

# Submit async
RESPONSE=$(curl -s --request POST \
  --url https://api.topazlabs.com/image/v1/enhance/async \
  --header "X-API-Key: ${TOPAZ_API_KEY}" \
  --header 'content-type: multipart/form-data' \
  --form 'model=Low Resolution V2' \
  --form 'output_scale_factor=2' \
  --form 'output_format=jpeg' \
  --form "image=@/tmp/ig-reddit-quote/${slug}-best.jpg")

PROCESS_ID=$(echo "$RESPONSE" | jq -r '.process_id')

# Poll until Completed
while true; do
  STATUS=$(curl -s --header "X-API-Key: ${TOPAZ_API_KEY}" \
    "https://api.topazlabs.com/image/v1/status/${PROCESS_ID}" | jq -r '.status')
  [ "$STATUS" = "Completed" ] && break
  sleep 3
done

# Download
curl -s --header "X-API-Key: ${TOPAZ_API_KEY}" \
  "https://api.topazlabs.com/image/v1/download/${PROCESS_ID}" \
  --output "/tmp/ig-reddit-quote/${slug}-enhanced.jpg"
  1. Write manifest to /tmp/ig-reddit-quote/manifest.json:
  2. {
      "destination": "Barcelona",
      "category": "Cheap Eats",
      "reddit_post_count": 150,
      "cover_photo": "/tmp/ig-reddit-quote/cover-enhanced.jpg",
      "slides": [
        {
          "name": "Bar Cañete",
          "quote": "Went here on a random Tuesday and had the best patatas bravas of my life.",
          "subreddit": "r/barcelona",
          "photo": "/tmp/ig-reddit-quote/bar-canete-enhanced.jpg",
          "original": "/tmp/ig-reddit-quote/bar-canete-best.jpg",
          "source_url": "instagram.com/p/XXX/",
          "topaz_enhanced": true
        }
      ]
    }
    

Sub-agent 2: Text Overlays

Read manifest. Create overlays using instagram-photo-text-overlay skill on enhanced images.

Slide 1 (Cover)clean style:

python3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \
  --input /tmp/ig-reddit-quote/cover-enhanced.jpg \
  --output /tmp/ig-reddit-quote/slide-1.jpg \
  --title "Top {COUNT} {CATEGORY} in {DESTINATION}" \
  --subtitle "Insider Takes from Reddit ({N}+ posts)" \
  --style clean --watermark "tabiji.ai"

Slides 2+quote style, one per attraction:

python3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \
  --input /tmp/ig-reddit-quote/{slug}-enhanced.jpg \
  --output /tmp/ig-reddit-quote/slide-{N}.jpg \
  --title "{ATTRACTION_NAME}" \
  --quote "{REDDIT_QUOTE}" \
  --author "{SUBREDDIT}" \
  --style quote --watermark "tabiji.ai"

Output: slides at /tmp/ig-reddit-quote/slide-{1-N}.jpg

Sub-agent 3: Publish to Instagram

  1. Host images in tabiji repo (img/instagram/), git push, use raw GitHub URLs
  2. Create carousel item containers
  3. Create carousel container with caption
  4. Publish
  5. Get permalink
  6. Cleanup hosted images + local temp files

Instagram API Auth

Keys from macOS Keychain:

  • instagram-access-token — Graph API token
  • instagram-account-id — IG user ID (17841449394591017)

Topaz API Auth

  • topaz-api-key — Topaz Labs API key (macOS Keychain)

Caption Template

{flag_emoji} Top {COUNT} {CATEGORY} in {DESTINATION}

Real recommendations from {N}+ Reddit posts 🧵

📍 Swipe for the spots + what Redditors actually said:
1. {Attraction 1}
2. {Attraction 2}
...

Full list with maps, prices & more Reddit recs 👉 {POPULAR_PICKS_URL}

💬 {PROVOCATIVE_QUESTION — e.g. "What's the most overrated restaurant you've been to abroad?" or "Would you trust a stranger's Reddit rec over a Michelin star?"}

#{destination} #{category_tag} #redditfinds #traveltips #foodietravel #localfavorites #tabiji

Tips

  • Pick quotes that are specific and personal — "best patatas bravas of my life" beats "this place is great"
  • Keep quotes under ~120 chars so they render well on the slide
  • If a quote is too long, trim it but keep the vivid part
  • The cover title should feel like a listicle: "Top 7 Cheap Eats in Barcelona"
  • Topaz model: Low Resolution V2 — designed for web-sourced images (our exact use case)
  • Topaz rate limits: If HTTP 429, use exponential backoff. Sequential processing of 6-8 images should be fine.
  • Keep originals in manifest so you can fall back if Topaz fails on a specific image

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-03-29 06:19 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

productivity

Word / DOCX

ivangdavila
创建、检查和编辑 Microsoft Word 文档及 DOCX 文件,支持样式、编号、修订记录、表格、分节符及兼容性检查等功能。
★ 438 📥 147,656
productivity

Weather

steipete
获取当前天气和预报(无需API密钥)
★ 445 📥 226,299
productivity

Nano Pdf

steipete
使用nano-pdf CLI通过自然语言指令编辑PDF
★ 275 📥 114,845