Gemini 在 Trello 中的强大功能:使用 Firebase Genkit 构建 LLM 助手
Source: Dev.to
在项目管理的世界里,Trello 因其简洁性和可视化组织而长期受到青睐。但如果你的 Trello 卡片能够“说话”呢?如果一个机器人能够分析卡片的细节、查看其附件,并为团队的评论提供智能更新或答案呢?
在本文中,我们将探讨如何使用 Firebase Genkit 将 Google 的 Gemini 3.0 Flash 模型集成到 Trello 中。
前置条件
在开始之前,请确保您拥有以下内容:
- 一个 Trello 账户(一个机器人账户,一个用于发起请求的普通账户) – Trello
- 一个 Google AI API 密钥 – Google AI Studio
- 已安装 Node.js – Node.js 下载
- 一个用于遥测和部署的 Firebase / GCP 账户 – Firebase
设置您的 Trello Power‑Up
要与 Trello 的 API 交互,您需要创建一个 Power‑Up。这会为您提供进行身份验证所需的 API Key 和 Token。
-
为您的工作区点击 “创建新的 Power‑Up”。

-
生成您的 API Key 和 Secret。
-
生成 Token,以允许您的应用代表用户执行操作。
-
(可选)在 “Token” 页面上验证凭据。
请妥善保管这些凭据! 您将在 .env 文件中使用它们。
Source: …
使用 Firebase Genkit 打造 AI 逻辑
Firebase Genkit 简化了构建基于 LLM 的应用程序。我们将定义一个 Flow,它接受 Trello 卡片 ID 和评论,获取所有相关数据,并使用 Gemini 生成回复。
定义模式
首先,我们为卡片数据定义结构化模式。这确保 Gemini 接收到一致的信息(检查清单、评论、图片附件等)。该模式可以扩展,以包含指向其他项目、额外卡片等的链接。
export const TrelloRequestRequestInputSchema = z.object({
instructions: z.string().describe("User's instructions"),
attachments: z.array(
z.object({
url: z.string(),
caption: z.string().optional(),
})
),
details: z.string(),
comments: z.array(
z.object({
person: z.string(),
text: z.string(),
timestamp: z.string(),
})
),
checklists: z.array(
z.object({
name: z.string(),
items: z
.object({
itemName: z.string(),
completed: z.boolean(),
dueDate: z.string(),
})
.array(),
})
),
today: z.string(),
});
Trello Flow
我们应用的核心是 trelloFlow。它使用辅助函数获取卡片详情,调用提示,并将 LLM 的回复作为评论发布回 Trello。
const trelloFlow = ai.defineFlow(
{
name: "trelloFlow",
inputSchema: z.object({
trelloCardId: z.string(),
trelloComment: z.string(),
}),
// …additional metadata if needed
},
async (input) => {
// 1️⃣ Retrieve and format the card data
const formattedCard = await getFormattedTrelloCard(
input.trelloCardId,
input.trelloComment
);
// 2️⃣ Generate a response with Gemini
const output = await trelloPrompt({ inputData: formattedCard });
// 3️⃣ Post the response as a comment on the card
await trelloClient.cards.addCardComment({
id: input.trelloCardId,
text: output.output.responseText,
});
return { success: true, message: "Comment added successfully" };
}
);
多模态能力:查看附件
Gemini 最大的优势之一是能够理解图像。在 trello_helper.ts 中我们获取附件,将其转换为 base64 数据 URL,并直接传递给 LLM。
const formattedAttachments = await Promise.all(
attachments.map(async (attachment) => {
const response = await fetch(attachment.url, {
headers: {
Authorization: `OAuth oauth_consumer_key="${env.TRELLO_API_KEY}", oauth_token="${env.TRELLO_API_TOKEN}"`,
},
});
const arrayBuffer = await response.arrayBuffer();
const base64 = Buffer.from(arrayBuffer).toString("base64");
return {
url: `data:${attachment.mimeType};base64,${base64}`,
caption: attachment.name,
};
})
);
使用 Dot‑Prompt 设计提示
Genkit 引入了 .prompt 文件格式,使 AI 逻辑保持简洁并与应用代码分离。在 prompts/trello.prompt 中我们选择 Gemini 3.0 Flash 模型,以获得速度和原生多模态支持。
提示使用 Handlebars‑style 模板来注入结构化的卡片数据。我们遍历 Trello 卡片的不同部分,同样的模式可以复用于注入任何其他上下文。
(实际的提示文件此处省略,但遵循标准的 .prompt 语法,包含系统指令、用户输入和变量插值的章节。)
通过上述组成部分——Power‑Up 凭证、Genkit Flow、多模态附件处理以及整洁的 .prompt——你现在拥有一个完整的机器人,能够使用 Gemini 3.0 Flash 与你的 Trello 卡片“对话”。将代码部署到 Firebase Functions(或任何 Node.js 环境),设置所需的环境变量,即可看到你的卡片变成会话式协作者。
通过 Webhooks 连接 Trello
为了让机器人具备响应能力,我们使用 Trello Webhooks。每当添加评论时,Trello 会向我们的应用程序发送 POST 请求。
不同的 Express 中间件用于拦截、验证并在请求到达 Genkit 之前进行格式化。
安全
我们实现了一个中间件,以使用 HMAC‑SHA1 签名验证传入请求确实来自 Trello。
export const trelloSignatureMiddleware = (
req: RequestWithAuth,
res: Response,
next: NextFunction
) => {
const signature = req.headers["x-trello-webhook"];
const secret = env.TRELLO_WEBHOOK_SECRET;
const callbackURL = env.TRELLO_CALLBACK_URL;
const body = req.rawBody ? req.rawBody.toString("utf8") : "";
const baseString = body + callbackURL;
const computedSignature = crypto
.createHmac("sha1", secret)
.update(baseString)
.digest("base64");
if (signature === computedSignature) {
next();
} else {
res.status(401).send("Unauthorized");
}
};
注册 Webhook
一旦你的应用部署完成(例如,部署到 Cloud Run),你需要告诉 Trello 将更新发送到哪里。在 .env 文件中填写你的部署 URL。我们提供了一个便利的脚本:
npx tsx src/register_webhook.ts
示例输出
69457XXXXXXXXXXXXXXX
Registering webhook for https://genkit-trello-{PROJECT_ID}.europe-west1.run.app/trelloFlow with board ID: 6945713XXXXXXXXXXXXXX
实际效果展示
在完成所有设置后,你可以在 Trello 评论中标记你的机器人(例如 @GeminiBot what's the status of this task?)。机器人会分析整张卡片的上下文并作出回复。
它甚至可以根据检查清单和卡片描述来跟踪进度!
监控
如果您部署到 GCP 并且已设置 Firebase 项目,仪表板的 Genkit 部分会立即提供重要的调试和概览信息。
结论
通过将 Trello 的结构化项目数据与 Gemini 的推理能力以及 Firebase Genkit 的编排相结合,您可以创建一个实用的 Trello 助手。无论是总结冗长的评论线程、分析附带的设计,还是提供快速的状态更新,都有许多可用的场景。该项目是一个 MVP——欢迎 fork 并将其扩展到您的使用案例。
在 GitHub 上查看完整源代码:





