把 Gemini 畫的繪本,變成有圖片、有解謎、可發音的 Google 表單測驗
v0.6.7 · 🎨 AI 生圖 · 🤖 整本生成 · PWA · 7 題型把 Gemini 產出的圖片和故事文字整理進一份 Google Doc。建議每一頁/章節用「標題 1」分隔,未來在表單裡比較好對應。
兩件事要同時做,缺一不可:
檔案 → 共用 → 發布到網路 → 點「發布」(拿到 /pub 結尾的網址)從已發布的 Google Doc 抓出每張圖片的「公開直接連結」,這樣 Google 表單裡才能成功插入這些圖片。
第三方代理可能被限流或下線。自架一個 Cloudflare Worker(免費,每天 10 萬請求),程式碼在 worker.js。
storytell-proxy → Deployworker.js 內容貼上 → Save and Deployhttps://storytell-proxy.xxx.workers.dev)貼下面儲存步驟:
操作:
script.google.com → 新增專案buildForm 或 createForm)→ 按「執行」把下面 pages 陣列改成你的故事內容和圖片網址即可:
function buildForm() {
const form = FormApp.create('故事情境解謎闖關');
form.setDescription('跟著故事一步步解開謎題吧!');
form.setIsQuiz(true);
form.setCollectEmail(true);
// ★ 把這裡改成你的故事 + 圖片網址(從步驟 3 轉換取得)
const pages = [
{
title: '第一章 神秘森林',
story: '小明走進魔法森林,看到三條小徑。',
image: 'https://lh7-rt.googleusercontent.com/docsz/AD_4nXxxxxx',
question: '你覺得他應該往哪走?',
options: ['左邊有發光的花', '中間有奇怪的腳印', '右邊聽到流水聲'],
correct: 1,
points: 1
},
{
title: '第二章 河邊洞穴',
story: '腳印帶他走到河邊,看到洞穴裡有亮光。',
image: 'https://lh7-rt.googleusercontent.com/docsz/AD_4nXyyyyy',
question: '洞穴裡是什麼?',
options: ['寶藏', '巨龍', '水晶球', '一封信'],
correct: 3,
points: 1
},
// ↑ 想加幾頁就加幾筆
];
pages.forEach((p, i) => {
form.addPageBreakItem().setTitle(p.title).setHelpText(p.story);
// 圖片
if (p.image) {
try {
const blob = UrlFetchApp.fetch(p.image).getBlob();
form.addImageItem().setImage(blob).setTitle(p.title);
} catch (e) {
Logger.log('圖片抓取失敗:' + p.image + ' → ' + e.message);
}
}
// 選擇題
const q = form.addMultipleChoiceItem();
q.setTitle(p.question).setPoints(p.points || 1).setRequired(true);
q.setChoices(p.options.map((opt, idx) =>
q.createChoice(opt, idx === p.correct)
));
});
// 結尾頁
form.addPageBreakItem().setTitle('🎉 恭喜通關!').setHelpText('你成功幫助主角解開所有謎題!');
Logger.log('📝 填表網址:' + form.getPublishedUrl());
Logger.log('✏️ 編輯網址:' + form.getEditUrl());
Logger.log('📊 回應試算表:執行後在表單的「回應」分頁建立');
}
從 Apps Script 的 執行紀錄複製 填表網址,或到 Google 表單裡按右上角「傳送」拿連結。
Google 表單的「插入影片」欄位其實也可以放 YouTube 上的影片,但不能直接上傳音檔。兩種變通方式:
把繪本 Doc 加進 NotebookLM 當來源,可以自動產出: