← 全部文章

我给博客配了个 Agent:每周自动出选题

写博客最烦的不是写,是选题——今天写啥?靠感觉、还费时间。

所以我给它配了个 Agent:每周一自动读一遍我已发布的文章(避免重复),然后给出 5 个新选题。跑在 GitHub Actions 上,免费、定时、不要服务器。

本质还是那句话:Agent 就是一个循环——调用 API 问模型 → 执行工具 → 回喂结果。

它到底做了什么

一个循环 + 一个工具:

TOOLS = [{
    "type": "function",
    "function": {
        "name": "list_existing_titles",
        "description": "读取博客已有的文章标题,用于避免选题重复",
        "parameters": {"type": "object", "properties": {}},
    },
}]

def run_tool(name, args):
    if name == "list_existing_titles":
        xml = urlopen(FEED).read().decode("utf-8", "ignore")   # 读站点 RSS
        titles = re.findall(r"<title>(.*?)</title>", xml, re.S)
        return "\n".join(titles[1:])

模型用 DeepSeek(OpenAI 兼容),循环:

def agent(user_input):
    messages = [{"role": "user", "content": user_input}]
    while True:
        msg = client.chat.completions.create(model=MODEL, messages=messages, tools=TOOLS).choices[0].message
        messages.append(msg)
        if not msg.tool_calls:
            return msg.content                     # 不再要工具 -> 给答案
        for call in msg.tool_calls:                # 执行工具 -> 回喂结果
            args = json.loads(call.function.arguments or "{}")
            messages.append({"role": "tool", "tool_call_id": call.id,
                             "content": run_tool(call.function.name, args)})

结果写进 weekly/<日期>.md。就这样——没有框架,就一个循环。

为什么跑在 GitHub Actions

这是我认为它最妙的一点:

  • 免费:public 仓库无限时长;
  • 定时:on: schedule: cron,每周一自动跑;
  • 免服务器:不用养机器;
  • 能上外网:runner 在美国,直达 DeepSeek / Google API;
  • 有仓库权限:能把结果提交回仓库。
on:
  schedule: [{ cron: '0 1 * * 1' }]
  workflow_dispatch: {}
permissions: { contents: write }
# ... pip install -> python agent/topics.py -> git commit weekly/

密钥放 Secret(DEEPSEEK_API_KEY),站点地址放 Variables(SITE_FEED/SITE_BRIEF)——不进代码。

它真出活了

第一次跑完,它读了站上 17 篇已发文章,回了我一段(节选):

现有内容偏「底层构建 / 框架原理」,但 「Agent 真正跑在边缘设备上」这条主线还几乎是空白。下面 5 个选题全部落在这个交叉缺口上……

然后给了 5 个选题 + 排期建议(先引流、再转化、护城河收口)。说实话,比我拍脑袋强。

我的原则:Agent 干脏活,人做判断

这也是我为什么把它做小、并且只公开框架:

  • Agent 干脏活 / 半成品:选题、草稿、复盘、分发文案;
  • 人做判断与发布:选哪个、怎么写、发不发;
  • 公开架构,私有数据:框架可以开源,但数据、密钥、关键词库、商业策略留私有。

比如这个 Agent 我的真实 prompt、关键词库、GSC 数据都留在私有仓库——公开的只是"怎么搭"。

下一步

  • 加个工具读 GSC 导出("有曝光无点击"的词优先选题);
  • 再加个"草稿 Agent"(出中英初稿);
  • 但发布永远留给人。

📦 可复用模板(去掉私料):github.com/zishuowang696/weekly-topics-agent

💬 有什么想让它干的活?在下方评论,或到 GitHub 提 Issue。

(本文中英双语;本系列记录从 0 构建 Agent 的过程。)

评论 0

还没有评论,来抢沙发~

登录 登录后即可参与评论