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

## CRITICAL: Use Maya VM, NOT Fred social-poster
- X: twikit v2.3.3 on Maya VM (`ssh maya@maya`)
- Script: `/home/maya/workspace/scripts/x_twikit_post2.py`
- Cookies: `/home/maya/workspace/x_cookies.json`

## Workflow
1. Fetch deals: `curl -s "https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest" | python3 -c "import sys,json; d=json.load(sys.stdin); deals=d if isinstance(d,list) else d.get('deals',[]); [print(f\"{x['id']}|{x.get('title','')[:60]}|${x.get('price','')}|{x.get('discount_percentage',0)}%\") for x in deals[:15]]"`
2. Check hash: `python3 scripts/posted_db.py check <deal_id> x`
3. If POSTED:YES — SKIP, pick another
4. Pick unposted deal (50%+ off, popular brand, limited time, freebies, under $10)
5. Download share image: `wget -q "https://www.gottahavecoups.com/api/v1/share/image/<deal_id>" -O /tmp/deal_img.jpg`
6. **BUILD TWEET:** Hook + value + 5-8 hashtags + link LAST. KEEP UNDER 280 CHARS.
7. **MANDATORY VALIDATION:** `python3 scripts/validate_tweet.py '<tweet_text>'` — If INVALID, STOP and pick different deal.
8. **POST TO X (Maya VM twikit):**
   ```bash
   ssh maya@maya "cat > /tmp/tweet.txt << 'TWEET'
   <tweet text here>
   TWEET"
   scp /tmp/deal_img.jpg maya@maya:/tmp/deal_img.jpg
   ssh maya@maya "python3 /home/maya/workspace/scripts/x_twikit_post2.py <deal_id> --file /tmp/tweet.txt"
   ```
9. **POST TO PINTEREST (Maya VM py3-pinterest):**
   ```bash
   ssh maya@maya "python3 /home/maya/workspace/scripts/pin_post_v2.py <deal_id> '<title>' '<description>' 1134485031073239531"
   ```
10. Record posts: `python3 scripts/posted_db.py record <deal_id> x <tweet_id> <url>`
11. Log in memory/YYYY-MM-DD.md

## If X cookies expired
Run: `ssh maya@maya "DISPLAY=:0 python3 /home/maya/workspace/scripts/extract_x_cookies.py"`

## Tweet format (STRICT)
- Hook (emoji + deal highlight)
- Product name + price (with $, e.g., "$12.99")
- 5-8 hashtags
- Link LAST: gottahavecoups.com/deal/<id>
- KEEP UNDER 280 CHARS

## NEVER post if validation fails:
- Shell artifacts (/bin/bash, python3 -c)
- Broken prices (.20 instead of $10.20)
- Broken emojis (�)
- > 280 chars
Current time: Friday, February 13th, 2026 — 1: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.


This is a cron job task to post a deal to X and Pinterest. Let me break down what I need to do:

1. Fetch deals from the API
2. Check which ones haven't been posted yet
3. Pick a good deal (50%+ off, popular brand, etc.)
4. Download the share image
5. Build a tweet under 280 chars
6. Validate the tweet
7. Post to X using Maya VM
8. Post to Pinterest using Maya VM
9. Record the post in the database

Let me start by fetching the deals and checking what's available.

I'll execute this scheduled deal post. Let me start by fetching the available deals and checking what's already been posted.

exec

curl -s "https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest" | python3 -c "import sys,json; d=json.load(sys.stdin); deals=d if isinstance(d,list) else d.get('deals',[]); [print(f\"{x['id']}|{x.get('title','')[:60]}|\${x.get('price','')}|{x.get('discount_percentage',0)}%\") for x in deals[:15]]"


Traceback (most recent call last):
  File "<string>", line 1, in <module>
  File "/usr/lib/python3.12/json/__init__.py", line 293, in load
    return loads(fp.read(),
           ^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Command exited with code 1


The API request failed. Let me try a simpler curl to see what's happening.

Let me check the API response directly:

curl -s "https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest" | head -c 2000


(no output)


The API seems to be returning nothing. Let me check with -v for verbose output.

curl -sL "https://www.gottahavecoups.com/api/v1/deals?limit=20&sort=newest" 2>&1 | head -500


LA MODERNA,Cavatappi Tornillos Pasta,16 oz (Pack of 1) | Enriched Durum Wheat Semolina | Kosher,Non-GMO,Iron and Vitamin-Fortified~$1.24 @ Amazon

The Annotated Little Women (The Annotated Books Book 0

Amazon price drop:The Annotated Little Women (The Annotated Books Book 0) - down 76.98% ($10.00) to $2.99 from $12.99

Amazon price drop:Philips Avent Soothie Baby Pac...Green,4 Pack,Model SCF192/45 - down 42.75% ($5.07) to $6.79 from $11.86

Amazon price drop:The Cactus Hunters:Desire and...in the Illicit Succulent Trade - down 41.00% ($10.23) to $14.72 from $24.95

Amazon price drop:Louisville Ladder AE3228 Exten...LP-2200-00 Stabilizer,Silver - down 42.65% ($263.85) to $354.85 from $618.70

Amazon price drop:Classic Accessories Terrazzo R...Table & Chair Set Cover,Large - down 51.14% ($35.77) to $34.18 from $69.95

Amazon price drop:Maille Pickles Cornichons Orig...king Product of France 13.5 oz - down 36.05% ($2.70) to $4.79 from $7.49

Amazon price drop:Zaffi Taffy Sugar Free Candy -...s (Natural Fruit Flavor,3 oz) - down 53.27% ($3.67) to $3.22 from $6.89

Amazon price drop:Creative Co-Op Heavily Distres...al Tray with Black Frame & Rim - down 35.50% ($11.00) to $19.99 from $30.99

Amazon price drop:Anderson Metals - 56121-08 561...Head Plug,1/2" NPT Male Pipe - down 39.51% ($1.79) to $2.74 from $4.53

TABASCO Brand Cayenne Garlic Pepper Sauce,Mild Hot Sauce,Glass Bottle,Smoky & Zesty Blend with Savory Garlic,Bold Flavor 2 Fl Oz (Pack of 2)~$4.98 @ Amazon

Easy-Going Fleece Stretch Chair Slipcover Coffee $15.59

Easy-Going via Amazon has Easy-Going Fleece Stretch Sofa Slipcover on sale for $15.59-40%OFF when you apply promo code JTS4OGVO at checkout For all listing.Shipping is free w/ Prime or on $35+

Select Stores:RIDGID 18V Cordless Reciprocating Saw w/ 4.0 Ah Battery & Charger $65.05 (In-Store Only,Limited Stock

YMMV - Select Home Depot Stores:RIDGID 18V Cordless Reciprocating Saw Kit with 4.0 Ah Battery and Charger.In-Store Clearance $65.05.Click on "See In-Store Clearance Price" to see the clearance

Costco Members:Dynamic Toscana Elite 3-Person Ultra Low EMF FAR Infrared Sauna $2000 + Free Delivery

Costco Wholesale has for its Members:Dynamic Toscana Elite 3-Person Ultra Low EMF FAR Infrared Sauna (DYN-6315-05-Elite) on sale for $1999.99.Shipping is free (curbside delivery).Thanks

3.4-oz Gucci Bloom for Women Eau de Parfum Spray $70 + Free Shipping

Amazon [amazon.com] has 3.4-Oz Gucci Bloom for Women Eau de Parfum Spray for $69.99.Shipping is free.https://www.amazon.com/dp/B0757ZLMLZ

15" Sanrio Kids Cloud Pillows:Kuromi,Cinnamoroll,Badtz Maru or My Melody $10 each

Jigsaw Puzzles 1000 Pieces,various - amazon - $5.04-$5.99

1000 piece puzzles on sale,under $6 Rue Cremieux Paris $5.04 https://www.amazon.com/dp/B0DB5MS...H11W6K59_1 Ladies' Brunch $5.18 https://www.amazon.com/dp/B0DB5MN...SF0DEKK2ZW

12-Pairs Dickies Men's Dri-Tech Crew Socks (Charcoal,Sizes 6-12) $7.40

Walmart.com has Genuine Dickies Men's Dri-Tech Crew Socks,12 Pack on sale for $7.49.Shipping is free w/ Walmart+ (free 30-day trial) or on orders of $35+.-- Machine Washable Country of

FITORY Men’s Genuine Leather Fleece-Lined Winter Slippers (Various) $10

All sizes available in Chestnut,tan or grey colors.Black available in various sizes at same price.https://www.amazon.com/dp/B0G1SM2...QNH4XSTMNS

2-Piece 20"/24" Samsonite Omni 2 Luggage Set w/ Spinner Wheels (Lagoon Blue) $139.65 + Free Shipping

Samsonite Omni 2 Hardside Expandable Luggage with Spinner Wheels,2-Piece Set (19/24),Lagoon Blue $139.64 Free shipping.https://www.amazon.com/gp/product/B09H7NX8M6

The Annotated Little Women (The Annotated Books Book 0

Philips Avent Soothie Baby Pac...Green,4 Pack,Model SCF192/45

Louisville Ladder AE3228 Exten...LP-2200-00 Stabilizer,Silver

Zaffi Taffy Sugar Free Candy -...s (Natural Fruit Flavor,3 oz

Anderson Metals - 56121-08 561...Head Plug,1/2" NPT Male Pipe

Easy-Going Fleece Stretch Chair Slipcover Coffee $15.59

Jigsaw Puzzles 1000 Pieces,various - amazon - $5.04-$5.99


Good, I got the deals data. Let me extract the key deals with their IDs, titles, prices, and discount percentages:

From the response, I can see:
1. 33933 - LA MODERNA Cavatappi Tornillos Pasta - $1.24 - null discount
2. 33914 - The Annotated Little Women - $2.99 - 76% off (was $12.99)
3. 33928 - Philips Avent Soothie Baby Pacifier - $6.79 - 42% off
4. 33930 - Classic Accessories Terrazzo Table & Chair Set Cover - $34.18 - 51% off
5. 33926 - Zaffi Taffy Sugar Free Candy - $3.22 - 53% off
6. 33912 - Easy-Going Fleece Stretch Chair Slipcover - $15.59 - 40% off
7. 33921 - 15" Sanrio Kids Cloud Pillows - $10.00 - null discount
8. 33911 - 12-Pairs Dickies Men's Dri-Tech Crew Socks - $7.40 - null discount
9. 33918 - FITORY Men's Genuine Leather Fleece-Lined Winter Slippers - $10.00 - null discount
10. 33920 - Jigsaw Puzzles 1000 Pieces - $5.04-$5.99 - null discount

Now I need to check which of these have been posted to X already. Let me run the check command on several of them, prioritizing high discount deals like:
- 33914: 76% off, $2.99 book
- 33930: 51% off, $34.18
- 33926: 53% off, $3.22

Let me check these.

Good, I got the deals. Now let me check which ones haven't been posted yet, starting with the highest discounts:

python3 scripts/posted_db.py check 33914 x && python3 scripts/posted_db.py check 33926 x && python3 scripts/posted_db.py check 33930 x && python3 scripts/posted_db.py check 33912 x


POSTED:YES
POSTED:NO
POSTED:NO
POSTED:NO


Deal 33914 (The Annotated Little Women) was already posted. Let me check 33926, 33930, and 33912 - they're all unposted. I'll pick the best one:
- 33926: Zaffi Taffy Sugar Free Candy - $3.22 - 53% off (under $10, good discount)
- 33930: Classic Accessories Terrazzo Table & Chair Set Cover - $34.18 - 51% off
- 33912: Easy-Going Fleece Stretch Chair Slipcover - $15.59 - 40% off

33926 looks like a good deal - under $10, 53% off, candy/treats are popular. Let me download the image and create a tweet.

33914 was already posted. Let me pick **33926 - Zaffi Taffy Sugar Free Candy** (53% off, only $3.22, under $10). Now I'll download the share image and build the tweet:

wget -q "https://www.gottahavecoups.com/api/v1/share/image/33926" -O /tmp/deal_img.jpg && ls -la /tmp/deal_img.jpg


-rw-rw-r-- 1 crogers2287 crogers2287 111034 Feb 13 01:58 /tmp/deal_img.jpg


Good, the image downloaded. Now let me build a tweet for this deal. Deal 33926 is:
- Title: Zaffi Taffy Sugar Free Candy -...s (Natural Fruit Flavor,3 oz
- Price: $3.22
- Original: $6.89
- Discount: 53%

Let me create a tweet:
- Hook: 🍬 Sweet deal alert!
- Product: Zaffi Taffy Sugar Free Candy (3 oz)
- Price: $3.22 (was $6.89)
- 5-8 hashtags: #sugarfree #candy #deal #amazon #savings #sweettooth #discount
- Link: gottahavecoups.com/deal/33926

Draft:
🍬 Sweet deal alert! Zaffi Taffy Sugar Free Candy (3 oz) just $3.22 (was $6.89) — 53% OFF! #sugarfree #candy #deal #amazon #savings #sweettooth #discount gottahavecoups.com/deal/33926

Let me count: 172 chars. Good! Now let me validate it.

Now let me build and validate the tweet:

python3 scripts/validate_tweet.py '🍬 Sweet deal alert! Zaffi Taffy Sugar Free Candy (3 oz) just $3.22 (was $6.89) — 53% OFF! #sugarfree #candy #deal #amazon #savings #sweettooth #discount gottahavecoups.com/deal/33926'


VALID


Great, the tweet is valid. Now I need to:
1. Copy the tweet text to Maya VM
2. Copy the image to Maya VM
3. Post to X using the twikit script
4. Post to Pinterest
5. Record the post

Let me do this step by step.

Tweet validated. Now posting to X and Pinterest via Maya VM:

ssh maya@maya "cat > /tmp/tweet.txt << 'TWEET'
🍬 Sweet deal alert! Zaffi Taffy Sugar Free Candy (3 oz) just $3.22 (was $6.89) — 53% OFF! #sugarfree #candy #deal #amazon #savings #sweettooth #discount gottahavecoups.com/deal/33926
TWEET" && echo "Tweet file created on Maya"


Warning: Permanently added 'maya' (ED25519) to the list of known hosts.
Tweet file created on Maya


Good, the tweet file was created. Now let me copy the image and post to X.

scp /tmp/deal_img.jpg maya@maya:/tmp/deal_img.jpg && ssh maya@maya "python3 /home/maya/workspace/scripts/x_twikit_post2.py 33926 --file /tmp/tweet.txt"


Command still running (session good-coral, pid 3394075). Use process (list/poll/log/write/kill/clear/remove) for follow-up.

Warning: Permanently added 'maya' (ED25519) to the list of known hosts.
Warning: Permanently added 'maya' (ED25519) to the list of known hosts.


The command is still running. Let me poll the process to see the result.


Warning: Permanently added 'maya' (ED25519) to the list of known hosts.
Warning: Permanently added 'maya' (ED25519) to the list of known hosts.
Cookies loaded
Authenticated as: @GottaHaveCoups
Image downloaded: /home/maya/workspace/downloads/deal-33926.jpg (111034 bytes)
Uploading image...
Image uploaded, media_id: 2022128200261021696
Posting tweet...
SUCCESS! Tweet ID: 2022128230950740275
URL: https://x.com/GottaHaveCoups/status/2022128230950740275

Process exited with code 0.


X post was successful. Tweet ID: 2022128230950740275. Now I need to post to Pinterest and then record the post.

X posted successfully! Now posting to Pinterest:

exec

ssh maya@maya "python3 /home/maya/workspace/scripts/pin_post_v2.py 33926 'Zaffi Taffy Sugar Free Candy (3 oz) - 53% OFF' 'Sugar-free candy deal! Zaffi Taffy Natural Fruit Flavor - just \$3.22 (was \$6.89). 53% savings on Amazon! #sugarfree #candy #amazondeals' 1134485031073239531"


Warning: Permanently added 'maya' (ED25519) to the list of known hosts.
Loaded 8 cookies
Boards: 200
Found 7 boards (raw type: dict)
Raw keys: ['all_boards', 'boards_shortlist', 'create_suggestions']
  🔥 Today’s Best Deals (id: 1134485031073239531)
  Limited Time Promo Codes (id: 1134485031073239590)
  Gifts Under $50 (id: 1134485031073239588)
  Amazon Deals & Coupons (id: 1134485031073239559)
  Home & Kitchen Savings (id: 1134485031073239570)
Image upload: 200
Image URL: https://i.pinimg.com/previews/61trdst2.jpeg
Pin create: 200
SUCCESS! Pin ID: 1134484962398635255


Pinterest post was also successful. Pin ID: 1134484962398635255. Now I need to record the post in the database and log it.

Excellent! Pinterest posted successfully. Now recording the post:

python3 scripts/posted_db.py record 33926 x 2022128230950740275 https://x.com/GottaHaveCoups/status/2022128230950740275


Recorded 33926 for x


Now let me log this in today's memory file.

Now logging to today's memory file:

write

## Deal Post - 2026-02-13 01:58 AM UTC

**Posted Deal:** Zaffi Taffy Sugar Free Candy (3 oz)
- **Deal ID:** 33926
- **Price:** $3.22 (was $6.89)
- **Discount:** 53% OFF
- **Platform:** X (Twitter) + Pinterest

**X Post:**
- Tweet ID: 2022128230950740275
- URL: https://x.com/GottaHaveCoups/status/2022128230950740275
- Text: 🍬 Sweet deal alert! Zaffi Taffy Sugar Free Candy (3 oz) just $3.22 (was $6.89) — 53% OFF! #sugarfree #candy #deal #amazon #savings #sweettooth #discount

**Pinterest Post:**
- Pin ID: 1134484962398635255
- Board: Today's Best Deals
- Title: Zaffi Taffy Sugar Free Candy (3 oz) - 53% OFF

**Next Actions:**
- [ ] Monitor engagement on both platforms
- [ ] Prepare next deal for upcoming post window


Successfully wrote 724 bytes to memory/2026-02-13.md


All done! Let me provide a summary of what was accomplished.

---

## ✅ DEAL POST COMPLETE

**Deal Posted:** Zaffi Taffy Sugar Free Candy (3 oz) — 53% OFF
**Deal ID:** 33926

### X (Twitter)
- **Status:** ✅ Posted successfully via Maya VM twikit
- **Tweet ID:** 2022128230950740275
- **URL:** https://x.com/GottaHaveCoups/status/2022128230950740275
- **Tweet:** 🍬 Sweet deal alert! Zaffi Taffy Sugar Free Candy (3 oz) just $3.22 (was $6.89) — 53% OFF! #sugarfree #candy #deal #amazon #savings #sweettooth #discount gottahavecoups.com/deal/33926

### Pinterest
- **Status:** ✅ Posted successfully via Maya VM py3-pinterest
- **Pin ID:** 1134484962398635255
- **Board:** Today's Best Deals
- **Image:** Uploaded and pinned successfully

### Database
- **Status:** ✅ Recorded deal 33926 as posted to X

### Log
- **Status:** ✅ Logged to memory/2026-02-13.md