X (Twitter) Content Publisher – Post, Reply, Quote & Manage
Pricing
from $10.00 / 1,000 automations
X (Twitter) Content Publisher – Post, Reply, Quote & Manage
Publish and manage X (Twitter) content from your own account in bulk. Create posts, replies, and quotes with media, like, retweet, bookmark, follow, update your profile, manage lists, and post to communities. Safe pacing, action limits, and per-action results. Bring your auth token and proxy.
Pricing
from $10.00 / 1,000 automations
Rating
0.0
(0)
Developer
Chidubem Aneke
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 days ago
Last modified
Categories
Share
X Content Publisher
Publish and manage content on X (Twitter) from your own account — safely and in bulk. This Actor is the write counterpart to a read/scraping Actor: instead of collecting data, it performs actions such as posting, replying, liking, following, updating your profile, managing lists, and posting to communities.
You choose which actions to run with simple checkboxes, connect your account, and the Actor performs them and reports the result of each one.
What it can do
| Group | Actions |
|---|---|
| Posts | Create post, reply, quote, delete — each with optional media (up to 4 items) |
| Engagement | Like / unlike, retweet / undo, bookmark / remove, follow / unfollow |
| Profile | Update name, bio, location, website; change avatar and banner |
| Lists | Create a list, add members, remove members |
| Communities | Create post / reply / quote inside a community, join, leave |
Each group is a checkbox — enable only what you need.
Safety first
Writing to a social account is destructive and irreversible, so this Actor is conservative by design:
- One row per action. The dataset contains a flat record for every attempted action with its
status(success,failed, orskipped), the resulting post ID/URL, and a clear message on failure. - One bad action never aborts the run. Errors are collected per action; the run keeps going and finishes with a summary.
- Max actions cap.
maxActionslimits how many actions a single run will attempt — a guard against accidental bulk writes. - Pacing.
delayBetweenActionsMsspaces out writes for account safety. - Reactive retries only. Rate limits and temporary server errors are retried with backoff. Content-creating actions are never retried after they are sent, to avoid duplicate posts.
- Secrets are never logged. Your session token and proxy are redacted everywhere.
Requirements
Every action acts on your own account, so you connect your account at run time. Both of the following are required.
1. Your X auth token
The Actor logs in using your account's auth_token cookie.
Easiest way (Chrome extension):
- Install a cookie viewer such as Cookie-Editor or EditThisCookie from the Chrome Web Store.
- Open and log in to x.com.
- Click the extension icon, find the cookie named
auth_token, and copy its value. - Paste it into the X auth token field.
Manual way (no extension):
- Log in to x.com in Chrome.
- Press F12 → open the Application tab.
- In the left sidebar: Cookies → https://x.com.
- Find
auth_tokenand copy its Value.
Keep this token private — anyone with it can act as your account. It's stored as a secret and never logged.
2. A sticky proxy
Provide a stable, user-owned proxy in four simple fields:
- Proxy host — e.g.
proxy.example.com - Proxy port — e.g.
8080 - Proxy username
- Proxy password
You get these from your proxy provider's dashboard. (Advanced users can instead paste a full host:port@user:pass string in the optional Full proxy string field.)
Use a sticky (non-rotating) proxy whose IP stays consistent. Rotating/residential proxy pools are never used for a logged-in account because switching IPs triggers security challenges. A stable IP keeps your session healthy.
Quick start
- Fill in your X auth token and proxy fields (see Requirements above).
- Enable a group (e.g. Posts) and fill the simple fields — just type your post text, no JSON needed:
{"authToken": "your_auth_token","proxyHost": "proxy.example.com","proxyPort": "8080","proxyUsername": "myuser","proxyPassword": "mypass","enablePosts": true,"postText": "Hello from my Actor 👋"}
- Run it — each dataset row shows the outcome of an action, including the new post's ID and URL.
- Start with a small number of items and the default
maxActionscap to stay safe.
How the form works: each feature has a master toggle (e.g. Enable Posts) and is split into small sections — Posts is broken into Create a post, Reply, Quote, and Delete; Lists into Create, Add members, Remove members; Communities into Post and Join / leave. Tick the toggle, then fill only the section(s) you want to use. Any field left blank is skipped, and you can combine several actions in one run.
Input reference
Global
| Field | Type | Default | Description |
|---|---|---|---|
authToken | string (secret) | — | Your auth_token cookie. Required. |
proxyHost / proxyPort | string (secret) | — | Your sticky proxy address and port. Required. |
proxyUsername / proxyPassword | string (secret) | — | Your proxy credentials. Required. |
userProxy | string (secret) | — | Advanced: full host:port@user:pass string (overrides the fields above). |
maxActions | integer | 50 | Hard cap per run (0 = unlimited). |
delayBetweenActionsMs | integer | 1500 | Pause after each action. |
stopOnAuthOrProxyError | boolean | true | Stop the run on a session/proxy failure. |
includeRaw | boolean | false | Attach the raw upstream response to each row. |
Most groups offer simple form fields for the common case (one post, one reply, one list, etc.) plus an Advanced (JSON) option for doing many at once. Both work together — items from the advanced arrays are added on top of the simple fields.
Posts (enablePosts)
Simple fields:
- New post —
postText,postMediaUrls?,postReplyOptionMode?,postDisableLinkPreview? - Reply —
replyToTweet(ID or URL),replyText,replyMediaUrls? - Quote —
quoteTweet(ID or URL),quoteUsername?,quoteText,quoteMediaUrls? deleteTweetIds,deleteTweetUrls— lists
Advanced (bulk, JSON):
createPosts—[{ text, mediaUrls?, replyOptionMode?, disableLinkPreview? }]replies—[{ tweetId | tweetUrl, text, mediaUrls? }]quotes—[{ tweetId | tweetUrl, quotedUsername?, text, mediaUrls? }]
Engagement (enableEngagement)
like/unlike/retweet/unretweet/bookmark/unbookmark— each takes*TweetIdsand*TweetUrlsfollow/unfollow— each takes*UserIdsand*Usernames(@handles are resolved automatically)
Profile (enableProfile)
profileName,profileBio,profileLocation,profileWebsite,avatarUrl,bannerUrl— only non-empty fields are changed.
Lists (enableLists)
Simple fields:
- New list —
newListName,newListDescription?,newListPrivate? - Add members —
addMembersListId+addMemberUsernames(@handles) - Remove members —
removeMembersListId+removeMemberUsernames(@handles)
Advanced (bulk, JSON):
createLists—[{ name, description?, isPrivate? }]addListMembers/removeListMembers—[{ listId, userId | username }]
Communities (enableCommunities)
Simple fields:
- Community post —
communityId,communityPostText,communityPostMediaUrls? joinCommunityIds,leaveCommunityIds— lists
Advanced (bulk, JSON):
communityPosts—[{ communityId, text, mediaUrls? }]communityReplies—[{ communityId, tweetId | tweetUrl, text, mediaUrls? }]communityQuotes—[{ communityId, tweetId | tweetUrl, quotedUsername?, text }]
Media
Provide media per item via:
mediaUrls: a list of public image/video/GIF URLs (simplest), ormedia: an array where each item uses exactly one source:{ "url": "https://…" }— fetched and uploaded for you,{ "data": "<base64>", "type": "image/png" }— base64 upload with a MIME type, or{ "media_id": "1971008286821380096" }— a media id you already uploaded with the same account (advanced).
Up to 4 media items per post (or 1 video).
Output
Each attempted action is one dataset row:
{"actionType": "create_post","status": "success","apiAction": "create_tweet","inputRef": "Hello from my Actor 👋","targetId": null,"resultId": "1799999999999999999","resultUrl": "https://x.com/you/status/1799999999999999999","plannedRequest": { "endpoint": "create-post", "text": "Hello from my Actor 👋" },"message": null,"timestamp": "2026-07-06T12:00:00.000Z"}
Field notes:
status— one ofsuccess,failed, orskipped.apiAction— the platform action that was performed (e.g.create_tweet,follow,add_to_list).targetId— the id your input pointed at (tweet/user/list/community).resultId— the primary id created or affected: a new tweet id for posts/replies/quotes, a new list id for list creation, your account id for profile updates, or the affected id for engagement.resultUrl— the canonicalx.comlink when the action created a post.plannedRequest— a secret-free record of what was sent.
A per-run summary (enabled groups, counts by status and action type, and non-fatal errors) is written to the key-value store record OUTPUT.
📬 Contact & custom projects
Need something built? I take on custom work, including:
- Web scraping & data extraction — Apify Actors, crawlers, and automation for any site or API.
- Web apps — dashboards, tools, and full-stack applications of any kind.
- Automation & integrations — bots, pipelines, and workflow automation.
Reach out — happy to discuss your project:
- Email: dubem115@gmail.com
- GitHub: github.com/DrunkCodes