项目简介
本项目灵感来源于 yihong0618 大佬的 python 版本,项目地址:yihong0618/2023,用一句中国古诗词作为 prompt,通过 Bing DALL-E-3 生成 AI 图片,通过 Bot 每天发布在 Telegram 频道。
我用 Node.js 实现了一遍,用 GitHub Action 每天自动运行,通过 Astro 构建网站,GitHub 地址是:liruifengv/daily-poetry-image,这里是 线上围观地址。
截图
本篇文章主要介绍项目的实现过程。
所用技术
项目实现
BingImageCreator
核心部分是通过 Bing DALL-E-3 生成图片,这里我用 Node.js 封装了一个类,方便使用。
fetchRedirectUrl
: 通过 Bing 画图的接口,获取重定向的 url 和 request_id。
fetchResult
通过 redirect_url 和 request_id 来获取图片。
parseResult
方法解析结果,拿到图片
BingImageCreator
整体代码如上,使用起来也很简单。
这块的代码是通用化的,可以拿去实现其他的功能。
get-up.ts
这个文件是用来获取诗词的,然后把诗词当作 prompt,调用 BingImageCreator 生成图片。
bin/cli.ts
这个文件,我们写了一个简单的 cli,可以通过命令行来调用,目的是为了给 GitHub Action 使用。
Astro website
使用 Astro 做了个网站,用来展示每天生成的诗词图片,使用 Vercel 部署。具体就不聊了,这块也可以使用其他的 web 技术栈。
GitHub Action
GitHub Action 是 GitHub 提供的 CI/CD 工具,可以通过配置文件,来实现自动化的构建、测试、部署等等。
这里我们使用 GitHub Action 来每天自动运行我们的代码,创建 .github/workflows/get_up.yml
文件:
解释一下以上的配置文件:
"0 23 * * *"
:定时任务,每天早上7点执行。
permissions: contents: write
:允许 GitHub Action 写入文件。
- 然后执行了安装依赖和打包的命令。
- 执行
npm run start
,传入了 cookie,这里的 cookie 是通过 GitHub Action 的 secrets 传入的,这样就不会暴露在代码中了。
- 这时候生成的图片是在 CI 环境中的,我们配置用户和
GITHUB_TOKEN
等,提交到 GitHub 仓库中。
配置 GitHub secrets
首先,我们打开 Bing 画图,登录自己的账号,然后打开开发者工具,找到 cookie,复制下来。
把这一大坨 cookie 复制到 GitHub 仓库的 secrets 中,名字叫 BING_COOKIE
。
到此就大功告成啦,每天早上7点,就会自动运行,生成图片,然后提交到 GitHub 仓库中。GitHub 的提交又会触发 Vercel 的自动部署,网站也就自动更新啦。
总结
这个项目已经稳定运行3个月啦,每天也有一点日活,欢迎大家围观。全部代码请看我的 GitHub,也可以自己 fork 一份,改成自己喜欢的样子。或者也可以修改成例如 OpenAI 的画图接口;或者玩一些其他的花样。
注意事项:
- 由于这不是 Bing 公开的 OpenAPI,而是从网站中提取的,可能有风险。
- Bing 会时不时的更新风控策略,导致生成失败,失败之后可以查看 yihong 大佬的原仓库或者我的仓库进行更新。
- Bing 的 cookie 大概一个月时间过期。
加我微信
liruifengv2333
,进群交流,抱团取暖。
关注公众号 SayHub
,带来更多原创内容。
很高兴见到你,欢迎来玩儿~