首页 / 正文

半小时把 X(Twitter)输入/输出工作流搭起来:用 Codex 做一个稳、直、好维护的自动化

Mooko
发布于 2026-05-12 · 5分钟阅读
1806 浏览
0 点赞 暴击点赞!

半小时把 X 输入/输出工作流搭起来:Codex 真香用法 😄

你是不是也遇到过这种情况:

  • 想做一个 X(Twitter)的工作流:输入信息 → 处理 → 输出发布
  • 结果各种方案又绕又重:要接一堆工具、写一堆胶水代码、还怕账号出事
  • 折腾两天,发现离“直接能用”还差很远

我这篇就按“能照做”为标准,给你一条简单路线:用 Codex 把流程搭起来,并且把最容易翻车的点提前避掉。

目标:做一个“可落地”的 X 内容工作流:

  • 输入:关键词/链接/一段素材(来自文件、Notion、RSS、Google Sheet 都行)
  • 处理:清洗 + 摘要 + 改写成适合 X 的短内容 + 加标签
  • 输出:发到 X,或更稳一点——先保存到草稿/队列

你要准备的东西

别整复杂,准备这几样就能开跑:

  • 一个 OpenAI / Codex 可用的环境(你平时用的 Codex/IDE/CLI 都行)
  • X 的开发者权限(至少能拿到 API Key / Access Token)
  • 本地运行环境:Python 或 Node 二选一(示例用 Python)

如果你只想“先跑通”,建议你把输出从“直接发推”改成“写入草稿文件”,跑稳了再切到发布。


工作流长什么样(脑子里先有图)

把流程拆成 4 个模块,你会非常舒服:

  1. Input(输入):读入你的素材(文本/链接/表格)
  2. Transform(处理):让模型生成“X 可发”的内容
  3. Policy(安全层):做长度、敏感词、重复度、频率控制
  4. Output(输出):发推 / 入库 / 进队列

你要做的不是“做个大而全系统”,而是把这 4 块串起来,先让它稳定跑起来。


用 Codex 的正确姿势:把需求写清楚,让它一次出可维护的代码

很多人用 Codex 卡住的原因是:

  • 只说“帮我写个发 X 的脚本”
  • 没说清楚输入是什么、输出长什么样、失败怎么办

你直接把下面这段“需求模板”丢给 Codex,然后让它生成项目结构:

✅ 需求模板(复制就能用)

我要一个 Python 项目,用来做 X(Twitter) 的内容工作流。

功能:
- 输入:从 input.txt 读取多行素材,每行一条
- 处理:对每条素材生成 1 条适合 X 的中文短内容
  - 风格:口语、信息密度高、别像营销号
  - 长度:不超过 240 字
  - 结构:一句结论 + 2~3 个要点 + 1 个行动建议
  - 允许 1~2 个 emoji,但别每句都加
- 安全层:
  - 如果生成内容重复度高(和最近 20 条输出相似),就重写
  - 如果太长,自动压缩
- 输出:
  - 默认写入 outbox.jsonl(每行一个 JSON,含原始素材、生成内容、时间戳)
  - 可选:通过 X API 发布(用环境变量开关)

工程要求:
- 有清晰的目录结构
- 关键参数用 .env 管理
- 有日志 log.txt
- 失败要重试(指数退避),但别无限重试
请直接给出完整代码和运行方式。

这段模板的核心是:输入/输出格式讲清楚 + 失败处理讲清楚 + 安全层讲清楚


参考项目结构(你就照这个放)

Codex 生成后,你可以对照一下结构,尽量长这样:

x-workflow/
  src/
    main.py
    generator.py
    policy.py
    x_client.py
    storage.py
  input.txt
  outbox.jsonl
  .env.example
  requirements.txt
  README.md
  log.txt

模块拆开有啥好处?

  • 你哪天想把输入从 input.txt 换成 Google Sheet,不会牵一发动全身
  • 你想把输出从“发推”换成“进草稿箱”,也只是换 Output

关键代码怎么写(给你一份可跑的骨架)

下面是一套“够用、清晰、方便扩展”的示例骨架。你可以让 Codex 直接按这个思路生成完整版本。

1)生成器:把素材变成 X 文案

# src/generator.py

from openai import OpenAI

client = OpenAI()

SYSTEM = """你是一个写作助手,擅长把素材改写成适合 X 发布的中文短内容。
要求:口语化、信息密度高、别像广告。输出不超过240字。"""


def gen_post(text: str) -> str:
    prompt = f"""素材:{text}

请输出:一句结论 + 2~3 个要点 + 1 个行动建议。允许1~2个emoji。
只输出正文,不要标题。"""

    resp = client.responses.create(
        model="gpt-4.1-mini",
        input=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": prompt},
        ],
        temperature=0.7,
    )
    return resp.output_text.strip()

模型你可以换成你账号里更顺手的。重点是:结构约束 + 长度约束写死


2)安全层:长度、相似度、重写策略

你不加安全层,最常见的结果是:

  • 发出去才发现超长
  • 连发几条风格一模一样,被人一眼看穿“自动化”
# src/policy.py

import difflib


def too_long(text: str, limit: int = 240) -> bool:
    return len(text) > limit


def similarity(a: str, b: str) -> float:
    return difflib.SequenceMatcher(None, a, b).ratio()


def too_similar(candidate: str, history: list[str], threshold: float = 0.85) -> bool:
    return any(similarity(candidate, h) >= threshold for h in history)

相似度这块不用一上来就上向量库。你要的是“半小时能跑通”。


3)输出:先写队列,再决定发不发

# src/storage.py

import json
import time


def write_outbox(path: str, raw: str, post: str):
    row = {
        "ts": int(time.time()),
        "raw": raw,
        "post": post,
    }
    with open(path, "a", encoding="utf-8") as f:
        f.write(json.dumps(row, ensure_ascii=False) + "\n")

强烈建议你一开始就用 outbox.jsonl。你会感谢自己:

  • 回溯方便
  • 出问题能定位
  • 做二次处理也方便(比如挑选、审核、批量发布)

运行方式(你照着敲就行)

1)安装依赖

pip install -r requirements.txt

2)准备 .env

OPENAI_API_KEY=你的key
X_API_KEY=...
X_API_SECRET=...
X_ACCESS_TOKEN=...
X_ACCESS_SECRET=...
PUBLISH_TO_X=false

3)把素材放进 input.txt,一行一条。

4)运行

python -m src.main

跑完你会在 outbox.jsonl 看到输出。

想发布就把 PUBLISH_TO_X=true,然后再跑一遍(更稳的做法是“只发布 outbox 里审核通过的记录”)。


一个真实场景:把“看过的文章链接”变成每天 1 条输出

你每天收藏一堆链接,永远没时间整理?

改成这个节奏:

  • 晚上把链接丢进 input.txt
  • 脚本跑完生成 3~5 条备选
  • 你挑一条手动发,或者进定时队列

效果很直接:输出稳定了,人也不累


避坑清单(不想翻车就看这个)

  • 别上来就全自动发推:先 outbox,确认内容没问题再发布。
  • 发推频率要克制:新号/弱号别搞高频。间隔拉开点。
  • 同模板狂刷很明显:安全层做相似度检测,必要时重写。
  • 把敏感内容挡在门外:你可以加一层简单的关键词过滤,宁可漏掉也别硬发。
  • 日志必须有:出一次问题你就知道为什么我这么说。
  • 不要把密钥写进代码:全部进 .env,提交代码前检查一遍。

你可以怎么继续升级

跑通后再加这些,会越用越顺:

  • 输入换成 Notion/Google Sheet/RSS
  • outbox 加一个 status 字段:draft / approved / posted
  • 做一个“人工审核”小页面(哪怕是个最简单的本地 HTML)
  • 多账号分发:同一条内容自动生成 2 个版本,分别发不同账号

一句话收尾

这类工作流别追求“完美系统”。追求“今晚能跑,明天还能跑”。

Codex 真正好用的地方,就是你把需求写清楚,它能把你从一堆琐碎的工程活里拎出来。剩下的时间,拿去做更值钱的:选题、判断、表达。

OpenClaw
OpenClaw
木瓜AI支持养龙虾啦
木瓜AI龙虾专供API,限时领取免费tokens
可在 OpenClaw接入全球顶尖AI大模型
立即领取