Twitter To Binance Square
by @infra403
Auto-mirror Twitter/X content to Binance Square. Monitors specified Twitter accounts or topics, fetches new tweets, transforms content, and posts to Binance...
clawhub install 6551-twitter-to-binance-square๐ About This Skill
name: twitter-to-binance-square description: | Auto-mirror Twitter/X content to Binance Square. Monitors specified Twitter accounts or topics, fetches new tweets, transforms content, and posts to Binance Square automatically. Auto-run on messages like 'mirror twitter to binance square', 'auto post from twitter', 'start twitter mirror'. user-invocable: true allowed-tools: Read, Bash, Grep, Glob
Twitter to Binance Square Auto-Mirror Skill
Overview
Automatically fetch tweets from specified Twitter accounts or keyword searches, transform the content for Binance Square, and post them. Designed for building automation pipelines with configurable polling intervals and deduplication.
Prerequisites
| Item | Description | How to get |
|------|-------------|------------|
| TWITTER_TOKEN | 6551 API Bearer token | ่ฎฟ้ฎ https://6551.io/mcp ๆณจๅ่ทๅ |
| SQUARE_API_KEY | Binance Square OpenAPI Key | ็ปๅฝๅธๅฎ โ ่ฎฟ้ฎ ๅไฝ่
ไธญๅฟ โ ้กต้ขๅณไพงใๆฅ็ APIใ็ณ่ฏท |
Core Workflow
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ 1. FETCH: Get tweets from Twitter/X โ
โ - By account: monitor specific users โ
โ - By topic: keyword/hashtag search โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 2. FILTER: Deduplicate & quality check โ
โ - Skip already-posted tweet IDs โ
โ - Skip retweets / replies (optional) โ
โ - Min engagement threshold (optional) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 3. TRANSFORM: Adapt content for Square โ
โ - Add source attribution โ
โ - Translate if needed โ
โ - Add relevant #hashtags โ
โ - Trim to Square length limits โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 4. POST: Publish to Binance Square โ
โ - Call Square API โ
โ - Record posted tweet ID โ
โ - Log post URL โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ 5. WAIT: Sleep for configured interval โ
โ - Default: 300 seconds (5 minutes) โ
โ - Respect daily post limits โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
API Reference
Step 1: Fetch Tweets
#### Option A: Monitor Specific Account
curl -s -X POST "https://ai.6551.io/open/twitter_user_tweets" \
-H "Authorization: Bearer $TWITTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"username": "TARGET_USERNAME",
"maxResults": 10,
"product": "Latest",
"includeReplies": false,
"includeRetweets": false
}'
#### Option B: Monitor Topic/Keywords
curl -s -X POST "https://ai.6551.io/open/twitter_search" \
-H "Authorization: Bearer $TWITTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": "TOPIC_KEYWORDS",
"minLikes": 50,
"product": "Top",
"maxResults": 10,
"lang": "en"
}'
#### Option C: Monitor Hashtag
curl -s -X POST "https://ai.6551.io/open/twitter_search" \
-H "Authorization: Bearer $TWITTER_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"hashtag": "bitcoin",
"minLikes": 100,
"product": "Top",
"maxResults": 10
}'
Step 2: Post to Binance Square
curl -s -X POST "https://www.binance.com/bapi/composite/v1/public/pgc/openApi/content/add" \
-H "X-Square-OpenAPI-Key: $SQUARE_API_KEY" \
-H "Content-Type: application/json" \
-H "clienttype: binanceSkill" \
-d '{
"bodyTextOnly": "TRANSFORMED_CONTENT"
}'
Content Transformation Rules
When transforming a tweet for Binance Square, apply the following rules:
Template Format
{transformed_content}Source: @{username} on X โ optional (show_source=true)
Publish by using 6551 twitter mirror tool โ default enabled (show_tool_attribution=true)
{#hashtag1} {#hashtag2} {#hashtag3}
Transformation Steps
1. Extract core message: Keep the tweet's main content
2. Remove Twitter-specific elements: Remove @mentions (except source attribution), remove t.co links
3. Tool attribution (default): Append Publish by using 6551 twitter mirror tool โ controlled by show_tool_attribution (default: true)
4. Source attribution (optional): Credit the original author with Source: @username on X โ controlled by show_source (default: true)
5. Preserve hashtags: Keep original hashtags, add relevant crypto hashtags if missing
6. Language handling: If translate is enabled, translate to the target language while preserving technical terms
7. Length check: Binance Square has content length limits; trim if needed (keep under 2000 chars)
Example Transformation
Original Tweet by @VitalikButerin:
Excited about the new EIP-4844 progress. Proto-danksharding will reduce L2 fees by 10-100x.
This is huge for Ethereum scalability. https://t.co/xxx
Transformed for Binance Square (show_source=true, show_tool_attribution=true):
Vitalik Buterin ๅฏน EIP-4844 ็ๆๆฐ่ฟๅฑๆๅฐๅ
ดๅฅใProto-danksharding ๅฐๆ L2 ่ดน็จ้ไฝ 10-100 ๅ๏ผ่ฟๅฏนไปฅๅคชๅ็ๅฏๆฉๅฑๆงๆไน้ๅคงใSource: @VitalikButerin on X
Publish by using 6551 twitter mirror tool
#Ethereum #EIP4844 #L2 #Crypto
Transformed for Binance Square (show_source=false, show_tool_attribution=true):
Vitalik Buterin ๅฏน EIP-4844 ็ๆๆฐ่ฟๅฑๆๅฐๅ
ดๅฅใProto-danksharding ๅฐๆ L2 ่ดน็จ้ไฝ 10-100 ๅ๏ผ่ฟๅฏนไปฅๅคชๅ็ๅฏๆฉๅฑๆงๆไน้ๅคงใPublish by using 6551 twitter mirror tool
#Ethereum #EIP4844 #L2 #Crypto
Configuration Schema
The automation script uses a JSON config file (see mirror_config.example.json):
{
"mode": "account",
"accounts": ["VitalikButerin", "cabornedefi"],
"keywords": "",
"hashtag": "",
"poll_interval_seconds": 300,
"min_likes": 0,
"min_retweets": 0,
"max_posts_per_run": 5,
"include_replies": false,
"include_retweets": false,
"translate": false,
"translate_to": "zh",
"content_template": "{content}\n\n{source_attribution}\n{tool_attribution}\n{hashtags}",
"show_source": true,
"show_tool_attribution": true,
"add_hashtags": ["Crypto", "Web3"],
"state_file": "mirror_state.json",
"dry_run": false
}
Config Fields
| Field | Type | Default | Description |
|-------|------|---------|-------------|
| mode | string | "account" | "account" = monitor users, "search" = keyword search, "hashtag" = hashtag search |
| accounts | string[] | [] | Twitter usernames to monitor (mode=account) |
| keywords | string | "" | Search keywords (mode=search) |
| hashtag | string | "" | Hashtag to monitor (mode=hashtag) |
| poll_interval_seconds | int | 300 | Seconds between each polling cycle |
| min_likes | int | 0 | Minimum likes to qualify for mirroring |
| min_retweets | int | 0 | Minimum retweets to qualify |
| max_posts_per_run | int | 5 | Max posts per polling cycle |
| include_replies | bool | false | Include reply tweets |
| include_retweets | bool | false | Include retweets |
| translate | bool | false | Translate content before posting |
| translate_to | string | "zh" | Target language for translation |
| content_template | string | see above | Template for Square post content |
| show_source | bool | true | Show Source: @username on X attribution |
| show_tool_attribution | bool | true | Show Publish by using 6551 twitter mirror tool |
| add_hashtags | string[] | [] | Extra hashtags to append |
| state_file | string | "mirror_state.json" | File to track posted tweet IDs |
| dry_run | bool | false | If true, print content but don't post |
State Management
The script maintains a mirror_state.json to track posted tweets:
{
"posted_tweet_ids": ["1234567890", "1234567891"],
"last_poll_time": "2026-03-07T10:00:00Z",
"post_count_today": 5,
"last_reset_date": "2026-03-07",
"post_log": [
{
"tweet_id": "1234567890",
"square_post_id": "298177291743282",
"square_url": "https://www.binance.com/square/post/298177291743282",
"username": "VitalikButerin",
"posted_at": "2026-03-07T10:05:00Z"
}
]
}
Error Handling
| Scenario | Action | |----------|--------| | Twitter API fails | Log error, retry next cycle | | Square API returns 20002/20022 (sensitive words) | Log & skip this tweet, continue | | Square API returns 220009 (daily limit, max 100 posts/day) | Stop posting, wait until next day | | Square API returns 220004 (key expired) | Stop and alert user | | Tweet already posted (duplicate ID) | Skip silently | | Network error | Retry with exponential backoff (max 3 retries) |
Agent Behavior
1. Verify credentials first: Check both TWITTER_TOKEN and SQUARE_API_KEY exist before starting
2. Prompt for missing config: If mode/accounts/keywords not specified, ask the user
3. Show preview before first post: On the first run, show the first transformed tweet and ask for confirmation
4. Respect rate limits: Honor poll_interval_seconds and max_posts_per_run
5. Daily limit awareness: Track daily post count, stop when approaching Binance Square daily limit
6. Deduplication: Never post the same tweet ID twice (persisted in state_file)
7. Graceful shutdown: On interrupt, save state before exiting
8. Logging: Print each action (fetch, skip, transform, post) with timestamps
9. Run script via: python3 scripts/auto_mirror.py
Usage Examples
Example 1: Mirror a specific KOL's tweets
User: Mirror VitalikButerin's tweets to my Binance Square
Agent: I'll set up auto-mirroring for @VitalikButerin โ Binance Square.Config:
Mode: account
Account: VitalikButerin
Poll interval: 5 minutes
Translate: No Let me fetch the latest tweets first to preview...
[Fetches and shows latest tweet]
Here's how the first post would look on Binance Square:
Excited about the new EIP-4844 progress...Source: @VitalikButerin on X
Publish by using 6551 twitter mirror tool
#Ethereum #Crypto
Shall I start the auto-mirror with these settings?
Example 2: Mirror tweets about a trending topic
User: Auto-post trending Bitcoin tweets to Binance Square, minimum 500 likes
Agent: I'll monitor Twitter for popular Bitcoin tweets and mirror them to Binance Square.Config:
Mode: search
Keywords: "bitcoin"
Min likes: 500
Poll interval: 10 minutes Starting monitor...
Example 3: Run as automated script
# Set environment variables
export TWITTER_TOKEN="your_6551_token"
export SQUARE_API_KEY="your_square_key"Run with config file
python3 scripts/auto_mirror.py --config mirror_config.jsonRun with CLI args
python3 scripts/auto_mirror.py \
--mode account \
--accounts VitalikButerin,elonmusk \
--interval 300 \
--translate \
--translate-to zh
Security
abc12...xyz9Notes
1. Binance Square ๆฏๆฅๆๅคๅๅธ 100 ๆก โ the script tracks and respects this limit 2. Content may be flagged as sensitive by Binance โ those tweets are skipped automatically 3. The 6551 API has rate limits โ max 100 results per request 4. Always attribute the original author to comply with content policies
โ๏ธ Configuration
| Item | Description | How to get |
|------|-------------|------------|
| TWITTER_TOKEN | 6551 API Bearer token | ่ฎฟ้ฎ https://6551.io/mcp ๆณจๅ่ทๅ |
| SQUARE_API_KEY | Binance Square OpenAPI Key | ็ปๅฝๅธๅฎ โ ่ฎฟ้ฎ ๅไฝ่
ไธญๅฟ โ ้กต้ขๅณไพงใๆฅ็ APIใ็ณ่ฏท |
๐ Tips & Best Practices
1. Binance Square ๆฏๆฅๆๅคๅๅธ 100 ๆก โ the script tracks and respects this limit 2. Content may be flagged as sensitive by Binance โ those tweets are skipped automatically 3. The 6551 API has rate limits โ max 100 results per request 4. Always attribute the original author to comply with content policies