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>
This commit is contained in:
@@ -14,7 +14,7 @@ const BLOTATO_URL = 'https://backend.blotato.com/v2/posts';
|
||||
const MIN_GAP_MS = 2600; // ~23/min ceiling, under Blotato's 30/min
|
||||
const DATA_DIR = process.env.DATA_DIR || '.';
|
||||
const TWEETED_FILE = path.join(DATA_DIR, 'tweeted-payouts.json');
|
||||
const DEFAULT_CTA = 'https://rmcircle.saasy.top/?utm_source=twitter&utm_medium=social&utm_campaign=payproof';
|
||||
const DEFAULT_CTA = 'https://rmcircle.saasy.top/?utm_source=x'; // short: Blotato counts raw URL length toward 280
|
||||
const DEFAULT_TAGS = '#Crypto #Polygon #POL #Web3 #CryptoTeamBuild';
|
||||
const DEFAULT_TWITTER_ID = '7998'; // @cryptoteambuild in Blotato
|
||||
|
||||
@@ -67,7 +67,13 @@ function render(evt, cfg) {
|
||||
`💰 Cha-ching! Member #${evt.toId} earned ${pol} POL on-chain the second a new member came aboard — no waiting. 🚀`,
|
||||
]);
|
||||
}
|
||||
return `${body}\n\nBuild with us 👉 ${cta}\n\n${tags}`;
|
||||
const head = `${body}\n\nBuild with us 👉 ${cta}`;
|
||||
// Hard 280 guard (Blotato counts raw string length, no t.co shortening):
|
||||
// keep body + CTA, drop hashtags first, then trim the body as a last resort.
|
||||
let out = `${head}\n\n${tags}`;
|
||||
if (out.length > 280) out = head;
|
||||
if (out.length > 280) out = head.slice(0, 279) + '…';
|
||||
return out;
|
||||
}
|
||||
|
||||
const queue = [];
|
||||
|
||||
Reference in New Issue
Block a user