Commit Graph

6 Commits

Author SHA1 Message Date
martbost 09b44c8286 Reframe payout tweets around the Crypto Team Build Network
Per Marty: Crypto Team Build Network is OUR team; The RM Circle is the
third-party co-op we build in, not our brand. CTA changed from "Join
The RM Circle team build" to "Join the Crypto Team Build Network", and
hashtags now lead with #CryptoTeamBuild (then #TheRMCircle as the
program tag). Payout facts unchanged. Longest render 278/280.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 16:42:46 -05:00
martbost 5c53945aee Name both sides of the event in referral tweets (purchase + payout)
Each join/upgrade yields exactly one payment, so one tweet tells the
whole story. Upgrade tweets already named the upgrader + recipient;
referral tweets now name the joining member (evt.fromId) too, e.g.
"Member #129 just joined and Member #30 instantly earned 326.2 POL".
All templates verified <=280.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 11:48:47 -05:00
martbost a0f0950c77 Use correct brand: #TheRMCircle and "The RM Circle team build"
Hashtag #RMCircle -> #TheRMCircle and CTA "Join The RM Circle team
build" to match the brand (thermcircle.com). Longest render 273/280.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 11:43:30 -05:00
martbost 2992ff414f Name "RM Circle team build" in every payout tweet + #RMCircle
CTA line now reads "Join the RM Circle team build 👉" and hashtags lead
with #RMCircle #CryptoTeamBuild. All templates verified <=280 (longest
270). Branding is in every tweet, not just implied by a hashtag.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 11:42:00 -05:00
martbost c52add619a Keep payout tweets under 280 (short CTA URL + hard length guard)
Blotato counts the raw URL length toward the 280 limit (no t.co
shortening), so the long UTM CTA overflowed. Shortened default CTA to
?utm_source=x and added a guard in render(): drop hashtags, then trim
body, so a tweet can never exceed 280. Verified a real test post to
@cryptoteambuild returns HTTP 201.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 11:38:32 -05:00
martbost c418aa516a Add auto-tweet of on-chain payout proof to @cryptoteambuild (Blotato)
New tweet.js posts a tweet to X via Blotato each time the indexer emits
a NEW team payout. Org-gated to the #21 organization; fires on all
payout types. Ships DISABLED (config.tweetEnabled default off / env
TWEET_ON_PAYOUT), so nothing posts until explicitly turned on.

Safety: dedupes by tx key (persisted to DATA_DIR/tweeted-payouts.json)
so restarts never re-post; a min-gap queue keeps bursts under Blotato's
30/min limit; API key read from env BLOTATO_API_KEY or DATA_DIR key
file, never committed or logged. Varied emoji/hashtag templates with a
CTA (+UTM) to the main page; deterministic template pick avoids X
duplicate-content rejection. Admin config allowlist gains tweetEnabled,
tweetCtaUrl, tweetHashtags, blotatoTwitterId.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-15 11:35:05 -05:00