Commit Graph

3 Commits

Author SHA1 Message Date
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