首頁
1
最新消息
2
婚禮文章
3
潔咪老師限時分享「誓詞告白靈感整理表」4
https://www.kidora.com.tw/ 初心儀式|桃園到府抓周・文定迎娶・抓周主持培訓
初心儀式|桃園到府抓周・文定迎娶・抓周主持培訓 桃園市
:root{ --cream: #FBF3EC; --cream-deep: #F5E9DE; --ink: #4A3B35; --ink-soft: #8A7A70; --rose: #C77B86; --rose-deep: #B15F6C; --gold: #C9A227; --sage: #8FA382; --line: #E4D4C8; --card: #FFFDFB; } *{box-sizing:border-box;} html,body{margin:0;padding:0;} body{ background:var(--cream); color:var(--ink); font-family:'Noto Sans TC','Noto Serif TC',serif; -webkit-font-smoothing:antialiased; padding-bottom:110px; } ::selection{background:var(--rose);color:#fff;} /* progress bar */ .progress-wrap{ position:sticky; top:0; z-index:50; background:rgba(251,243,236,0.92); backdrop-filter:blur(6px); border-bottom:1px solid var(--line); padding:10px 20px; } .progress-inner{ max-width:640px; margin:0 auto; display:flex; align-items:center; gap:12px; } .progress-track{ flex:1; height:6px; border-radius:99px; background:var(--cream-deep); overflow:hidden; } .progress-fill{ height:100%; width:0%; border-radius:99px; background:linear-gradient(90deg,var(--rose),var(--gold)); transition:width .5s cubic-bezier(.22,.9,.36,1); } .progress-label{ font-size:12.5px; color:var(--ink-soft); white-space:nowrap; font-variant-numeric:tabular-nums; } .wrap{max-width:640px;margin:0 auto;padding:0 20px;} /* hero */ .hero{ padding:56px 0 40px; text-align:center; position:relative; } .badge{ display:inline-flex; align-items:center; gap:8px; background:var(--gold); color:#fff; font-size:13px; letter-spacing:.08em; padding:7px 18px; border-radius:99px; font-weight:500; margin-bottom:22px; box-shadow:0 4px 14px rgba(201,162,39,.28); } h1.title{ font-family:'Noto Serif TC',serif; font-weight:700; font-size:42px; line-height:1.3; margin:0 0 16px; color:var(--ink); } h1.title .accent{color:var(--rose);} .subtitle{ font-size:15.5px; color:var(--ink-soft); line-height:1.9; margin:0 0 6px; } .byline{ font-size:13.5px; color:var(--ink-soft); margin-top:18px; display:flex; align-items:center; justify-content:center; gap:8px; } .byline b{color:var(--ink); font-weight:600;} .byline .dot{width:3px;height:3px;border-radius:50%;background:var(--ink-soft);} /* signature blank-line motif */ .blank-rule{ width:100%; max-width:280px; margin:30px auto 0; border:none; border-bottom:2px dashed var(--rose); position:relative; height:2px; opacity:.55; } .blank-rule::after{ content:'✦'; position:absolute; left:50%; top:-11px; transform:translateX(-50%); color:var(--gold); font-size:14px; background:var(--cream); padding:0 10px; } /* section card */ .step{ background:var(--card); border:1px solid var(--line); border-radius:22px; padding:28px 24px 26px; margin-bottom:18px; box-shadow:0 2px 0 rgba(74,59,53,.03); } .step-head{ display:flex; align-items:flex-start; gap:14px; margin-bottom:6px; } .step-num{ flex-shrink:0; width:32px;height:32px;border-radius:50%; background:var(--sage); color:#fff; display:flex;align-items:center;justify-content:center; font-size:14px; font-weight:600; font-family:'Noto Serif TC',serif; } .step-title{ font-family:'Noto Serif TC',serif; font-weight:600; font-size:19px; line-height:1.5; margin:2px 0 0; } .step-hint{ font-size:13.5px; color:var(--ink-soft); margin:10px 0 16px 46px; line-height:1.8; } .step-body{margin-left:46px;} /* chips */ .chip-row{display:flex; flex-wrap:wrap; gap:9px;} .chip{ border:1.4px solid var(--line); background:#fff; color:var(--ink); font-size:13.5px; padding:9px 16px; border-radius:99px; cursor:pointer; transition:all .18s ease; font-family:'Noto Sans TC',sans-serif; } .chip:hover{border-color:var(--rose);} .chip.active{ background:var(--rose); border-color:var(--rose); color:#fff; box-shadow:0 3px 10px rgba(199,123,134,.3); } .chip.other-input{padding:4px 6px 4px 16px;} .chip.other-input input{ border:none;background:transparent;outline:none; font-size:13.5px; width:82px; color:var(--ink); font-family:'Noto Sans TC',sans-serif; } /* inputs */ textarea, input[type=text]{ width:100%; border:1.4px solid var(--line); background:#FFFCFA; border-radius:14px; padding:13px 15px; font-size:15px; line-height:1.7; color:var(--ink); font-family:'Noto Sans TC',sans-serif; resize:vertical; transition:border-color .18s ease, box-shadow .18s ease; } textarea{min-height:84px;} textarea:focus, input[type=text]:focus{ outline:none; border-color:var(--rose); box-shadow:0 0 0 3px rgba(199,123,134,.12); } textarea::placeholder, input::placeholder{color:#C7B9AE;} .inspire-label{ font-size:12.5px; color:var(--ink-soft); margin:12px 0 8px; display:flex; align-items:center; gap:6px; } .inspire-label::before{content:'✦'; color:var(--gold); font-size:11px;} /* formula reference section */ .formula-card{ background:var(--cream-deep); border:1px dashed var(--rose); border-radius:16px; padding:18px 18px; margin-bottom:12px; } .formula-card .f-name{ font-size:12.5px; color:var(--rose-deep); font-weight:600; letter-spacing:.05em; margin-bottom:8px; } .formula-card .f-body{ font-family:'Noto Serif TC',serif; font-size:15.5px; line-height:2; color:var(--ink); } .formula-card .f-body b{color:var(--rose-deep); font-weight:600;} /* output section */ .output-wrap{ background:linear-gradient(160deg,#fff, var(--cream-deep)); border:1.4px solid var(--rose); border-radius:22px; padding:30px 26px 26px; margin:6px 0 22px; position:relative; overflow:hidden; } .output-wrap::before{ content:'誓'; position:absolute; right:-10px; top:-30px; font-family:'Noto Serif TC',serif; font-size:160px; color:rgba(199,123,134,.06); font-weight:700; pointer-events:none; } .output-title{ font-family:'Noto Serif TC',serif; font-weight:700; font-size:20px; margin:0 0 4px; display:flex; align-items:center; gap:8px; } .output-sub{font-size:13px; color:var(--ink-soft); margin-bottom:18px;} .draft-box{ background:#fff; border-radius:14px; border:1px solid var(--line); padding:22px 20px; font-family:'Noto Serif TC',serif; font-size:16.5px; line-height:2.15; color:var(--ink); white-space:pre-wrap; min-height:160px; position:relative; z-index:1; } .draft-box .placeholder-tag{color:#C7B9AE;} .draft-box .filled-tag{color:var(--rose-deep); font-weight:500; border-bottom:1px dashed var(--rose);} .meta-tags{display:flex; gap:8px; margin-bottom:14px; flex-wrap:wrap;} .meta-tag{ font-size:12px; background:#fff; border:1px solid var(--line); padding:4px 12px; border-radius:99px; color:var(--ink-soft); } .actions{display:flex; gap:10px; margin-top:18px; flex-wrap:wrap;} .btn{ flex:1; min-width:120px; border:none; border-radius:99px; padding:14px 20px; font-size:14.5px; font-weight:600; cursor:pointer; font-family:'Noto Sans TC',sans-serif; transition:transform .15s ease, box-shadow .15s ease; display:flex; align-items:center; justify-content:center; gap:7px; } .btn:active{transform:scale(.97);} .btn:disabled{opacity:.55; cursor:not-allowed; transform:none;} .btn-primary{ background:var(--rose); color:#fff; box-shadow:0 6px 18px rgba(199,123,134,.35); } .btn-ghost{ background:transparent; color:var(--ink-soft); border:1.4px solid var(--line); } .ai-share-block{ margin-top:16px; padding-top:18px; border-top:1px dashed var(--line); } .ai-share-title{ font-size:13.5px; font-weight:600; color:var(--ink); margin-bottom:12px; line-height:1.7; } .btn-copy-prompt{ width:100%; border:1.4px solid var(--ink); background:#fff; color:var(--ink); border-radius:99px; padding:13px 20px; font-size:14px; font-weight:600; cursor:pointer; font-family:'Noto Sans TC',sans-serif; transition:background .18s ease, color .18s ease; } .btn-copy-prompt:active{background:var(--ink); color:#fff;} .btn-copy-prompt:disabled{opacity:.5; cursor:not-allowed;} .ai-links-row{ display:flex; gap:10px; margin-top:12px; flex-wrap:wrap; } .ai-link{ flex:1; min-width:96px; text-align:center; border:1.4px solid var(--line); background:var(--cream-deep); color:var(--ink); text-decoration:none; padding:10px 12px; border-radius:14px; font-size:13.5px; font-weight:500; transition:border-color .18s ease; } .ai-link:hover{border-color:var(--rose);} .ai-share-hint{ font-size:12px; color:var(--ink-soft); margin-top:10px; line-height:1.7; } .ai-error{ font-size:13px; color:var(--rose-deep); margin-top:10px; background:#FBEAEA; border:1px solid #E8C7C7; padding:10px 14px; border-radius:10px; display:none; } .toast{ position:fixed; left:50%; bottom:100px; transform:translateX(-50%) translateY(20px); background:var(--ink); color:#fff; font-size:13.5px; padding:11px 22px; border-radius:99px; opacity:0; transition:all .3s ease; pointer-events:none; z-index:100; white-space:nowrap; } .toast.show{opacity:1; transform:translateX(-50%) translateY(0);} footer{ text-align:center; padding:26px 20px 6px; font-size:12.5px; color:var(--ink-soft); line-height:1.9; } footer .heart{color:var(--rose);} @media (max-width:420px){ h1.title{font-size:33px;} .step-hint,.step-body{margin-left:0;} .step-head{flex-direction:column; align-items:flex-start;} } @media (prefers-reduced-motion: reduce){ *{transition:none !important;} } 0% 完成 誓詞書寫引導 誓詞靈感整理表 不套模板,陪你從回憶、感謝、承諾和未來生活裡,慢慢整理出一段真正像你們的話。 證婚誓詞・求婚告白・紀念日卡片・伴侶生日信 都適用 潔咪老師小教室@jamiex0406 1 這份話,想用在哪裡? 先選用途和語氣,等一下比較容易寫下去。 證婚誓詞 求婚告白 紀念日卡片 伴侶生日信 婚禮影片旁白 想呈現的語氣 溫柔 真誠 生活感 幽默一點 簡單不煽情 像自己平常說話 2 你想對誰說這段話? 寫下你平常怎麼稱呼對方,例如:阿哲、寶貝、我的太太。 3 我們的故事起點 你們第一次見面是什麼場景?哪一個瞬間讓你覺得這個人很特別? 4 那時候你的感覺 面對那個瞬間、那段回憶,你心裡是什麼感受? 5 我想謝謝你的事 對方曾在哪些時候支持你?有沒有一件事你很少說出口感謝? 6 我眼中的你 如果用三個詞形容對方,你會寫什麼? 7 我想和你一起過的生活 你希望未來很普通的一天裡,身邊有對方的哪個畫面? 8 我願意給你的承諾 先選一個最想放進誓詞裡的情境,再寫下你的承諾。 你低潮的時候 我們意見不同的時候 面對家人壓力的時候 生活很忙的時候 平凡的日子裡 未來變動來臨時 承諾內容 9 最後,想對他說的真心話 如果只能留一句話給對方,你會說什麼? ✦ 卡住的時候,套用這些句型 寫不出來沒關係,先套進公式裡,再慢慢改成自己的話。 公式一・回憶+感受+承諾 我一直記得____,那時候我感覺____,所以從今天開始,我想承諾____。 公式二・謝謝+看見+未來 謝謝你____,也謝謝你讓我看見____,未來我想和你一起____。 公式三・生活畫面+真心話 我想和你一起過____的日子,也想在____的時候陪著你,因為對我來說,____。 公式四・特質+承諾 我喜歡你的____,也心疼你的____。以後我會____,陪你一起____。 你的一分鐘誓詞草稿 填得越多,這段話會越完整,隨時可以再回去修改。 再多填幾題吧,內容太少沒辦法組成完整的一段話喔。 想要更完整、更細膩的版本?複製提示語,交給你常用的 AI 幫你潤稿 複製 AI 潤稿提示語 開啟 Claude 開啟 ChatGPT 開啟 Gemini 複製後,點開任一個 AI 對話視窗貼上,就能得到一段完整潤飾的誓詞。這個步驟由你自己的 AI 帳號處理,我們的網站不會產生任何費用。 ♡ 潔咪老師小教室 · @jamiex0406 15 年來,陪新人完成婚禮、證婚與人生重要儀式 已複製到剪貼簿 (function(){ const state = { usage:'', tone:'', name:'', memory:'', feeling:'', thanks:'', trait:'', future:'', promiseWhen:'', promiseWhenOther:'', promise:'', final:'' }; // single-select chip groups document.querySelectorAll('.chip-row[data-group]').forEach(row=>{ const group = row.dataset.group; row.querySelectorAll('.chip:not(.other-input)').forEach(chip=>{ chip.addEventListener('click', ()=>{ const already = chip.classList.contains('active'); row.querySelectorAll('.chip').forEach(c=>c.classList.remove('active')); if(!already){ chip.classList.add('active'); state[group] = chip.dataset.value; } else { state[group] = ''; } render(); }); }); }); const promiseOther = document.getElementById('promiseWhenOther'); promiseOther.addEventListener('input', ()=>{ if(promiseOther.value.trim()){ document.querySelectorAll('[data-group="promiseWhen"] .chip:not(.other-input)').forEach(c=>c.classList.remove('active')); state.promiseWhen = ''; } state.promiseWhenOther = promiseOther.value.trim(); render(); }); document.querySelectorAll('[data-field]').forEach(el=>{ el.addEventListener('input', ()=>{ state[el.dataset.field] = el.value.trim(); render(); }); }); function esc(s){ return s.replace(/&/g,'&').replace(//g,'>'); } function tag(val, ph){ if(val) return `${esc(val)}`; return `${ph}`; } function render(){ const name = state.name || ''; const when = state.promiseWhenOther || state.promiseWhen; const fields = [state.name, state.memory, state.feeling, state.thanks, state.trait, state.future, when, state.promise, state.final]; const filledCount = fields.filter(v=>v && v.length>0).length; const pct = Math.round((filledCount/9)*100); document.getElementById('progressFill').style.width = pct+'%'; document.getElementById('progressPct').textContent = pct; // meta tags const metaWrap = document.getElementById('metaTags'); metaWrap.innerHTML = ''; if(state.usage) metaWrap.innerHTML += `用途|${esc(state.usage)}`; if(state.tone) metaWrap.innerHTML += `語氣|${esc(state.tone)}`; const box = document.getElementById('draftBox'); box.innerHTML = `親愛的 ${tag(name,'____')}:\n\n` + `我一直記得 ${tag(state.memory,'____')}。\n` + `那時候我感覺 ${tag(state.feeling,'____')}。\n\n` + `這一路走來,我最想謝謝你 ${tag(state.thanks,'____')}。\n` + `我眼中的你,是一個 ${tag(state.trait,'____')} 的人。\n\n` + `未來的日子裡,我想和你一起 ${tag(state.future,'____')}。\n` + `我也願意在 ${tag(when,'____')} 的時候,${tag(state.promise,'____')}。\n\n` + `今天,我想把這句話好好說給你聽:\n${tag(state.final,'____________')}`; } function buildAIPrompt(){ const when = state.promiseWhenOther || state.promiseWhen; const lines = []; lines.push('請幫我把下面這些關於伴侶/另一半的填空內容,潤飾整理成一段完整、通順、有溫度的中文誓詞(繁體中文)。'); lines.push('要求:'); lines.push('1. 寫成一段可以直接唸出來的話,不要條列、不要加標題。'); lines.push(`2. 語氣請符合「${state.tone || '溫柔真誠'}」。`); lines.push(`3. 用途是「${state.usage || '誓詞/告白'}」。`); lines.push('4. 只能使用我提供的內容來延伸潤飾,不要編造我沒提到的具體事件或承諾。'); lines.push('5. 字數大約 150-260 字。'); lines.push(''); lines.push('【我填寫的內容】'); if(state.name) lines.push(`對方的稱呼:${state.name}`); if(state.memory) lines.push(`我們的故事起點/回憶:${state.memory}`); if(state.feeling) lines.push(`那時候的感覺:${state.feeling}`); if(state.thanks) lines.push(`我想謝謝對方的事:${state.thanks}`); if(state.trait) lines.push(`我眼中對方的特質:${state.trait}`); if(state.future) lines.push(`我想和對方一起過的生活:${state.future}`); if(when) lines.push(`承諾情境:${when}`); if(state.promise) lines.push(`承諾內容:${state.promise}`); if(state.final) lines.push(`最後想說的真心話:${state.final}`); return lines.join('\n'); } document.getElementById('copyPromptBtn').addEventListener('click', ()=>{ const when = state.promiseWhenOther || state.promiseWhen; const filledCount = [state.name, state.memory, state.feeling, state.thanks, state.trait, state.future, when, state.promise, state.final].filter(v=>v).length; if(filledCount < 3){ const t = document.getElementById('toast'); t.textContent = '再多填幾題吧,提示語才有內容可以潤稿喔'; t.classList.add('show'); setTimeout(()=>t.classList.remove('show'), 2000); return; } const prompt = buildAIPrompt(); navigator.clipboard.writeText(prompt).then(()=>{ const t = document.getElementById('toast'); t.textContent = '提示語已複製,點下方任一個 AI 貼上吧'; t.classList.add('show'); setTimeout(()=>t.classList.remove('show'), 2200); }).catch(()=>{ const t = document.getElementById('toast'); t.textContent = '複製失敗,請手動選取文字'; t.classList.add('show'); setTimeout(()=>t.classList.remove('show'), 2000); }); }); render(); })(); https://www.kidora.com.tw/hot_536601.html 潔咪老師限時分享「誓詞告白靈感整理表」 2026-07-10 2027-07-10
初心儀式|桃園到府抓周・文定迎娶・抓周主持培訓 桃園市 https://www.kidora.com.tw/hot_536601.html
初心儀式|桃園到府抓周・文定迎娶・抓周主持培訓 桃園市 https://www.kidora.com.tw/hot_536601.html
https://schema.org/EventMovedOnline https://schema.org/OfflineEventAttendanceMode
2026-07-10 http://schema.org/InStock TWD 0 https://www.kidora.com.tw/hot_536601.html

0% 完成
誓詞書寫引導

誓詞靈感整理表

不套模板,陪你從回憶、感謝、承諾和未來生活裡,
慢慢整理出一段真正像你們的話。

證婚誓詞・求婚告白・紀念日卡片・伴侶生日信 都適用


1
這份話,想用在哪裡?
先選用途和語氣,等一下比較容易寫下去。
證婚誓詞
求婚告白
紀念日卡片
伴侶生日信
婚禮影片旁白
想呈現的語氣
溫柔
真誠
生活感
幽默一點
簡單不煽情
像自己平常說話
2
你想對誰說這段話?
寫下你平常怎麼稱呼對方,例如:阿哲、寶貝、我的太太。
3
我們的故事起點
你們第一次見面是什麼場景?哪一個瞬間讓你覺得這個人很特別?
4
那時候你的感覺
面對那個瞬間、那段回憶,你心裡是什麼感受?
5
我想謝謝你的事
對方曾在哪些時候支持你?有沒有一件事你很少說出口感謝?
6
我眼中的你
如果用三個詞形容對方,你會寫什麼?
7
我想和你一起過的生活
你希望未來很普通的一天裡,身邊有對方的哪個畫面?
8
我願意給你的承諾
先選一個最想放進誓詞裡的情境,再寫下你的承諾。
你低潮的時候
我們意見不同的時候
面對家人壓力的時候
生活很忙的時候
平凡的日子裡
未來變動來臨時
承諾內容
9
最後,想對他說的真心話
如果只能留一句話給對方,你會說什麼?
卡住的時候,套用這些句型
寫不出來沒關係,先套進公式裡,再慢慢改成自己的話。
公式一・回憶+感受+承諾
我一直記得____,那時候我感覺____
所以從今天開始,我想承諾____
公式二・謝謝+看見+未來
謝謝你____,也謝謝你讓我看見____
未來我想和你一起____
公式三・生活畫面+真心話
我想和你一起過____的日子,
也想在____的時候陪著你,因為對我來說,____
公式四・特質+承諾
我喜歡你的____,也心疼你的____
以後我會____,陪你一起____
你的一分鐘誓詞草稿
填得越多,這段話會越完整,隨時可以再回去修改。
再多填幾題吧,內容太少沒辦法組成完整的一段話喔。
想要更完整、更細膩的版本?複製提示語,交給你常用的 AI 幫你潤稿
複製後,點開任一個 AI 對話視窗貼上,就能得到一段完整潤飾的誓詞。這個步驟由你自己的 AI 帳號處理,我們的網站不會產生任何費用。
潔咪老師小教室 · @jamiex0406
15 年來,陪新人完成婚禮、證婚與人生重要儀式
已複製到剪貼簿

回列表 下一個