[cron:6dd85dd2-28ce-411f-b2de-8106e314da47 Deal Post - X + Pinterest (every 30 min)] SCHEDULED TASK: Post 1 deal to X and Pinterest.

## CRITICAL: Use GHC profile ONLY
- SOCIAL_PROFILE=/home/crogers2287/.social-poster-profile-ghc
- NEVER use /home/crogers2287/.social-poster-profile/ (that's @cannadealsfl)
- NEVER use Maya VM twikit or cannadeals cookies

## MANDATORY: Hash-based duplicate prevention
1. Run: python3 scripts/posted_db.py check <deal_id> x
2. If POSTED:YES — SKIP, pick another
3. After post: python3 scripts/posted_db.py record <deal_id> <platform> <post_id> <url>

## Workflow
1. Fetch deals: python3 -c "import urllib.request,json; req=urllib.request.Request('https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest'); req.add_header('User-Agent','Mozilla/5.0'); data=json.loads(urllib.request.urlopen(req).read()); deals=data if isinstance(data,list) else data.get('deals',data.get('items',[])); [print(f'{d.get(\"id\")}|{d.get(\"title\",\"\")[:80]}|${d.get(\"price\",\"\")}') for d in deals[:15]]"
2. Check hash for each candidate
3. Pick first unposted deal (50%+ off, popular brand, limited time, freebies, or under $10)
4. Download share image: wget -q "https://www.gottahavecoups.com/api/v1/share/image/<deal_id>" -O /tmp/deal_img.jpg
5. Post to X:
   cd /home/crogers2287/openclaw-workspaces/cannadeals-marketing/skills/social-poster
   SOCIAL_PROFILE=/home/crogers2287/.social-poster-profile-ghc xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" node post.mjs twitter "<tweet>" --image /tmp/deal_img.jpg
6. Post to Pinterest:
   cd /home/crogers2287/openclaw-workspaces/cannadeals-marketing/skills/social-poster
   SOCIAL_PROFILE=/home/crogers2287/.social-poster-profile-ghc xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" node post.mjs pinterest "<desc>" --title "<title>" --link "https://gottahavecoups.com/deal/<id>" --image /tmp/deal_img.jpg --board "Today's Best Deals"
7. Record both in posted_db
8. Log in memory/YYYY-MM-DD.md

## Tweet format
Hook + value + coupon code (if any) + 5-8 hashtags + link LAST: gottahavecoups.com/deal/<id>
Current time: Thursday, February 12th, 2026 — 6:57 AM (UTC)

Return your summary as plain text; it will be delivered automatically. If the task explicitly calls for messaging a specific external recipient, note who/where it should go instead of sending it yourself.


exec

python3 -c "import urllib.request,json; req=urllib.request.Request('https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest'); req.add_header('User-Agent','Mozilla/5.0'); data=json.loads(urllib.request.urlopen(req).read()); deals=data if isinstance(data,list) else data.get('deals',data.get('items',[])); [print(f'{d.get(\"id\")}|{d.get(\"title\",\"\")[:80]}|${d.get(\"price\",\"\")}') for d in deals[:15]]"


/bin/bash: line 1: import urllib.request,json; req=urllib.request.Request('https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest'); req.add_header('User-Agent','Mozilla/5.0'); data=json.loads(urllib.request.urlopen(req).read()); deals=data if isinstance(data,list) else data.get('deals',data.get('items',[])); [print(f'{d.get("id")}|{d.get("title","")[:80]}|${d.get(\"price\",\"\")}') for d in deals[:15]]: bad substitution

Command exited with code 1


python3 -c "import urllib.request, json;
req = urllib.request.Request('https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest')
req.add_header('User-Agent', 'Mozilla/5.0')
with urllib.request.urlopen(req) as response:
    data = json.loads(response.read())
deals = data if isinstance(data, list) else data.get('deals', data.get('items', []))
for d in deals[:15]:
    print(f\"{d.get('id')}|{d.get('title', '')[:80]}|${d.get('price', '')}\")"


/bin/bash: line 1: import urllib.request, json;
req = urllib.request.Request('https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest')
req.add_header('User-Agent', 'Mozilla/5.0')
with urllib.request.urlopen(req) as response:
    data = json.loads(response.read())
deals = data if isinstance(data, list) else data.get('deals', data.get('items', []))
for d in deals[:15]:
    print(f"{d.get('id')}|{d.get('title', '')[:80]}|${d.get('price', '')}"): bad substitution

Command exited with code 1


curl -s -H "User-Agent: Mozilla/5.0" "https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest" | jq -r '.deals[] | "\(.id)|\(.title[0:80])|$\(.price)"' | head -n 15


(no output)


curl -s -H "User-Agent: Mozilla/5.0" "https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest" | jq .


curl -I -H "User-Agent: Mozilla/5.0" "https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest"


% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
HTTP/2 307
date: Thu, 12 Feb 2026 06:57:30 GMT
content-length: 0
location: https://www.gottahavecoups.com/api/v1/deals/?limit=20&sort=newest
server: cloudflare
strict-transport-security: max-age=63072000; preload
cf-cache-status: DYNAMIC
report-to: {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=FtbHumrkSuaFa9541cm8URXjFM3HEDEhhoXT%2FyAumTBzIK9Mm3YFoLe9bwABcwQt%2FqJQg8QUsB5aDZmI5Iek4tjv2kj38R1JBx30AvhppD8y0V9lHtg%3D"}]}
nel: {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800}
cf-ray: 9cca3136efee3789-MIA
alt-svc: h3=":443"; ma=86400


curl -s -L -H "User-Agent: Mozilla/5.0" "https://www.gottahavecoups.com/api/v1/deals/?limit=20&sort=newest" | jq -r '.deals[] | "\(.id)|\(.title[0:80])|$\(.price)"' | head -n 15


33737|Lenox 897576 Chef Snoopy Dessert Bowls,Set Of 4 - *YMMV - $22.39 w/ Coupon!- Shi|$22.39
33738|16" Franco Peanuts Woodstock Winter Coat Holiday & Christmas Plush Pillow Buddy |$7.15
33739|Amazon Grocery,Diced Jalapeños,Hot,4 Oz (Previously Amazon Fresh,Packaging May V|$0.72
33736|POP Television:House of The Dragon - Mysaria $4.27|$4.27
33731|Lenox Dinnerware Set,Merry Grinchmas Accent Plates,Service for 4 Porcelain Accen|$28.59
33728|Morex Ribbon Velvet Ribbon Nyl...Williamsburg Bl (01225/10-536|$12.88
33730|Bratz 2025 Holidayz Frosty Nig...emium Fashions and Accessories|$24.72
33729|Heresy and the Politics of Com...nd Power in the Medieval Past|$30.78
33727|FOCO LSU Tigers NCAA Mens Colo...block Big Logo Gel Slides - XL|$12.37
33732|Lenox 897835 Tuscany Classics Stackable Coolers,Set Of 4,Amber - * YMMV - $18.87|$18.87
33734|4-Pack Large Collapsible Closet Storage Organizer Bins (14"x10"x9.5") $12|$12.0
33726|Select Accounts:1.8-Oz Purina Pro Plan Veterinary Diets Urinary Health Cat Treat|$2.1
33722|Some Like It Charming (It's Only Temporary Book 1|$0.99
33724|Christopher Knight Home Stamfo...Chairs,2-Pcs Set,Teak Finish|$100.63
33721|30" x 20" Eheyciga Super Absorbent Dog Door Mat (Grey) $6.99 + Free Shipping w/ |$6.99


python3 scripts/posted_db.py check 33739 x
python3 scripts/posted_db.py check 33736 x
python3 scripts/posted_db.py check 33726 x
python3 scripts/posted_db.py check 33722 x
python3 scripts/posted_db.py check 33721 x


HASH:9f49e8bd8539a061 POSTED:NO DEAL:33739 PLATFORM:x
HASH:2478bfbb98b39e0b POSTED:NO DEAL:33736 PLATFORM:x
HASH:41e3df8f2f5f62e0 POSTED:NO DEAL:33726 PLATFORM:x
HASH:3106ff23f6520419 POSTED:NO DEAL:33722 PLATFORM:x
HASH:7a5b693242a00b8f POSTED:NO DEAL:33721 PLATFORM:x


curl -s -L -H "User-Agent: Mozilla/5.0" "https://www.gottahavecoups.com/api/v1/deals/33739" | jq .


Amazon Grocery,Diced Jalapeños,Hot,4 Oz (Previously Amazon Fresh,Packaging May Vary)~$0.72 After Coupon & S&S @ Amazon


wget -q "https://www.gottahavecoups.com/api/v1/share/image/33739" -O /tmp/deal_img.jpg


cd /home/crogers2287/openclaw-workspaces/cannadeals-marketing/skills/social-poster
SOCIAL_PROFILE=/home/crogers2287/.social-poster-profile-ghc xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" node post.mjs twitter "🔥 UNDER $1! Amazon Grocery Diced Jalapeños just $0.72! Perfect for taco night or adding some heat to your favorite dishes! 🌶✨

#AmazonDeals #GroceryDeals #Savings #CouponCommunity #HotDeals #Spicy

gottahavecoups.com/deal/33739" --image /tmp/deal_img.jpg


Command still running (session crisp-harbor, pid 3922216). Use process (list/poll/log/write/kill/clear/remove) for follow-up.


[*] Uploading image: /tmp/deal_img.jpg

Process still running.


(no new output)

Process still running.


[*] Uploading image: /tmp/deal_img.jpg


[*] Uploading image: /tmp/deal_img.jpg
[+] Tweet posted successfully!


cd /home/crogers2287/openclaw-workspaces/cannadeals-marketing/skills/social-poster
SOCIAL_PROFILE=/home/crogers2287/.social-poster-profile-ghc xvfb-run --auto-servernum --server-args="-screen 0 1920x1080x24" node post.mjs pinterest "🔥 UNDER $1! Amazon Grocery Diced Jalapeños just $0.72! Perfect for taco night or adding some heat to your favorite dishes! #AmazonDeals #GroceryDeals #Savings #CouponCommunity #HotDeals" --title "Amazon Grocery Diced Jalapeños - $0.72" --link "https://gottahavecoups.com/deal/33739" --image /tmp/deal_img.jpg --board "Today's Best Deals"


Command still running (session fast-orbit, pid 3933403). Use process (list/poll/log/write/kill/clear/remove) for follow-up.


(no output yet)


node:internal/process/promises:394
    triggerUncaughtException(err, true /* fromPromise */);
    ^

locator.setInputFiles: Timeout 30000ms exceeded.
Call log:
  - waiting for locator('input[type="file"]').first()

    at async postPinterest (/home/crogers2287/openclaw-workspaces/cannadeals-marketing/skills/social-poster/post.mjs:160:7) {
  name: 'TimeoutError'
}

Node.js v22.20.0


python3 scripts/posted_db.py record 33739 x SUCCESS https://twitter.com/GottaHaveCoups


RECORDED HASH:9f49e8bd8539a061 DEAL:33739 PLATFORM:x


echo "### 2026-02-12
- Posted Deal 33739 (Amazon Grocery Diced Jalapeños - $0.72) to X.
- Pinterest post failed (Timeout uploading image). Will retry in next cycle or manually if urgent.
- Source: SlickDeals - Hot Deals" >> memory/2026-02-12.md


(no output)


Done — posted deal to X. Pinterest failed due to a timeout during image upload.

**Deal Posted:**
- **ID:** 33739
- **Title:** Amazon Grocery Diced Jalapeños - $0.72
- **Platform:** X (@GottaHaveCoups)
- **Status:** Recorded in `posted_db`

**Pinterest Status:**
- **Result:** Failed (TimeoutError: waiting for file input)
- **Action:** Will attempt again during the next 30-minute cycle.

**X Post Content:**
"🔥 UNDER $1! Amazon Grocery Diced Jalapeños just $0.72! Perfect for taco night or adding some heat to your favorite dishes! 🌶✨ #AmazonDeals #GroceryDeals #Savings #CouponCommunity #HotDeals #Spicy gottahavecoups.com/deal/33739"

Activity logged in `memory/2026-02-12.md`.