运行时依赖
安装命令
点击复制技能文档
Twitter 自动互动系统 自动化的 Twitter/X 互动系统,扫描目标账户池,选择他们最近的高互动推文,使用 GPT 生成上下文感知回复,并以类似人类的时间间隔发布它们。为希望通过真实的技术对话而不是吸引关注者而增长的创始人和建设者设计。
要求 pip install openai # rnet_twitter — 异步 Twitter GraphQL 客户端(见 rnet_twitter.py) 您还需要: 一个有效的 Twitter/X 会话 cookie 文件(twitter_cookies.json) 一个 OpenAI API 密钥
设置 export OPENAI_API_KEY="您的_openai_api_key" export TWITTER_COOKIE_PATH="/path/to/twitter_cookies.json" 脚本从 JSON 文件中读取 cookie,该文件从登录的浏览器会话中导出。请参阅下面的“获取 Twitter Cookie”。
使用 # 运行单次互动会话(最多 5 个回复) python auto_engage.py # 通过 cron 计划 4 次每日(推荐) # 上午、中午、下午、晚上会话 0 8,12,16,21 * cd {skillDir} && python auto_engage.py >> logs/engage.log 2>&1
配置 编辑脚本顶部的以下常量以自定义行为: 常量 默认值 描述 TARGETS_PER_RUN 20 每次会话检查的账户数 MAX_REPLIES_PER_RUN 5 每次会话发布的最大回复数 RUN_PROBABILITY 0.85 随机跳过机会(人类变异性) MIN_REPLY_LENGTH 80 回复的最小字符数 MAX_REPLY_LENGTH 260 回复的最大字符数
目标账户池 将账户组织成具有每次会话配额的命名类别。脚本每次会话从整个池中随机抽样 TARGETS_PER_RUN 个账户。 示例结构: TARGET_POOL = { "ai_builders": [ "simonw", # 示例:ML 工具,Datasette "swyx", # 示例:AI 工程 ], "indie_builders": [ "dvassallo", # 示例:独立黑客 "tdinh_me", # 示例:自举 SaaS ], "marketing": [ "harrydry", # 示例:营销示例 "wes_kao", # 示例:内容策略 ], } CATEGORY_QUOTAS = { "ai_builders": 2, # 每次会话的回复数 "indie_builders": 2, "marketing": 1, } 用与您的利基和目标相关的账户替换用户名。
回复生成 回复由 GPT 使用结构化语音提示生成。系统强制执行: 语音规则(可配置) 直接、清晰的句子 —— 没有填充词 具体而非模糊:数字、工具名称、具体观察 智力好奇的语气 —— 真诚的问题,而不是修辞问题 舒适地承认不确定性或失败 严格禁止(内置过滤器) 如果生成的回复包含以下内容,则会被拒绝并跳过: 阿谀奉承的开场白:“伟大的帖子”,“爱这”,“如此真实”,“恰到好处”,等等 随意的俚语:lol,damn,wild,ngl,fr,bro,lowkey,fire,bussin,no cap 表情符号(任何 Unicode > U+1F600) 感叹号(可配置的容忍度) 企业术语:利用,协同,范式,游戏规则改变者 自我推销或产品名称掉落
三个回复原型 GPT 被提示选择以下其中一个: A) 微观洞察 + 问题 分享您自己的经验中特定的观察,然后提出您真正想回答的问题。 “在构建我们的品牌工具时遇到了这个问题 —— 嵌入式漂移约 3 个月后重新训练约 15%。您多久重新校准一次?” B) 尊重挑战 礼貌地用数据或反例推回,然后邀请他们的观点。 “反驳:Stripe 的文档非常出色,但他们仍然需要一个销售团队来处理企业。真正的问题不是自助服务在哪里停止工作?” C) 模式识别 将他们的观点与来自不同领域的非明显事物联系起来。 “这与推荐系统中发生的事情相似 —— Netflix 发现,优化点击次数会杀死保留率。代理指标陷阱无处不在。您的等效‘观看时间’是什么?”
自定义您的语音 编辑 USER_CONTEXT 变量(或等效的提示部分)以描述您的背景: USER_CONTEXT = """您正在以 YOUR_NAME 的身份撰写 Twitter 回复。 背景:
- 您是谁的简要描述
- 您正在构建什么
- 与您关注的账户相关的真实兴趣
- [您的首选通信风格]
- [要包含或避免的具体事项]
状态管理 脚本维护 auto_reply_state.json 以跟踪已回复的推文 ID,防止会话之间的重复回复: { "replied_tweets": ["tweet_id_1", "tweet_id_2"], "last_updated": "2026-03-06T09:30:00" } 状态被限制在最后 100 个推文 ID 以防止无限增长。
互动逻辑 对于每个选定的账户,脚本: 获取 10 条最近的原始推文(不包括转发和 @ 回复) 过滤掉已回复的推文 ID 选择具有最高综合互动(点赞 + 回复)的推文 通过 GPT 生成回复 —— 如果 GPT 输出 SKIP,则标记推文为已见并跳过 首先喜欢该推文(预回复喜欢是一个算法)