{
  "schemaVersion": "1.0",
  "item": {
    "slug": "reddit-quote-topaz",
    "name": "Reddit Quote Carousel Topaz",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/psyduckler/reddit-quote-topaz",
    "canonicalUrl": "https://clawhub.ai/psyduckler/reddit-quote-topaz",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/reddit-quote-topaz",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=reddit-quote-topaz",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/reddit-quote-topaz"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/reddit-quote-topaz",
    "agentPageUrl": "https://openagent3.xyz/skills/reddit-quote-topaz/agent",
    "manifestUrl": "https://openagent3.xyz/skills/reddit-quote-topaz/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/reddit-quote-topaz/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "Reddit Quote Carousel (Topaz Enhanced)",
        "body": "Same as reddit-quote-carousel but adds Topaz Labs 2x AI upscale after photo finding, before text overlays."
      },
      {
        "title": "Trigger",
        "body": "Bernard says \"reddit-quote-topaz\" → use this skill.\nBernard says \"reddit-quote\" → use reddit-quote-carousel (no Topaz)."
      },
      {
        "title": "Parameters",
        "body": "destination (required): City/region (e.g. \"Barcelona\")\ncategory (required): What the picks are (e.g. \"Cheap Eats\", \"Hidden Gems\", \"Date Night Spots\")\npopular_picks_url (required): tabiji.ai popular-picks page URL to pull attractions + Reddit quotes from\nreddit_post_count (optional): Number of Reddit posts analyzed (for subtitle). Pull from the page if available."
      },
      {
        "title": "Pipeline (3 chained sub-agents)",
        "body": "Working directory: /tmp/ig-reddit-quote/"
      },
      {
        "title": "Sub-agent 1: Scrape Picks + Find Photos + Topaz Enhance",
        "body": "Fetch the popular-picks page via web_fetch to get:\n\nList of attractions (names)\nA compelling Reddit quote for each attraction (vivid, specific, personal — not generic praise)\nThe subreddit each quote came from (e.g. \"r/london\", \"r/AskLondon\")\nTotal Reddit post count if shown on the page\n\n\n\nFind photos using instagram-photo-find workflow:\n\n1 hero photo for the destination (for cover slide)\n1 photo per attraction (for quote slides)\nFor each: web_search → download candidates → vision-score → keep best\n\n\n\nTopaz 2x Enhance each best photo:\n\nTOPAZ_API_KEY=$(security find-generic-password -s \"topaz-api-key\" -w)\n\ncurl --request POST \\\n  --url https://api.topazlabs.com/image/v1/enhance \\\n  --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n  --header 'accept: image/jpeg' \\\n  --header 'content-type: multipart/form-data' \\\n  --form 'model=Low Resolution V2' \\\n  --form 'output_scale_factor=2' \\\n  --form 'output_format=jpeg' \\\n  --form \"image=@/tmp/ig-reddit-quote/${slug}-best.jpg\" \\\n  --output \"/tmp/ig-reddit-quote/${slug}-enhanced.jpg\"\n\nIf sync returns JSON with process_id instead of image bytes, use async flow:\n\n# Submit async\nRESPONSE=$(curl -s --request POST \\\n  --url https://api.topazlabs.com/image/v1/enhance/async \\\n  --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n  --header 'content-type: multipart/form-data' \\\n  --form 'model=Low Resolution V2' \\\n  --form 'output_scale_factor=2' \\\n  --form 'output_format=jpeg' \\\n  --form \"image=@/tmp/ig-reddit-quote/${slug}-best.jpg\")\n\nPROCESS_ID=$(echo \"$RESPONSE\" | jq -r '.process_id')\n\n# Poll until Completed\nwhile true; do\n  STATUS=$(curl -s --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n    \"https://api.topazlabs.com/image/v1/status/${PROCESS_ID}\" | jq -r '.status')\n  [ \"$STATUS\" = \"Completed\" ] && break\n  sleep 3\ndone\n\n# Download\ncurl -s --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n  \"https://api.topazlabs.com/image/v1/download/${PROCESS_ID}\" \\\n  --output \"/tmp/ig-reddit-quote/${slug}-enhanced.jpg\"\n\nWrite manifest to /tmp/ig-reddit-quote/manifest.json:\n\n{\n  \"destination\": \"Barcelona\",\n  \"category\": \"Cheap Eats\",\n  \"reddit_post_count\": 150,\n  \"cover_photo\": \"/tmp/ig-reddit-quote/cover-enhanced.jpg\",\n  \"slides\": [\n    {\n      \"name\": \"Bar Cañete\",\n      \"quote\": \"Went here on a random Tuesday and had the best patatas bravas of my life.\",\n      \"subreddit\": \"r/barcelona\",\n      \"photo\": \"/tmp/ig-reddit-quote/bar-canete-enhanced.jpg\",\n      \"original\": \"/tmp/ig-reddit-quote/bar-canete-best.jpg\",\n      \"source_url\": \"instagram.com/p/XXX/\",\n      \"topaz_enhanced\": true\n    }\n  ]\n}"
      },
      {
        "title": "Sub-agent 2: Text Overlays",
        "body": "Read manifest. Create overlays using instagram-photo-text-overlay skill on enhanced images.\n\nSlide 1 (Cover) — clean style:\n\npython3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \\\n  --input /tmp/ig-reddit-quote/cover-enhanced.jpg \\\n  --output /tmp/ig-reddit-quote/slide-1.jpg \\\n  --title \"Top {COUNT} {CATEGORY} in {DESTINATION}\" \\\n  --subtitle \"Insider Takes from Reddit ({N}+ posts)\" \\\n  --style clean --watermark \"tabiji.ai\"\n\nSlides 2+ — quote style, one per attraction:\n\npython3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \\\n  --input /tmp/ig-reddit-quote/{slug}-enhanced.jpg \\\n  --output /tmp/ig-reddit-quote/slide-{N}.jpg \\\n  --title \"{ATTRACTION_NAME}\" \\\n  --quote \"{REDDIT_QUOTE}\" \\\n  --author \"{SUBREDDIT}\" \\\n  --style quote --watermark \"tabiji.ai\"\n\nOutput: slides at /tmp/ig-reddit-quote/slide-{1-N}.jpg"
      },
      {
        "title": "Sub-agent 3: Publish to Instagram",
        "body": "Host images in tabiji repo (img/instagram/), git push, use raw GitHub URLs\nCreate carousel item containers\nCreate carousel container with caption\nPublish\nGet permalink\nCleanup hosted images + local temp files"
      },
      {
        "title": "Instagram API Auth",
        "body": "Keys from macOS Keychain:\n\ninstagram-access-token — Graph API token\ninstagram-account-id — IG user ID (17841449394591017)"
      },
      {
        "title": "Topaz API Auth",
        "body": "topaz-api-key — Topaz Labs API key (macOS Keychain)"
      },
      {
        "title": "Caption Template",
        "body": "{flag_emoji} Top {COUNT} {CATEGORY} in {DESTINATION}\n\nReal recommendations from {N}+ Reddit posts 🧵\n\n📍 Swipe for the spots + what Redditors actually said:\n1. {Attraction 1}\n2. {Attraction 2}\n...\n\nFull list with maps, prices & more Reddit recs 👉 {POPULAR_PICKS_URL}\n\n💬 {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?\"}\n\n#{destination} #{category_tag} #redditfinds #traveltips #foodietravel #localfavorites #tabiji"
      },
      {
        "title": "Tips",
        "body": "Pick quotes that are specific and personal — \"best patatas bravas of my life\" beats \"this place is great\"\nKeep quotes under ~120 chars so they render well on the slide\nIf a quote is too long, trim it but keep the vivid part\nThe cover title should feel like a listicle: \"Top 7 Cheap Eats in Barcelona\"\nTopaz model: Low Resolution V2 — designed for web-sourced images (our exact use case)\nTopaz rate limits: If HTTP 429, use exponential backoff. Sequential processing of 6-8 images should be fine.\nKeep originals in manifest so you can fall back if Topaz fails on a specific image"
      }
    ],
    "body": "Reddit Quote Carousel (Topaz Enhanced)\n\nSame as reddit-quote-carousel but adds Topaz Labs 2x AI upscale after photo finding, before text overlays.\n\nTrigger\n\nBernard says \"reddit-quote-topaz\" → use this skill. Bernard says \"reddit-quote\" → use reddit-quote-carousel (no Topaz).\n\nParameters\ndestination (required): City/region (e.g. \"Barcelona\")\ncategory (required): What the picks are (e.g. \"Cheap Eats\", \"Hidden Gems\", \"Date Night Spots\")\npopular_picks_url (required): tabiji.ai popular-picks page URL to pull attractions + Reddit quotes from\nreddit_post_count (optional): Number of Reddit posts analyzed (for subtitle). Pull from the page if available.\nPipeline (3 chained sub-agents)\n\nWorking directory: /tmp/ig-reddit-quote/\n\nSub-agent 1: Scrape Picks + Find Photos + Topaz Enhance\n\nFetch the popular-picks page via web_fetch to get:\n\nList of attractions (names)\nA compelling Reddit quote for each attraction (vivid, specific, personal — not generic praise)\nThe subreddit each quote came from (e.g. \"r/london\", \"r/AskLondon\")\nTotal Reddit post count if shown on the page\n\nFind photos using instagram-photo-find workflow:\n\n1 hero photo for the destination (for cover slide)\n1 photo per attraction (for quote slides)\nFor each: web_search → download candidates → vision-score → keep best\n\nTopaz 2x Enhance each best photo:\n\nTOPAZ_API_KEY=$(security find-generic-password -s \"topaz-api-key\" -w)\n\ncurl --request POST \\\n  --url https://api.topazlabs.com/image/v1/enhance \\\n  --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n  --header 'accept: image/jpeg' \\\n  --header 'content-type: multipart/form-data' \\\n  --form 'model=Low Resolution V2' \\\n  --form 'output_scale_factor=2' \\\n  --form 'output_format=jpeg' \\\n  --form \"image=@/tmp/ig-reddit-quote/${slug}-best.jpg\" \\\n  --output \"/tmp/ig-reddit-quote/${slug}-enhanced.jpg\"\n\n\nIf sync returns JSON with process_id instead of image bytes, use async flow:\n\n# Submit async\nRESPONSE=$(curl -s --request POST \\\n  --url https://api.topazlabs.com/image/v1/enhance/async \\\n  --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n  --header 'content-type: multipart/form-data' \\\n  --form 'model=Low Resolution V2' \\\n  --form 'output_scale_factor=2' \\\n  --form 'output_format=jpeg' \\\n  --form \"image=@/tmp/ig-reddit-quote/${slug}-best.jpg\")\n\nPROCESS_ID=$(echo \"$RESPONSE\" | jq -r '.process_id')\n\n# Poll until Completed\nwhile true; do\n  STATUS=$(curl -s --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n    \"https://api.topazlabs.com/image/v1/status/${PROCESS_ID}\" | jq -r '.status')\n  [ \"$STATUS\" = \"Completed\" ] && break\n  sleep 3\ndone\n\n# Download\ncurl -s --header \"X-API-Key: ${TOPAZ_API_KEY}\" \\\n  \"https://api.topazlabs.com/image/v1/download/${PROCESS_ID}\" \\\n  --output \"/tmp/ig-reddit-quote/${slug}-enhanced.jpg\"\n\nWrite manifest to /tmp/ig-reddit-quote/manifest.json:\n{\n  \"destination\": \"Barcelona\",\n  \"category\": \"Cheap Eats\",\n  \"reddit_post_count\": 150,\n  \"cover_photo\": \"/tmp/ig-reddit-quote/cover-enhanced.jpg\",\n  \"slides\": [\n    {\n      \"name\": \"Bar Cañete\",\n      \"quote\": \"Went here on a random Tuesday and had the best patatas bravas of my life.\",\n      \"subreddit\": \"r/barcelona\",\n      \"photo\": \"/tmp/ig-reddit-quote/bar-canete-enhanced.jpg\",\n      \"original\": \"/tmp/ig-reddit-quote/bar-canete-best.jpg\",\n      \"source_url\": \"instagram.com/p/XXX/\",\n      \"topaz_enhanced\": true\n    }\n  ]\n}\n\nSub-agent 2: Text Overlays\n\nRead manifest. Create overlays using instagram-photo-text-overlay skill on enhanced images.\n\nSlide 1 (Cover) — clean style:\n\npython3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \\\n  --input /tmp/ig-reddit-quote/cover-enhanced.jpg \\\n  --output /tmp/ig-reddit-quote/slide-1.jpg \\\n  --title \"Top {COUNT} {CATEGORY} in {DESTINATION}\" \\\n  --subtitle \"Insider Takes from Reddit ({N}+ posts)\" \\\n  --style clean --watermark \"tabiji.ai\"\n\n\nSlides 2+ — quote style, one per attraction:\n\npython3 /Users/psy/.openclaw/workspace/skills/instagram-photo-text-overlay/scripts/overlay.py \\\n  --input /tmp/ig-reddit-quote/{slug}-enhanced.jpg \\\n  --output /tmp/ig-reddit-quote/slide-{N}.jpg \\\n  --title \"{ATTRACTION_NAME}\" \\\n  --quote \"{REDDIT_QUOTE}\" \\\n  --author \"{SUBREDDIT}\" \\\n  --style quote --watermark \"tabiji.ai\"\n\n\nOutput: slides at /tmp/ig-reddit-quote/slide-{1-N}.jpg\n\nSub-agent 3: Publish to Instagram\nHost images in tabiji repo (img/instagram/), git push, use raw GitHub URLs\nCreate carousel item containers\nCreate carousel container with caption\nPublish\nGet permalink\nCleanup hosted images + local temp files\nInstagram API Auth\n\nKeys from macOS Keychain:\n\ninstagram-access-token — Graph API token\ninstagram-account-id — IG user ID (17841449394591017)\nTopaz API Auth\ntopaz-api-key — Topaz Labs API key (macOS Keychain)\nCaption Template\n{flag_emoji} Top {COUNT} {CATEGORY} in {DESTINATION}\n\nReal recommendations from {N}+ Reddit posts 🧵\n\n📍 Swipe for the spots + what Redditors actually said:\n1. {Attraction 1}\n2. {Attraction 2}\n...\n\nFull list with maps, prices & more Reddit recs 👉 {POPULAR_PICKS_URL}\n\n💬 {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?\"}\n\n#{destination} #{category_tag} #redditfinds #traveltips #foodietravel #localfavorites #tabiji\n\nTips\nPick quotes that are specific and personal — \"best patatas bravas of my life\" beats \"this place is great\"\nKeep quotes under ~120 chars so they render well on the slide\nIf a quote is too long, trim it but keep the vivid part\nThe cover title should feel like a listicle: \"Top 7 Cheap Eats in Barcelona\"\nTopaz model: Low Resolution V2 — designed for web-sourced images (our exact use case)\nTopaz rate limits: If HTTP 429, use exponential backoff. Sequential processing of 6-8 images should be fine.\nKeep originals in manifest so you can fall back if Topaz fails on a specific image"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/psyduckler/reddit-quote-topaz",
    "publisherUrl": "https://clawhub.ai/psyduckler/reddit-quote-topaz",
    "owner": "psyduckler",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/reddit-quote-topaz",
    "downloadUrl": "https://openagent3.xyz/downloads/reddit-quote-topaz",
    "agentUrl": "https://openagent3.xyz/skills/reddit-quote-topaz/agent",
    "manifestUrl": "https://openagent3.xyz/skills/reddit-quote-topaz/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/reddit-quote-topaz/agent.md"
  }
}