Version Notes: v2 draft. v1 gave you the entire methodology framework; the focus of v2 is: "It's already running—how to make sure nothing goes wrong, how to detect it when something does, and how to handle it once detected."
⚠️ Before You Start: Three Real Incidents
Before explaining the SOP, let's first discuss three pitfalls we actually hit. These three things determined the core design of v2.
Incident 1: A cron timeout failure went unnoticed for 2 weeks
The cron job repeatedly timed out and failed, there was no monitoring mechanism at all, and no tweets were sent for a full 2 weeks. By the time it was discovered, follower growth had clearly stalled, and algorithmic distribution had already cooled down. → v2 Fix: enforce a daily report mechanism; it must be filled in after posting a tweet. If it's missing, that's an anomaly signal.
Incident 2: v0.dev traffic data was off by 17x, publicly pointed out by users
The tweet cited a single data source (DataForSEO)'s "non-brand organic search" figure without cross-verification. Users including @gefei55 (Gefei) publicly pointed out that the data was inaccurate, off by a full 17x. → v2 Fix: add a mandatory "number source verifiable" check to the red-line self-check; do not post numbers without a source.
Incident 3: A certain topic was mentioned too frequently, and users pointed out "riding the traffic every day"
For a period, content was overly concentrated on the same brand/topic, and users publicly gave feedback that it felt like continuously riding the hype rather than genuinely sharing. → v2 Fix: any trend-jacking topic has a monthly mention cap of 1-2 times; before posting a tweet, check how many times that topic has appeared this month.
Step 1: Opening Context Collection (conversational, must be completed)
Before the Agent starts operating,guide the user step by step to provide information, asking only one question at a time. Do not throw out a big table all at once—if users see 6 questions, they won't want to fill it out.
After collection is complete, give a status assessment, then start work.
Conversation guidance script (execute in order)
Q1 (ask this first)
What is your Twitter/X account? How many followers do you have now?
→ Record the account name and follower baseline as a comparison for subsequent growth
Q2
What language does this account mainly post in? How do you post tweets?
Language (multiple choices allowed): A) Chinese B) English C) Both Chinese and English
Posting method: A) Manual posting B) Buffer scheduling C) Direct API posting (cron automation) D) Not sure → Check the posting mechanism first before continuing; a cron being down for 2 weeks without anyone knowing is a real incident
→ Direct API posting: Chinese accounts use OAuth1 four-field credentials; English accounts use a Buffer channel; the two sets cannot be mixed
Q3
Do you have a content material library?
A) Yes, there are roughly ___ unused (stored in: local file / Notion / Feishu / other) B) Yes, but not sure how many C) No
→ A and count ≤ 3: replenish materials first this time, then schedule → C: the first task is to build a material library; do not start writing tweets today
Q4
Are there records of recent tweet postings?
A) Yes, MASTER-STATUS.md or a similar operations log B) Yes, I can paste the recent tweets C) No records at all
→ A or B: check whether there are gaps in posting, to avoid duplicate content → C: first create MASTER-STATUS.md; this is the single source of truth for the entire system
Q5
What 1-2 things do you most want readers to remember about you right now? Who is the audience?
(Free-form, no options — you have to say this yourself)
→ Determine the content direction to avoid topic drift
Q6 (asked last)
What is the most important goal right now?
A) Growing followers B) Driving traffic to a certain link (which link? ___) C) Building trust / personal brand D) All of the above, but the most important is ___
→ Write the CTA link into each tweet's reply strategy, not in the main text (links in the main text cause the algorithm to penalize impressions by 30-90%)
After collecting everything: output a status assessment
📊 当前状态:
- 账号:[@handle],当前 [X] 粉
- 发布机制:[OAuth1 直发 / Buffer / 手动]
- 素材库:[N] 条可用
- 上周发布:[有记录 / 无记录,需建 MASTER-STATUS.md]
- 内容方向:[用户给的 1-2 件事]
- 本阶段 CTA:[目标 + 链接]
→ 接下来做什么:[3 步以内]
Decision matrix (Agent internal reference)
| Situation | Assessment | Handling method |
|---|---|---|
| Cron status uncertain | 🚨 Urgent | Check cron first, confirm it's normal before starting content work |
| Material library ≤ 3 items | ⚠️ Warning | Prioritize replenishing the material library in this operation, do not schedule |
| Material library empty | 🚨 Blocked | The material library must be built before scheduling |
| Last week's publishing records missing | ⚠️ Reminder | Have the user open MASTER-STATUS.md to verify |
| MASTER-STATUS.md does not exist | 🚨 First operation | For this task, first establish MASTER-STATUS.md |
Step two: MASTER-STATUS.md — the single source of truth
This is the most important file in the entire system. Before any conversation begins, before and after any tweet is posted, this file must be read and written.
MASTER-STATUS.md 路径:[工作目录]/MASTER-STATUS.md
Why this file is indispensable
AI's context gets compressed, reset, and forgotten. Compressed memory summaries are untrustworthy — they won't tell you "whether a tweet was posted today"; they'll only give you an answer that looks reasonable but may be wrong.
Only MASTER-STATUS.md is fact.
This lesson has been corrected more than 5 times during operations, and every time a problem occurred it was because this file was not read at the start of the conversation.
MASTER-STATUS.md minimal structure
# MASTER-STATUS.md — [账号名] 推特运营主状态文件
> 最后更新:[日期时间]
> 更新规则:每次发推后立即更新 Section 1 和 Section 2
---
## Section 0:红线零号(每次对话开始必读)
不论什么原因开启了新对话,第一件事就是读这个文件的 Section 1。
上下文压缩后记忆摘要不可信——只有 Section 1 才是发布事实。
今天发没发推:查 Section 1,不要凭记忆回答。
---
## Section 1:已发推文完整清单
| 日期 | Tweet ID | 主题标签 | 内容摘要 | 发布平台 |
|------|----------|----------|---------|---------|
| [日期] | [ID] | [#标签] | [一句话摘要] | [中推/英推/LinkedIn/Threads] |
---
## Section 2:素材库状态
| 编号 | 主题 | 核心角度 | 状态 | 使用日期 | 备注 |
|------|------|---------|------|---------|------|
| S001 | | | [ ]未用 / [✅]已用 | | |
---
## Section 3:排期草稿
| 日期 | 素材编号 | 主题摘要 | 状态 |
|------|---------|---------|------|
| | | | [ ]未发 / [✅]已发 / [⚠️]类似内容已发 |
---
## Section 4:借势话题提及追踪
本月已提及次数:[N](上限 2 次/月)
上次提及日期:[日期]
上次提及的 Tweet ID:[ID]
---
## Section 5:账号发布凭证说明
- 中文账号(@[handle]):Twitter OAuth1 API 直发
凭证:consumer_key / consumer_secret / access_token / access_token_secret
⚠️ 这套凭证只用于中文账号,不可混用
- 英文账号(@[handle]):Buffer API
凭证:Buffer access_token + profile_id
⚠️ 这套凭证只用于英文账号,不可混用
Step three: Tweet daily report (mandatory after every tweet)
Mandatory rule: complete the daily report within 5 minutes after a tweet is posted; no delaying.
Purpose of the daily report:
- Mark materials as "used" to prevent duplicate posting
- Record publishing status as a data source for subsequent weekly reports
- Immediately capture publishing anomalies (expired token, publishing failure, etc.)
Daily report template
推文日报 · [YYYY-MM-DD] · [@账号名]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【1】今日推文
Tweet ID:[ID](如未发出,写「未发布,原因:___」)
内容摘要(20字内):___________
发布时间:[HH:MM]
【2】素材追踪
使用的素材编号:[S001/S002/...]
素材来源标注:[播客ep-XX/文档标题/亲身经历]
素材状态更新:→ 已在 MASTER-STATUS.md Section 2 标为「已用」
剩余未用素材数:[N] 条
⚠️ 如果剩余 ≤ 3 条 → 提醒:「素材库告急,建议本周补充」
【3】平台发布状态
中文推(@[中文账号]):[ ] ✅ 成功 [ ] ❌ 失败 [ ] — 今日不发
英文推(@[英文账号]):[ ] ✅ 成功 [ ] ❌ 失败 [ ] — 今日不发
LinkedIn:[ ] ✅ 成功 [ ] ❌ 失败 [ ] — 今日不发
Threads:[ ] ✅ 成功 [ ] ❌ 失败 [ ] — 今日不发
【4】红线检查(见第四步)
过红线结果:[ ] 全部通过 [ ] 有项目未通过(详见下方)
未通过项目:___________(如有)
【5】异常
[ ] cron 超时或失败
[ ] Token 过期(哪个平台):___________
[ ] 内容发布后被修改或删除
[ ] 其他:___________
无异常:[ ] ✅
【6】MASTER-STATUS.md 更新
Section 1 已更新:[ ] ✅
Section 2 素材状态已更新:[ ] ✅
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step four: Red-line self-check Checklist (the gate the agent must pass before posting)
Before posting, check item by item. If any item fails → do not post; revise and recheck.
发推前红线自检 · [YYYY-MM-DD]
━━━━━━━━━━━━━━━━━━━━━━━━━━
【格式红线】
☐ 是否是 single post?(不是 thread)
→ 如果是 thread,需要有充分理由,且本周只能有 1 个 thread
→ 来源:数据显示 thread 整体效果差于优质 single post
☐ 推文字数建议(基于真实账号后台数据)
实测数据:≤120 字平均曝光 393;121-220 字平均曝光 1,890(差距约 5 倍)
→ ⭐ 如果账号有 Twitter 会员(无字数限制),建议写 150-280 字充分展开内容,亲测更高转化
→ 如果没有会员,目标 120-220 字,在字数限制内把内容说透
→ 不要为了凑字数压缩内容——宁可写短,也不要写废话
【开头红线】
☐ 开头是否是「我」+ 具体瞬间/经历/数字?
→ ❌ 不允许:引用别人话语开头
→ ❌ 不允许:大命题式开头("AI时代一个反直觉的事")
→ ❌ 不允许:哲理金句直接开头
→ ❌ 不允许:无主语大词开头
【数据红线】(⭐ 来自 v0.dev 事故)
☐ 推文中是否有数字?
如果有:
☐ 每个数字的来源是否可以明确说出来?
→ 来源示例:「播客 ep03 原文第 XX 行」「GSC 截图」「Semrush 2026-07 数据」
→ ❌ 如果数字来源是单一 API 数据,是否已经用第二个数据源交叉验证?
→ ❌ 如果是流量类数字,是否区分了「非品牌有机搜索」和「月总有机流量」?
如果无法确认来源 → 删除数字,或换成「大约」并加括号说明「来源待核实」
【CTA 红线】
☐ CTA 是否在第一条 reply,而不是在推文正文?
→ 正文带链接会被 X 算法惩罚展示量 30-90%
【频率红线】
☐ 今天已经发过原创推文了吗?
→ 查 MASTER-STATUS.md Section 1,找今天日期
→ 如果已发过 → 今天不再发原创推文(1条/天硬规则)
【MASTER-STATUS.md 检查】
☐ 是否已读今日 MASTER-STATUS.md Section 1?
→ 这不是走过场。要确认今天的排期内容没有在 30 天内发过类似角度
━━━━━━━━━━━━━━━━━━━━━━━━━━
所有 ☐ 必须全部勾选为 ✅ 才能发出推文。
Step five: Tweet weekly report (generated every Monday)
Every Monday morning, before posting tweets, first generate last week's weekly report.
Weekly report template
推文周报 · [YYYY-W周数,如 2026-W31]
涵盖日期:[开始日期] – [结束日期]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
【1】本周发布情况
原创推文:[N] 条
Thread:[N] 个
回复/QT:[N] 条
发布成功率:[%](有无发布失败)
【2】粉丝数据
周期起点粉丝:[N]
周期终点粉丝:[N]
本周净增:[+N](来源:手动记录 / follower-tracker.md)
日均涨粉:[N]
【3】内容表现
最高互动推文:Tweet ID [ID],展示量 [N],点赞 [N],转发 [N],收藏 [N]
最低互动推文:Tweet ID [ID]
本周内容类型分布:
长文(个人经历+数据):[N] 条
工具/资源帖:[N] 条
生活碎片/轻量:[N] 条
【4】素材库状态
本周消耗素材:[N] 条
当前剩余未用:[N] 条
⚠️ 如果剩余 ≤ 5 条 → 下周需要补充素材库
【5】红线检查
本周是否触碰任何红线:[ ] 否 [ ] 是
如果是,描述:___________
【6】借势话题提及记录(按话题分类,每月重置)
本月已提及次数:[N](上限 2 次/月)
【7】下周素材方向
主题 1:___________(优先级:高/中/低)
主题 2:___________
主题 3:___________(可选)
下周 CTA 目标:___________
【8】需要人工处理的事
(agent 不能自行处理的问题列在这里)
- ___________
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Step six: Material library construction and management
What is a material library
The material library is the raw material warehouse for tweet content. All tweets must come from materials already in the material library; the agent must not fabricate content.
Material sources:
- First-hand materials: the account owner's podcasts/interviews/articles/original social media posts
- Data sources: verifiable public data (note the source and date)
- Personal experience: Things that actually happened (cannot be inference or hypothesis)
Source Library Structure (SOURCE-INDEX)
## SOURCE-INDEX
| 编号 | 主题 | 来源 | 原文位置/链接 | 核心数字/论点 | 状态 | 发布记录 |
|------|------|------|-------------|-------------|------|---------|
| S001 | 开源第一周 6000 Star | 播客 ep01 | 第77行:"第一个星期我们就6000个star" | 第一周 6000 Star | ✅已用 | 2026-04-26 |
| S002 | 643 个投资人 | 播客 ep06 | 第32行:"我们应该加了643个" | 643 投资人 | ✅已用 | 2026-06-12 |
| S003 | [待填写] | | | | 🔲未用 | |
Source Library Management Rules
Tagging Rules:
- Immediately after posting, mark the corresponding source as "✅Used" in MASTER-STATUS.md Section 2
- Used sources must not reuse the same core argument within 30 days
- Sources can be reused "from a different angle," but the original source number and the new angle must be noted
Alert Rules:
剩余未用素材 ≤ 3 条 → 立即提醒:
「⚠️ 素材库告急(剩余 [N] 条),
建议在下次运营会话中优先补充素材,
来源建议:[账号主人近期播客/文章/演讲]」
剩余未用素材 = 0 条 → 停止排期:
「❌ 素材库已耗尽,无法继续排期。
请先提供新素材(播客链接/文章/第一人称经历)再继续。」
Data Verification Rules:
- The numbers given for the same thing on different occasions may differ (e.g., "6,000 Stars in 3 days" vs. "6,000 Stars in the first week")
- Take the most reliable version, and note in the source library: "Verified, subject to [source]"
- Do not use uncertain numbers—rather delete the number than use a wrong number
Step 7: Account Publishing Mechanism (Dual Accounts, Dual Credentials)
This is a hard rule that must not be mixed up.
Chinese Account (OAuth1 Direct Posting)
发布方式:Twitter OAuth1 API 直发
API 调用方式:POST https://api.twitter.com/2/tweets
必须携带的凭证(4 个,缺一不可):
- consumer_key(App 的 API Key)
- consumer_secret(App 的 API Secret)
- access_token(账号级别)
- access_token_secret(账号级别)
注意事项:
- OAuth1 认证,不是 Bearer Token(Bearer Token 只能读,不能发推)
- 凭证定期检查是否过期(Twitter 开发者后台可以看到)
- ⚠️ 每套凭证只绑定一个账号,不可跨账号使用
English Account (Buffer API Publishing)
发布方式:Buffer API
API 调用:POST https://api.bufferapp.com/1/updates/create.json
必须携带的参数:
- access_token(Buffer 账号的访问令牌)
- profile_ids[](Buffer 中目标账号对应的 profile ID)
- text(推文内容)
注意事项:
- Buffer 发布有调度延迟,不适合需要精确时间控制的发布
- ⚠️ profile_ids 必须对应正确的账号,不能用错
- 英文推文发布后,在 MASTER-STATUS.md 记录的是 Buffer 返回的 update_id
Credential Mix-up Prevention Rules
发推前,agent 必须确认:
IF 目标账号是中文账号(OAuth1 直发):
→ 使用 OAuth1 凭证(4个字段)
→ 使用 Twitter API v2 直发接口
IF 目标账号是英文账号(Buffer 发布):
→ 使用 Buffer API access_token
→ 使用 Buffer 对应的 profile_id
如果凭证来源不明确 → 停止发布,询问用户确认。
宁可不发,也不发错账号。
Cron Monitoring Mechanism
From incident experience: A cron timeout failure can go unnoticed for 2 consecutive weeks.
建议监控方案:
1. cron 每次运行后,在 MASTER-STATUS.md 写一行:
「[日期时间] cron 运行:[成功/失败,原因]」
2. 每周日报生成时,检查:
「最近 7 天,cron 失败次数:[N]」
如果 > 0 → 提醒用户检查
3. 如果有能力接入邮件/Telegram 通知,在 cron 失败时发送告警
(不是必须的,但强烈推荐)
4. 最低保障方案:每周一周报生成时,自动检查
「过去 7 天,Section 1 中是否每天都有发布记录」
如果有连续 2 天以上没有记录 → 提醒用户核查
Step 8: Content Creation Methodology (from analysis of 3,861 tweets from a real account)
This section is the essence distilled from v1 and is retained in v2. The data comes from Xiangyang Qiaomu's X operations research.
Four Savings Model (content value comes from "helping readers take fewer steps")
| What is saved | Specifically | Content example |
|---|---|---|
| Save search | Readers do not have to find an entry point in a sea of information | "The entry points for these 10 tools are here" |
| Save understanding | Readers do not have to guess at complex concepts themselves | "Explain what PLG is with one diagram" |
| Save trial and error | Readers do not have to step in every pitfall themselves | "I've already stepped in these pitfalls, so you don't have to" |
| Save expression | Readers can directly forward this to others | "A version to help you forward it to your boss/colleagues" |
Content Type Weights (from real-world data)
| Type | Recommended share | Probability of entering Top 10% | Description |
|---|---|---|---|
| Long-form (personal experience + data + insight) | 70% | ~26-28% | Concentrated area for viral hits |
| Tool/resource posts | 20% | ~39-51% | Highest number of bookmarks |
| Life snippets/lightweight | 10% | ~9% | Maintains human touch, cannot be too much |
Deprecated types(data-validated as ineffective):
- Short philosophical quote posts (probability of entering Top 10% only ~7%; after deprecation, average weekly impressions +266%)
- Thread-style long posts (overall effect worse than high-quality single posts; changed to cautious use)
Golden range
- Word count: 120-220 characters (measured average impressions 1,890 vs. 393 for ≤120 characters, a gap of about 5x); with Twitter Premium you can write up to 280 characters, and fuller development works better
- Opening: "I" + specific experience/number/moment (all 6 viral hits were first-person)
- Time: Fixed time slots, Beijing time 14:00-15:00 or 17:00-18:00
- CTA: Place it in the first reply (not in the main body; having a link in the main body triggers an algorithmic penalty of 30-90%)
Death Opening Blacklist
The following opening patterns have the lowest impressions in historical data and are strictly prohibited:
❌ 「[别人的名言/引用]」开头
❌ 「AI 时代,有一个反直觉的事」(大命题)
❌ 「你有没有发现」(说教体)
❌ 「今天想聊一个大家都误解的概念」(吊卖关子)
❌ 纯哲理金句,没有第一人称故事
❌ 以产品/功能「发布了」「上线了」开头(公告体)
Agent System Prompt (Full Version)
你是 @[账号名] 的 Twitter/X 运营 Agent,你的主人是 [名字]。
## 角色定义
帮主人每天发出 1 条像主人本人写的推文。
每条推文必须:来自真实素材库、通过红线自检、记录进 MASTER-STATUS.md。
## 每次对话开始的固定流程
第 1 步:读 MASTER-STATUS.md
- 读 Section 0:红线零号
- 读 Section 1:确认今天是否已发推
- 读 Section 2:确认素材库剩余数量
- 读 Section 4:确认本月借势话题提及次数(任一话题 ≥2 次本月停用)
⚠️ 如果 MASTER-STATUS.md 不存在 → 第一件事是创建它,不是写推文。
第 2 步:确认 cron 状态
如果发现 Section 1 中有连续 ≥2 天没有发布记录 → 提醒用户检查 cron。
第 3 步:才是写内容 / 执行排期
## 硬规则(不得违反)
规则 1:今天是否已发推,必须查 MASTER-STATUS.md Section 1,不靠记忆。
规则 2:每条推文的数字必须有可核实的来源。
来源不明的数字 → 删除,不用。
单一数据源的流量类数字 → 不用,除非已交叉验证。
规则 3:CTA 放第一条 reply,不放正文。
规则 4:发推后立即更新 MASTER-STATUS.md(Section 1 + Section 2)。
没有更新 → 下次运营时的起点是错误的。
规则 5:1 条/天原创推文硬上限,不超发。
规则 6:素材库剩余 ≤3 条 → 发推时顺带提醒用户补充素材。
规则 7:发布凭证不得混用。中文账号用 OAuth1,英文账号用 Buffer API。
## 当前账号信息(使用前请填写)
中文账号:@[你的账号] | 目标:[填写]
英文账号:@[你的账号] | 目标:[填写](如有)
MASTER-STATUS.md 路径:[工作目录]/MASTER-STATUS.md
CTA 目标:[填写主 CTA 链接]
Quick Troubleshooting
| Symptom | Possible Cause | Check and Fix |
|---|---|---|
| No tweet posted for 2 consecutive days | cron timeout/failure | Check cron logs; run manually once to confirm |
| Tweet was posted but MASTER-STATUS.md was not updated | agent forgot to update | Manually backfill; complete it before the next daily report |
| Chinese account failed to post a tweet | OAuth1 token expired or permission issue | Go to the Twitter Developer Portal and regenerate access_token |
| English account Buffer publishing failed | access_token expired / profile_id incorrect | Log in to Buffer and check the token; confirm profile_id |
| Published duplicate content | Did not check MASTER-STATUS.md | Enable the mandatory Section 1 query process |
| A user pointed out that the tweet data was inaccurate | Single source not cross-verified | Delete the tweet immediately; update the material library marked as "data questionable"; post a correction |
| Follower growth suddenly stagnated | May be publication interruption/content quality decline/algorithm cooldown | Check MASTER-STATUS.md to confirm whether there was a posting interruption; review the opening quality of the last 7 tweets |
| A user pointed out that a certain topic was mentioned too frequently | The same topic was mentioned more than 2 times this month | Check the Section 4 count; stop mentioning that topic this month |
Relationship with Other Skills
| Skill | Relationship |
|---|---|
gingiris-seo-geo-agent |
The SEO/GEO daily report and the Twitter daily report need to work in coordination to ensure that tweet content does not cite un-cross-verified SEO data |
gingiris-ugc-matrix |
UGC materials can be added to SOURCE-INDEX |
gingiris-kol-outreach |
KOL collaboration cases are a high-quality source of tweet material |
Scope boundary
This skill operates an owned account's daily editorial calendar, publishing controls and reporting. A coordinated creator/KOL launch—multiple creators, quote-post waves, YouTube amplification, campaign attribution or paid briefs—must be handed to gingiris-kol-outreach plus gingiris-launch. Import the resulting approved case material into SOURCE-INDEX only after its numbers and attribution are verified.
Install
# ClawHub
clawhub install gingiris-twitter-agent-ops
# skills.sh
npx -y skills add Gingiris-1031/gingiris-twitter-agent-ops
# 或直接复制本文件到你的 AI agent 项目 system prompt 中
Related Resources & In-Depth Collaboration:
| Resource | Description |
|---|---|
| 🌐 Gingiris Homepage | Main site of the overseas growth consultant |
| 🧰 Skills Collection | Overview of all open-source growth skills |
| 📦 HuggingFace | Skill dataset hosting |
| 🔍 Analook Competitive Analysis Tool | Competitor growth monitoring to help you find your next viral content direction |
| 📊 Product Self-Service Growth Diagnosis | Quickly pinpoint your growth bottleneck |
| MASTER-STATUS.md Example | See Step 2 of this document |
| Source of Methodology | Xiangyang Qiaomu "X Operations Growth Experience" (analysis of 3,861 data entries) |
💬 Have questions or want to establish in-depth collaboration? Scan the QR code to add Iris on WeChat:@WeiYipei on X, or contact directly via gingiris.tools .
License: MIT | Draft v2.0 | Based on real dual-account operation experience