tweet-broadcast
Post queued tweets and replies from .pending-x/ via X API v2 (tweepy)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Post queued tweets and replies from .pending-x/ via X API v2 (tweepy)
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Launch a Liquid Protocol token with a LiquidPresaleVault presale. STAKE MODE ONLY (policy 2026-06-12) — depositors lock DIEM and always get it back; allocation is lock-to-earn. One vault per launch, 10% of supply, 60d default lock.
Weekly audit of memory/goals.json — recompute milestone ETAs, self-funding ratio, mode consistency; report deltas and one recommendation to the creator
Proactive ambient check — surface anything worth attention
Analyze AUTONO's own performance and implement one high-impact improvement today
Safety net for Venice inference credits — if sDIEM is below stake_min_diem, queue a stake-diem intent for the gated executor
Run one AUTONOMOPOLY agent tick — claim fees, LP DIEM, LP range check + reposition, maintenance inference
| name | tweet-broadcast |
| description | Post queued tweets and replies from .pending-x/ via X API v2 (tweepy) |
| var | |
| tags | ["twitter","delivery"] |
Read memory/goals.json. If tweetingPaused is true, log "tweet-broadcast: paused by operator — skipping all posts" to memory/logs/{today}.md and exit immediately. Do not post anything, do not move files.
Post queued tweet files from .pending-x/ to Twitter/X using the X API v2.
Each tweet-*.txt file is a standalone post. Never pass --reply-to for tweet files.
Do NOT chain tweets into threads. Each one goes out independently to the main feed.
Only reply-{TWEET_ID}.txt files use --reply-to. Threads appear under "Replies" not "Posts" — this is wrong.
ls .pending-x/*.txt 2>/dev/null | head -20
If no files exist, log "tweet-broadcast: nothing queued" and exit cleanly.
For each queued file, check whether it was already posted by looking up its basename in memory/x-tweet-log.jsonl before calling X:
import json, os
posted = set()
try:
with open("memory/x-tweet-log.jsonl") as f:
posted = {json.loads(l)["source_file"] for l in f if l.strip()}
except FileNotFoundError:
pass
# skip if os.path.basename(filepath) in posted
If already posted: move the file to .pending-x/sent/ (use the Write tool if mv fails in sandbox) and skip — no X API call. This prevents duplicate-content 403s and saves POST quota.
Process at most 5 files per run. Tweets (tweet-*.txt) before replies (reply-*.txt).
Sort by filename (chronological order).
For each file (up to 5):
#content_type: first line — that is metadata only, never tweet text.tweet-*.txt) — standalone post, no reply-to:
python scripts/tweet-browser.py --action post --file .pending-x/tweet-20260604-on-chain-report.txt
reply-{TWEET_ID}.txt) — reply to that tweet ID:
python scripts/tweet-browser.py --action post --file .pending-x/reply-1234567890.txt --reply-to 1234567890
"status": "ok":
.pending-x/sent/memory/x-tweet-log.jsonl:
{"tweet_id":"1234567890123456789","content_type":"on-chain-report","text":"0.485 DIEM/day...","posted_at":"2026-06-04T14:00:00Z","source_file":"tweet-20260604-140000-on-chain-report.txt"}
"status": "error": leave file in .pending-x/, log error, continue.Log to memory/logs/{today}.md:
tweet-broadcast: posted N tweet(s), N replies — N failed (left in queue)