[Gemini][Python] LINE Bot 跟 Google 自動化支付整合試試看 Agent Payments Protocol (AP2)

Agent Payments Protocol Graphic

現在 Agent 的相關框架相當的多,但是其實 Google 在日前也宣布了一個蠻有趣的傳輸協定 Agent Payments Protocol (AP2) ,用來做進銷存管理跟支付的一套 agent framework 。

LINE 2025-10-22 08.31.18

範例程式碼

https://github.com/kkdai/linebot-ap2

歡迎給 Star 與分享,如果覺得實用也歡迎參與貢獻添加一些新功能。

✨ 主要功能介紹

這個用 Golang 打造的 LINE 機器人提供了以下超實用的功能:

  • 多媒體檔案備份:支援將圖片、影片、音訊和一般檔案從 LINE 聊天備份到 Google Drive。
  • 聰明資料夾整理:自動在 Google Drive 建立一個 LINE Bot Uploads 資料夾,並以年月(YYYY-MM)為單位建立子資料夾,讓你的雲端硬碟乾淨整齊。
  • 安全帳號連結:採用 Google OAuth 2.0 授權,確保連線安全又可靠。
  • 快速查詢檔案:輸入 /recent_files 指令,就能快速查看最近上傳的 5 個檔案。
  • 靈活連線控制:隨時透過 /disconnect_drive 指令斷開 Google Drive 連線並撤銷授權。

LINE Bot 檔案備份到 Google Drive 的兩種上傳方式比較

這個用 Golang 寫成的 LINE 檔案備份機器人,讓使用者能輕鬆將聊天室中的檔案備份到 Google Drive。專案支援兩種上傳 Google Drive 的方式:Google Cloud Service AccountGoogle OAuth 2.0。以下是一張比較表格,詳細說明這兩種方式的運作方式、優點與缺點,幫助開發者選擇最適合的實作方式。

比較表格

項目 Google Cloud Service Account Google OAuth 2.0
運作方式 使用 Google Cloud 專案中的服務帳戶憑證(JSON 檔案),代表應用程式直接存取 Google Drive API,無需使用者手動授權。 使用者透過 OAuth 2.0 流程授權,允許機器人以使用者的身份存取其 Google Drive 帳戶。
設定複雜度 中等:需在 Google Cloud Console 建立服務帳戶、生成憑證,並分享特定 Google Drive 資料夾給服務帳戶。 較高:需設定 OAuth 同意畫面、建立 Web application 憑證,並處理回呼網址和權杖管理。
使用者體驗 無需使用者介入,檔案直接上傳到預設的 Google Drive 資料夾(通常由服務帳戶擁有或共享)。 使用者需手動點擊授權連結完成 OAuth 流程,授權後檔案上傳到使用者自己的 Google Drive。
權限控制 服務帳戶擁有固定的存取權限,需手動分享資料夾給服務帳戶,權限管理較集中。 使用者可控制授權範圍(如僅允許存取特定資料夾),並可隨時撤銷權限(/disconnect_drive)。
主要優點 - 自動化程度高,無需使用者手動授權。 - 適合集中管理檔案(例如企業場景)。 - 部署後幾乎無需使用者互動。 - 使用者擁有檔案完全控制權,符合個人化需求。 - 支援動態權限管理,安全性更高。 - 適合多使用者場景,每人備份到自己的 Google Drive。
主要缺點 - 檔案儲存在服務帳戶的 Google Drive 或共享資料夾,個人使用者可能無法直接管理。 - 需額外設定資料夾分享,增加初始配置複雜度。 - 不適合多使用者場景(除非為每個使用者設定獨立資料夾)。 - 使用者需完成 OAuth 授權流程,影響初始體驗。 - 需管理權杖更新(refresh token),程式碼較複雜。 - 部署時需處理回呼網址,增加設定步驟。
適合場景 企業或集中式應用,管理者希望統一管理所有備份檔案。 個人化應用,使用者希望檔案儲存在自己的 Google Drive 並保留完全控制權。
程式碼實作範例 (在這邊你可以貼上使用 Google Cloud Service Account 的 Golang 程式碼片段,例如初始化服務帳戶並上傳檔案的邏輯。) (在這邊你可以貼上使用 Google OAuth 2.0 的 Golang 程式碼片段,例如處理 OAuth 流程和上傳檔案的邏輯。)

兩種方式的詳細說明

Google Cloud Service Account

  • 運作原理:服務帳戶是 Google Cloud 提供的一種非人類帳戶,透過 JSON 憑證檔案進行身份驗證。你的 LINE 機器人使用服務帳戶的憑證直接呼叫 Google Drive API,將檔案上傳到指定的資料夾。這個資料夾可以是服務帳戶自己的 Google Drive,或是管理者分享給服務帳戶的資料夾。
  • 優點
    • 無需使用者介入,適合全自動化流程。
    • 適合企業場景,例如所有員工的 LINE 聊天檔案備份到公司統一管理的 Google Drive。
    • 程式碼相對簡單,只需初始化服務帳戶並設定 API 呼叫。
  • 缺點
    • 檔案儲存在服務帳戶的 Google Drive 或共享資料夾,使用者無法直接管理(除非透過共享權限)。
    • 每個使用者若需獨立資料夾,需額外程式邏輯來動態管理資料夾分享。
    • 初始設定需手動分享 Google Drive 資料夾給服務帳戶的電子郵件地址。

(你可以在這裡貼上服務帳戶的 Golang 程式碼,例如使用 google.golang.org/api/drive/v3 套件初始化服務帳戶並上傳檔案的片段。)

Google OAuth 2.0

  • 運作原理:使用者透過 LINE 機器人點擊 /connect_drive 指令,觸發 OAuth 2.0 授權流程,允許機器人存取其 Google Drive。機器人會取得存取權杖(access token)和更新權杖(refresh token),用以代表使用者上傳檔案到其個人 Google Drive。
  • 優點
    • 使用者擁有檔案的完全控制權,檔案直接儲存在自己的 Google Drive。
    • 支援動態權限管理,使用者可隨時撤銷授權(透過 /disconnect_drive)。
    • 適合個人化應用,特別是多使用者場景,每人備份到自己的 Google Drive。
  • 缺點
    • 使用者需手動完成 OAuth 授權流程,可能影響初始體驗。
    • 程式碼需處理權杖管理(例如更新過期的 access token),增加開發複雜度。
    • 部署時需設定回呼網址(redirect URI),並確保與 Cloud Run 的 URL 一致。

(你可以在這裡貼上 OAuth 的 Golang 程式碼,例如使用 golang.org/x/oauth2 套件處理授權流程和檔案上傳的片段。)

🚀 在 Google Cloud Platform 上部署

這個專案使用 Golang 開發,並已容器化(包含 Dockerfile),非常適合部署在 Google Cloud Run 上。Cloud Run 提供全代管的無伺服器環境,自動擴展超方便!以下是部署的完整步驟。

前置準備

開始之前,請確認你已經準備好:

  • 一個 Google Cloud 帳號。
  • 安裝並設定好 Google Cloud SDK(gcloud CLI)。
  • 一個 LINE Bot 頻道,並取得 Channel Secret 和 Channel Access Token。

部署步驟

1. 啟用必要 API

為了讓機器人正常運作,需要在 Google Cloud 專案中啟用以下服務:

  • Cloud Run API
  • Cloud Build API(用來自動建置容器映像檔)
  • Firestore API(用來儲存使用者授權資料)

在終端機執行以下指令快速啟用:

gcloud services enable run.googleapis.com cloudbuild.googleapis.com firestore.googleapis.com

2. 建立 Firestore 資料庫

  • 前往 Google Cloud Console 的 Firestore 頁面。
  • 選擇「原生模式(Native mode)」。
  • 挑選離你的使用者最近的地區,然後建立資料庫。

3. 取得 Google OAuth 憑證

這是讓機器人能存取 Google Drive 的關鍵步驟:

  • 前往 Google Cloud Console > APIs & Services > Credentials。 (Google Auth Platform)
  • 點擊 + CREATE CREDENTIALS,選擇 OAuth client ID

image-20250829161538979

  • 在 Application type 中選 Web application,並命名(例如「LINE Bot File Uploader」)。
  • 這一步先不要填寫 Authorized redirect URIs,等 Cloud Run 部署完成後再回來設定。

image-20250829161558554

  • 建立後,你會得到一組 Client IDClient Secret,請妥善保存,後面會用到。

成果展示

image-20250829162044191

  • 如果沒有認證過,會出現請認證的說明。
  • 點選網址認證 Google Drive 的上傳權限即可。
  • 如果不想使用,也可以使用 /disconnect_drive 來撤銷相關授權。

image-20250829161720900

  • 上傳檔案也很簡單,支援兩種格式。
    • 直接上傳圖片,會將圖片上傳到 google drvie 保存。
    • 透過 iOS / AOS 將 PDF 或是任何檔案格式,轉貼到對話視窗。也可以精準上傳到 Google Drive。檔案也可以超過 50MB
  • 要看檔案,就點選查詢最近檔案,就會開啟 Google Drive 網頁去查看檔案列表。

未來展望

這個用 Golang 開發的 LINE 檔案備份機器人開啟了許多有趣的應用場景:

  • 自動化檔案管理:讓你的 LINE 聊天檔案自動整理到 Google Drive,省時又省力。
  • 團隊協作:在群組聊天中快速備份和分享檔案,提升工作效率。
  • 個人化功能:根據需求擴充功能,例如自訂資料夾結構或檔案命名規則。
  • 數據分析:分析上傳檔案的類型和頻率,優化機器人功能或提供使用統計。

(如果你有其他 Golang 相關的程式碼片段,例如處理 Google Drive API 或 Firestore 的部分,可以在這裡貼上,進一步展示 Golang 在這個專案中的應用。)

這些應用不僅能提升個人和團隊的檔案管理體驗,還能為開發者帶來更多創意應用的靈感。快動手部署你的 LINE 檔案備份機器人,體驗 Golang 和雲端整合的便利吧!

[數位憑證皮夾] 入門版 - 如何創立一個新的數位憑證與驗證方式,應用場景為一間公司的 HR 補助申請(附上範例修改程式重點)

image-20251009102618401

(圖片來源: 數位憑證皮夾官方網站)

前提:

數位憑證皮夾是近幾年數發部推動的一個主要政策,希望是透過數位憑證皮夾來取代大大小小的證件、會員卡跟相關的實體晶片卡片。數位憑證皮夾可以是一單一的一個 App ,甚至可以是讓所有的 App 都來當數位憑證皮夾。

這一篇文章稍微解釋數位憑證皮夾的使用方法,還有如何應用數位憑證皮夾,透過一個場景來建立一個數位憑證的發行方與數個認證方。

先來玩一下數位憑證皮夾

首先你需要下載數位憑證皮夾的官方 App (目前 iOS 是 TestFlight 版本)

image-20251009103231602

下載之後,你會發現好像裡面空空的。那是因為你還沒有建立你自己的卡片。

測試記者會的相關流程

打開 App 會看到有以下

image-20251009113551533

建議可以先加入

  • OTP 電子卡(需要輸入電話,收簡訊)
  • 駕照電子卡(可以輸入測試資料沒問題)

加入了相關憑證後,就可以透過出示憑證來測試。 建議可以走「超商取貨」的範例來測試一下。

image-20251009114128661

可以看到,超商領貨需要兩種資料,是可以從兩種數位憑證上面取得。

  • 駕照卡 -> 姓名
  • OTP卡 -> 電話

然後都不需要其他的欄位,這就是選擇性揭露的原則。

數位豆泥卡範例 Web App

網址: https://mashbeanvc.tonyq.org/

Google Chrome 2025-10-09 17.39.55

這個 Web App 作為展示有以下兩個主要功能:

  • 申請一張豆泥卡(只需要暱稱,生日是選填)
  • 幫豆泥點蠟(也就是驗證的意思)

這個範例也充分了應用以下主要 API :

打造一個簡單數位憑證驗證場景吧 (HR數位員工卡系統)

Avatar

接下來要做一個給 HR 的數位員工卡系統,需要有以下的相關功能:

  • 連線小學堂的同仁可以自行申請一張員工卡(輸入: 姓名、英文名字、出生年月日、入職年份、養育小孩數字)
  • 可以申請以下兩種補助:分別是育兒補助跟體育補助兩種。
  • 育兒補助條件:
    • 英文名字(作為帳戶匯款用)
    • 需要入職滿一年
    • 需要有一個小孩以上
  • 體育補助:
    • 需要入職滿一年
    • 英文名字(作為帳戶匯款用)

以上就是一個使用數位憑證皮夾的系統的假設場景,接下來要來說明要如何打造。

透過沙盒系統來設計與發行相關數位憑證

申請沙盒相關流程:

發行數位憑證

(可以參考官方的發行端使用手冊)

到了 發行端沙盒系統 (負責建立發行數位憑證) 透過「建立VC模板」

image-20251010132418021

建立以下的數位憑證

Google Chrome 2025-10-10 13.12.08

其中有一些資料需要記住:

  • 序號
  • 證件類型(credentialType)

這邊可以透過「產生 VC 資料」來輸入一個新的資料。

image-20251010132543934

這樣就會產生一個 QR Code 並且可以讓你匯入到數位錢包之內。

驗證數位憑證

(可以參考官方的驗證端使用手冊)

這邊解釋一下,如何建立一個運動補助的數位憑證驗證的方法,首先來複習一下「運動補助」的條件有哪些:

體育補助條件:

  • 需要入職滿一年
  • 英文名字(作為帳戶匯款用)

接下來,你可以到 「建立 VP 」經過以下流程來創立一個。

image-20251010133429458

  • 輸入 VP 的名字

image-20251010133415287

  • 挑選你需要的群組名稱,

  • 挑選 VC 資料,我這邊就挑選剛剛建立的「連線小學堂」也就是挑選你剛剛建立的數位憑證樣板。

image-20251010133450566

  • 挑選要驗證的數位憑證欄位
  • 因為運動補助只需要知道「入職時間」跟「英文名字」就可以,就不需要挑選其他的資料欄位。

最後就會出現一個 QR Code 看做為驗證使用。

透過 SwaggerUI : 來了解各種 API 的使用方法

接下來透過官方提供的 SwaggerUI 介面,與一些 API 來跟大家講如何找到這些變數。

發行端 SwaggerUI 參數說明

網址: 發行端 SwaggerUI

輸入 API_Key (Access Token)

image-20251010143636547

這個資料在當初註冊沙盒的時候發送兩封信件之一 : 「【數位憑證皮夾】發行端沙盒系統_帳號啟用通知」。

發行端產生 QR Code /api/qrcode/data

image-20251010144626368

這邊會需要輸入一個參數 vcUid ,請去 發行端沙盒系統 (負責建立發行數位憑證) 找到你發行的數位憑證,點下編輯即可看到相關資訊。

image-20251010145116814

這個 /api/qrcode/data 會需要有資料欄位,這邊可能會比較不容易在介面上一個個填寫。可以先用 /api/qrcode/nodata 來測試。

特別說明 - /api/vc-item-data

但是程式碼中會使用到的 APO /api/vc-item-dataSwaggerUI 沒有出現。

相關資訊如下: (以我上面資訊舉例)

  • vcId: 607861
  • vcCiD: 0028680530_line_school
curl -X 'POST' \
  'https://issuer-sandbox.wallet.gov.tw/api/vc-item-data' \
  -H 'accept: */*' \
  -H 'Access-Token: YOUR_ACCESS_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "vcId": 607861,
  "vcCid": "0028680530_line_school",
  "fields": [
    {
      資料省略
    },
}'

驗證端 SwaggerUI 參數說明

網址: 驗證端 SwaggerUI

關於 Authorize 的流程跟發行端相同,就跳過。

產生驗證端的 QR Code /api/oidvp/qrcode

這邊會需要有兩個參數

Microsoft PowerPoint 2025-10-10 15.17.10

  • transactionId: 這個需要一個 UUID 的字串,可以用 SwaggerUI 上面原本數值來修改一下即可。

如果資料成功,會出現以下相關資料:

{
  "transactionId": "104158f9-b1dc-4f76-847e-86f6af36d917",
  "qrcodeImage": "data:image/png;base64,...",
  "authUri": "modadigitalwallet://authorize?..."
}

其中:

  • transactionId: 就是你填寫得資料
  • qrcodeImage: base64 的圖片
  • authUri: 就是一個 deeplink 可以開啟 iOS App 數位錢包的 App 並且執行相關的驗證。

最後: 來修改程式與使用相關的參數

image-20251010142916050

接下來程式碼放在這個地方: https://github.com/kkdai/did-usecase-HR ,但是我們先透過發行端跟驗證端的 SwaggerUI 介面來跟大家分享一下,該使用哪些資訊。

各位可以查詢 .env.example 可以看到相關說明 (網址)

# 卡片序號,從發行後台取得
VC_SERNUM=YOUR_VC_SERNUM

# 卡片樣板代號,從發行後台取得
VC_UID=YOUR_VC_UID

# 發行者存取權杖,從發行後台取得
ISSUER_ACCESS_TOKEN=YOUR_ISSUER_ACCESS_TOKEN

# 驗證器參考碼
VERIFIER_SPORT_REF=YOUR_VERIFIER_REF_FOR_SPORT_SUBSIDY
VERIFIER_PARENT_REF=YOUR_VERIFIER_REF_FOR_PARENT_CHECK

# 驗證器存取權杖
VERIFIER_ACCESS_TOKEN=YOUR_VERIFIER_ACCESS_TOKEN

裡面的 VC_SERNUM 就是剛才提到的 vcId 。 其他就可以快速理解才對。

範例使用方式:

可以本地端執行測試一下

建立員工卡

image-20251010152639239

可以快速輸入資料,並且產生一張員工卡。

申請運動補助

image-20251010152718672

點選 運動補助(驗證) 就可以進入申請運動補助,並且透過掃描 QR Code 來傳輸需要的資料。

直接線上體驗?

可以直接打開這個網址來測試。

總結與未來展望

這是一個數位憑證沙盒的展示場景與 demo program ,大部分程式碼還是透過 TonnyQ 當初打造出來的樣板修改的。主要是希望讓大家可以對於數位憑證沙盒能有基礎的理解,這樣的應用場景只會是許多有創意中的起點。很期待可以看到許多有趣的想法與應用場景在未來的應用上。

[好書分享] 折疊者思維 - 做個好軍師,將領導者天馬行空的發想落實,成為不可或缺的得力助手

折疊者思維
做個好軍師,將領導者天馬行空的發想落實,成為不可或缺的得力助手
作者: 設樂悠介  原文作者: Shidara Yusuke  
譯者: 莊雅琇  
出版社:時報出版 

買書推薦網址:

前言:

這是 2025 年第 8 本讀完的書。當初買到這本書,因為在公司內部我經常擔任著協助許多專案去「折疊」的角色。所以想來看看這位作者說的角色究竟是如何扮演。

大綱

幻冬舍社長見城徹欽點新事業主管,與知名編輯箕輪厚介共同打造最高業績團隊的重要推手--設樂悠介,傾囊相授他二十年來成為最佳折疊者的實戰經驗。

看他如何從一名將編輯立為職志的新鮮人,誤打誤撞從小業務員開始,一步步用「折疊者思維」在不到四十歲即成為幻冬舍Comics的董事、編輯本部內容產業局副局長。

「折疊」與「攤開」的由來

在日本有名的日文國語辭典《廣辭苑》中提到【攤開包袱巾】(大風呂敷を広げる),是指「說話或做事不切實際,說大話的意思。」所以本書將其稱為「攤開」者,也就是把工作創意從無到有發想出來的人。

而【折疊包袱巾的人】(風呂敷畳み人)是相對的角色,作者在所主持的節目《折疊包袱巾的人廣播電台》中,稱其為「折疊」者,指讓創意聚焦、穩定執行的人。

彼得•杜拉克說:策略是平價商品,執行力乃是藝術。
學會「摺疊者思維」,累積執行力,方能在最終做到自己的想望!
折疊者:是指具體實踐工作創意,並且穩步實行的人。他可以說是領導者(攤開者)身邊的「軍師」或「得力助手」。

《折疊者思維》重點整理

本書以「折疊者」(負責具體實踐創意、穩步執行的軍師型角色)與「攤開者」(提出天馬行空想法的領導者)為核心概念,探討商務領域中折疊者的重要性、角色、心態與實務技巧。以下根據劃線內容,按章節或主題小節整理重點,聚焦於定義、角色、團隊管理、溝通、時間管理及個人經驗。

什麼是「折疊者」?

  • 折疊者源自「折疊包袱巾的人」(風呂敷畳み人),在商務中指具體實踐攤開者(提出創意者)的想法,並穩步執行的人。折疊者是領導者身邊的「軍師」或「得力助手」,負責將抽象願景轉化為可行行動。
  • 為什麼「折疊者」如此重要?許多團隊缺乏將創意具體實現的實行能力與經驗,甚至連指揮人才也不足。折疊者填補此空白,確保專案順利推進。

對「攤開者」的創意產生共鳴並樂在其中

  • 折疊者應從一開始就對攤開者的創意表示興趣,成為支持者而非評論家。尋找創意中的有趣之處,心想「說不定有潛力」,才能發自內心提出正面意見。
  • 想出創意的人最初排斥否定,因此折疊者首要工作是與攤開者一起樂在其中,從構想階段就響應支持。

先支持攤開者的想法,再適時修正

  • 反駁或建議前,先對創意表示感興趣,成為同盟。這是折疊者的首要之務,避免一開始就否定。
  • 攤開者詢問看法時,首先表達興趣;之後再提出修正,確保創意順利發展。

請努力成為世界上最了解攤開者的人

  • 折疊者是最能與攤開者近距離交流的人,應成為最了解攤開者的人。這有助推動團隊,並是折疊者應有的心態。
  • 成為攤開者堅強的夥伴,與他共享祕密:對風險高的創意表示興趣,與攤開者協力實行;若攤開者徬徨,則聆聽心聲,提供盟友支持。

折疊者要察覺且預想所有的風險

  • 折疊者負責替攤開者設想各種風險,再付諸實行,讓攤開者全心發想創意。
  • 看準機會,隨時把掌控權拿到手:折疊者可在實行過程中視情況控制攤開者,將創意融入專案。痛快之處在於「成功反擊」的那一刻(比喻為反擊,非真實衝突)。

成為宣揚攤開者熱情的傳教士與翻譯

  • 折疊者身為最理解攤開者的人,負責將攤開者的熱忱翻譯給團隊成員。
  • 除了熱忱,還需補充明確指示,讓第一線成員能付諸實行。攤開者的願景常龐大抽象,折疊者將其具體傳達,提升團隊執行力。

成為最能理解團隊成員的人

  • 折疊者也需成為最理解團隊成員的人,掌握各成員的工作情況與狀態,並視情況將意見傳達給攤開者。
  • 平時多聽團隊心聲,定期安排一對一溝通,建立「打開天窗說亮話」的關係(如成員先私下分享想法)。讓成員知曉自己被關心與理解。
  • 下令「Do」的是攤開者,傳達「How」的是折疊者:折疊者指導成員最適切方式,提升團隊效率。

選擇團隊成員最重要的是熱忱

  • 建立團隊關鍵在「人」,招募階段優先召集對專案產生共鳴的夥伴。技能重要,但「共鳴」與「熱忱」才是成敗關鍵,人會竭盡全力實現內心渴望。
  • 本來就不會有100%的完美團隊:專案規模越大,成員越多,困擾越顯(如提升表現)。年輕時可動用「犯規」手段(如強力推動),但需依賴優秀團隊。

成功是團隊成員的功勞,失敗是自己的責任

  • 上司搶功是犯規行為,折疊者不可如此。分辨好上司的關鍵:是否做出適當決定、獲得下屬信賴。
  • 一個好的折疊者,一定會成為好的攤開者:曾任折疊者者具備技能,能盡情揮灑創意。作者經驗:上司長期企劃中任折疊者,電子書業務則任攤開者;與夥伴創立事業時自告奮勇任折疊者,《新經濟》則任徹底攤開者。專案少不了折疊者,缺席時需身兼兩職,極為吃力。

專欄 我就這樣成為「折疊者」4:遇見好上司好戰友,成就了優秀的折疊者

  • 遇見好上司(如常問「你們想做什麼?」)與戰友(如箕輪),成就優秀折疊者。平時交流新事業想法,組成團隊,互相支持。

溝通1 禮貌是工作上的「高CP值武器」

  • 拜託工作後,即使瑣事也道謝,是構築和諧人際的關鍵。緊急時更不可忘,否則下次委託易遭推託(情緒影響行為)。
  • 打招呼是基本且值回票價的舉動,在公司內主動朝氣十足地打招呼,日積月累讓人際更和諧。

溝通3 明白上司真正的想法再執行

  • 收到指示後,不要只言聽計從,需發揮想像力思考「上司的目的為何」,正確解讀深意。

時間管理4 按照緩急程度列代辦清單

  • 先分成四大類,再製待辦清單。若太瑣碎,可按時間順序分「現在立刻」、「稍後再做」、「長期來看」三大類。
  • 可設多頁管理,或在單一清單用記號區隔(省換頁,一目了然,易移動分類)。

心得

先來定義一下,這邊提出的「折疊者」角色,有一點類似「專案/ 產品推動者」。需要完成產品與專案開發與推動中的所有相關的事項,並且能完成「展開者」(也就是專案發起與主要發起者)的工作。

經過不少年的工作經驗,你會發現許多工程師其實都是相當具有想像力的(我自己也是),但是往往能把一些日常瑣事完成的卻相當的少。這樣也就造成了,許多有創意的點子或是產品被扼殺在一開始、許多好的想法在許多公司內的規範下被拒絕掉了。

但是偏偏我又是一個相當鐵頭的人,只要大家告訴我不行的事情,如果我認回很重要,我就會一路往上跑道儘量能申訴的地方為止。也就是除非是公司高層告訴我不能做,或是給我一個理由不可以去執行。不然我不會去聽信一個平常操作端的人因為想要便宜行事的回覆。

「折疊者」這一本書也就是圍繞著這樣角色的一本書籍,也希望每一個想要「將事情做好而非將事情做完」的人,能夠好好的閱讀。

[好書分享] 關鍵七秒,決定你的價值

關鍵七秒,決定你的價值
國際非語言溝通專家教你練就不經思考,秒現有自信、魅力與競爭力的「行為履歷」
The Million Dollar Handshake : The ultimate guide to revolutionise how you connect and communicate in business and life
作者: 凱薩琳‧ 莫洛伊  譯者: Catherine Molloy  林吟貞  
出版社:采實文化 

買書推薦網址:

前言:

這是 2025 年第 7 本讀完的書。這一本書當初買的時候,是因為當時很盛行所謂的 電梯推廣 (elevator pitch)。所以看到這一本書的封面,就想透過這一本書來學習如何快速的可以讓不熟悉你的人有著良好的印象。

大綱

你的「行為履歷」如影隨形,七秒就決定大家對你的評價!
翻轉形象、創造優勢、贏得好口碑,從微調「行為履歷」開始!

國際非語言溝通專家凱薩琳.莫洛伊,擁有超過25年的銷售與培訓實戰經驗,
22歲時就拿下銀行業務全國的銷售冠軍,後來接下培訓的工作。
讓她思考,為什麼自己可以馬上跟他人建立有力的關係,而其他人卻不行。

於是,她開始研究肢體語言、NLP、心理學等領域,
研究指出,當人在做出決定時,
潛意識會展現「行為履歷」,直到大腦有意識前,會延遲七到九秒,
而她發現自己就是掌握了這七秒鐘,因此決定了自己價值的決勝關鍵。

無論是微表情、微動作、各種姿勢和聲音……
這些無意識的非語言溝通,就是所謂的「行為履歷」,
都影響著我們的生活、職場等生涯大事,
如果不懂掌握自己的「行為履歷」,就算你的履歷寫得再完美,也沒用!

因此,只要把握這短短的關鍵七秒,
不僅能因此提升自信、減緩緊張情緒,還能提高你的魅力值,
讓你無往不利,到哪裡都大受歡迎、強化競爭力──

1. 良好溝通的兩要素:有意識傾聽與提問

重點:

  • 主動傾聽與提問:良好的溝通建立在有意識地傾聽對方並提出適當問題的基礎上,這有助於建立連結與理解。
  • 扮演主人角色:在社交場合中,假想自己是活動主人,能減輕自身壓力,轉而專注於關心他人,提升互動品質。
  • 融入社交場合:若獨自一人,可主動尋找其他獨自參加者,或加入小團體,通過分享食物(如遞送起司托盤)或在自助餐排隊時與人交談,來開啟對話。
  • 禮貌結束對話:在社交活動中,若需離開對話,可微笑著表示享受對話但需去見其他人,這是一種不冒犯的自然方式,因為這是社交場合的常態。

2. 致勝細節藏在名片裡

重點:

  • 名片的價值:接受他人名片時應表現尊重,即使不感興趣,也應收下並小心存放(如放入名片盒或外套口袋),因為名片是建立潛在客戶或未來合作機會的工具。
  • 第一印象的重要性:你只有七秒鐘留下好印象,若首次印象不佳,需後續十二次積極互動來修補關係。多次接觸有助於逐漸建立信任與好感。
  • 文化差異的非語言溝通:不同文化對肢體語言的解讀不同。例如,澳洲點頭表示同意,搖頭表示不同意;而在某些阿拉伯國家,低頭表示不同意,抬頭表示同意;希臘點頭可能表示不同意;泰國、寮國、菲律賓則以頭後仰表示同意。理解這些差異有助於跨文化溝通。

3. 認知會影響心態

重點:

  • 自我賦能:你的思想具有強大力量,沒有人能改變你的想法或感受。通過觀看勵志影片、閱讀書籍,強化正面心態,並有意識地提升溝通技巧,為成功奠定基礎。
  • 避免自我毀滅:與自我領導相反,自我毀滅是指將失敗歸咎於他人,認為自己無法控制行為或心態。應積極掌控自己的心態與行動。
  • BLAST法則:這是一套處理客戶或員工問題的實用方法:
    1. 相信(Believe):相信對方的說法,因為這是他們的真實感受。
    2. 傾聽(Listen):積極傾聽並提問以理解需求。
    3. 行動(Action):採取行動解決問題。
    4. 滿足(Satisfy):確認對方是否滿意。
    5. 感謝(Thank):感謝對方的反饋或參與。
  • 正面肢體語言的影響:微笑等正面肢體語言具有吸引力,能讓他人對你產生好感。例如,微笑會引發他人回以笑容,增強互動的正面氛圍。
  • 目標視覺化:在年底寫一封信給自己,假設未來一年的目標已達成,具體寫下至少三件期望實現的事情(如新房子、合作新客戶、公益計畫成功)。這種視覺化能強化積極心態並促進目標實現。

4. 肢體語言很主觀,得更細心觀察

重點:

  • 七秒鐘的非語言印象:在初次見面時,通過以下七種非語言表達方式留下好印象:
    1. 面帶微笑,展現親和力。
    2. 調整積極的態度,散發正能量。
    3. 保持直挺姿勢,顯得自信且有能力。
    4. 維持適當的眼神接觸,建立信任。
    5. 使用開放式手勢,避免雙臂或雙腿交叉,顯示開放態度。
    6. 放鬆呼吸,保持冷靜與自信。
    7. 運用「百萬之握」(堅定有力的握手),傳達專業與熱情。
  • 細心觀察的必要性:肢體語言因人而異,需細心觀察對方的反應,以確保正確解讀並適當調整自己的非語言表達。

心得

人是一個很注重第一印象的動物,而這一本書強化你應該要如何做好這件事情。 有很多的方向與方法提供給讀者,都相當的實用。就算你第一次失敗了,雖然需要花費比較久的時間,但是這一本書也有給你相關的方向來解決問題。人們都希望自己被尊重,被重視,並且能有足夠表達自己的機會。能夠根據這本書講出的一些重點,也就能清楚的讓對方感受到你的誠意。

雖然我自稱是外向人,因為工作需求:但是其實我內心相當的害羞去接觸人的(是不是沒人相信)。所以每次到了社交場所都會給自己一個任務,「必須要認識OOO公司的XXX」「必須要達成XXX得推廣任務」。透過這個方式來讓自己去認識更多的人,也希望讀過這本書能讓開頭的七秒鐘能夠更加的順暢。

[Gemini][Golang] 打造一個用 Golang 開發的 LINE 檔案備份機器人到 Google Drive

image-20250829153659791

平常在使用 LINE 跟朋友.家人聊天的時候,總是會收到許多不同的檔案。比如說小孩的開學課表、旅行社的旅行資料、或是一些文件。這時候會擔心超過一定時間造成檔案的失效,就可以使用這一次要跟大家分享的功能。 「LINE Bot 檔案備份機器人」:這款功能強大的 LINE 機器人使用 Golang 開發,能自動將聊天室中的多媒體檔案備份到你的 Google Drive,還能聰明整理資料夾並提供簡單的查詢功能。這篇技術部落格將帶你認識這個機器人的核心功能,並一步步教你如何上部署它。

範例程式碼

https://github.com/kkdai/linebot-file

歡迎給 Star 與分享,如果覺得實用也歡迎參與貢獻添加一些新功能。

✨ 主要功能介紹

這個用 Golang 打造的 LINE 機器人提供了以下超實用的功能:

  • 多媒體檔案備份:支援將圖片、影片、音訊和一般檔案從 LINE 聊天備份到 Google Drive。
  • 聰明資料夾整理:自動在 Google Drive 建立一個 LINE Bot Uploads 資料夾,並以年月(YYYY-MM)為單位建立子資料夾,讓你的雲端硬碟乾淨整齊。
  • 安全帳號連結:採用 Google OAuth 2.0 授權,確保連線安全又可靠。
  • 快速查詢檔案:輸入 /recent_files 指令,就能快速查看最近上傳的 5 個檔案。
  • 靈活連線控制:隨時透過 /disconnect_drive 指令斷開 Google Drive 連線並撤銷授權。

LINE Bot 檔案備份到 Google Drive 的兩種上傳方式比較

這個用 Golang 寫成的 LINE 檔案備份機器人,讓使用者能輕鬆將聊天室中的檔案備份到 Google Drive。專案支援兩種上傳 Google Drive 的方式:Google Cloud Service AccountGoogle OAuth 2.0。以下是一張比較表格,詳細說明這兩種方式的運作方式、優點與缺點,幫助開發者選擇最適合的實作方式。

比較表格

項目 Google Cloud Service Account Google OAuth 2.0
運作方式 使用 Google Cloud 專案中的服務帳戶憑證(JSON 檔案),代表應用程式直接存取 Google Drive API,無需使用者手動授權。 使用者透過 OAuth 2.0 流程授權,允許機器人以使用者的身份存取其 Google Drive 帳戶。
設定複雜度 中等:需在 Google Cloud Console 建立服務帳戶、生成憑證,並分享特定 Google Drive 資料夾給服務帳戶。 較高:需設定 OAuth 同意畫面、建立 Web application 憑證,並處理回呼網址和權杖管理。
使用者體驗 無需使用者介入,檔案直接上傳到預設的 Google Drive 資料夾(通常由服務帳戶擁有或共享)。 使用者需手動點擊授權連結完成 OAuth 流程,授權後檔案上傳到使用者自己的 Google Drive。
權限控制 服務帳戶擁有固定的存取權限,需手動分享資料夾給服務帳戶,權限管理較集中。 使用者可控制授權範圍(如僅允許存取特定資料夾),並可隨時撤銷權限(/disconnect_drive)。
主要優點 - 自動化程度高,無需使用者手動授權。 - 適合集中管理檔案(例如企業場景)。 - 部署後幾乎無需使用者互動。 - 使用者擁有檔案完全控制權,符合個人化需求。 - 支援動態權限管理,安全性更高。 - 適合多使用者場景,每人備份到自己的 Google Drive。
主要缺點 - 檔案儲存在服務帳戶的 Google Drive 或共享資料夾,個人使用者可能無法直接管理。 - 需額外設定資料夾分享,增加初始配置複雜度。 - 不適合多使用者場景(除非為每個使用者設定獨立資料夾)。 - 使用者需完成 OAuth 授權流程,影響初始體驗。 - 需管理權杖更新(refresh token),程式碼較複雜。 - 部署時需處理回呼網址,增加設定步驟。
適合場景 企業或集中式應用,管理者希望統一管理所有備份檔案。 個人化應用,使用者希望檔案儲存在自己的 Google Drive 並保留完全控制權。
程式碼實作範例 (在這邊你可以貼上使用 Google Cloud Service Account 的 Golang 程式碼片段,例如初始化服務帳戶並上傳檔案的邏輯。) (在這邊你可以貼上使用 Google OAuth 2.0 的 Golang 程式碼片段,例如處理 OAuth 流程和上傳檔案的邏輯。)

兩種方式的詳細說明

Google Cloud Service Account

  • 運作原理:服務帳戶是 Google Cloud 提供的一種非人類帳戶,透過 JSON 憑證檔案進行身份驗證。你的 LINE 機器人使用服務帳戶的憑證直接呼叫 Google Drive API,將檔案上傳到指定的資料夾。這個資料夾可以是服務帳戶自己的 Google Drive,或是管理者分享給服務帳戶的資料夾。
  • 優點
    • 無需使用者介入,適合全自動化流程。
    • 適合企業場景,例如所有員工的 LINE 聊天檔案備份到公司統一管理的 Google Drive。
    • 程式碼相對簡單,只需初始化服務帳戶並設定 API 呼叫。
  • 缺點
    • 檔案儲存在服務帳戶的 Google Drive 或共享資料夾,使用者無法直接管理(除非透過共享權限)。
    • 每個使用者若需獨立資料夾,需額外程式邏輯來動態管理資料夾分享。
    • 初始設定需手動分享 Google Drive 資料夾給服務帳戶的電子郵件地址。

(你可以在這裡貼上服務帳戶的 Golang 程式碼,例如使用 google.golang.org/api/drive/v3 套件初始化服務帳戶並上傳檔案的片段。)

Google OAuth 2.0

  • 運作原理:使用者透過 LINE 機器人點擊 /connect_drive 指令,觸發 OAuth 2.0 授權流程,允許機器人存取其 Google Drive。機器人會取得存取權杖(access token)和更新權杖(refresh token),用以代表使用者上傳檔案到其個人 Google Drive。
  • 優點
    • 使用者擁有檔案的完全控制權,檔案直接儲存在自己的 Google Drive。
    • 支援動態權限管理,使用者可隨時撤銷授權(透過 /disconnect_drive)。
    • 適合個人化應用,特別是多使用者場景,每人備份到自己的 Google Drive。
  • 缺點
    • 使用者需手動完成 OAuth 授權流程,可能影響初始體驗。
    • 程式碼需處理權杖管理(例如更新過期的 access token),增加開發複雜度。
    • 部署時需設定回呼網址(redirect URI),並確保與 Cloud Run 的 URL 一致。

(你可以在這裡貼上 OAuth 的 Golang 程式碼,例如使用 golang.org/x/oauth2 套件處理授權流程和檔案上傳的片段。)

🚀 在 Google Cloud Platform 上部署

這個專案使用 Golang 開發,並已容器化(包含 Dockerfile),非常適合部署在 Google Cloud Run 上。Cloud Run 提供全代管的無伺服器環境,自動擴展超方便!以下是部署的完整步驟。

前置準備

開始之前,請確認你已經準備好:

  • 一個 Google Cloud 帳號。
  • 安裝並設定好 Google Cloud SDK(gcloud CLI)。
  • 一個 LINE Bot 頻道,並取得 Channel Secret 和 Channel Access Token。

部署步驟

1. 啟用必要 API

為了讓機器人正常運作,需要在 Google Cloud 專案中啟用以下服務:

  • Cloud Run API
  • Cloud Build API(用來自動建置容器映像檔)
  • Firestore API(用來儲存使用者授權資料)

在終端機執行以下指令快速啟用:

gcloud services enable run.googleapis.com cloudbuild.googleapis.com firestore.googleapis.com

2. 建立 Firestore 資料庫

  • 前往 Google Cloud Console 的 Firestore 頁面。
  • 選擇「原生模式(Native mode)」。
  • 挑選離你的使用者最近的地區,然後建立資料庫。

3. 取得 Google OAuth 憑證

這是讓機器人能存取 Google Drive 的關鍵步驟:

  • 前往 Google Cloud Console > APIs & Services > Credentials。 (Google Auth Platform)
  • 點擊 + CREATE CREDENTIALS,選擇 OAuth client ID

image-20250829161538979

  • 在 Application type 中選 Web application,並命名(例如「LINE Bot File Uploader」)。
  • 這一步先不要填寫 Authorized redirect URIs,等 Cloud Run 部署完成後再回來設定。

image-20250829161558554

  • 建立後,你會得到一組 Client IDClient Secret,請妥善保存,後面會用到。

成果展示

image-20250829162044191

  • 如果沒有認證過,會出現請認證的說明。
  • 點選網址認證 Google Drive 的上傳權限即可。
  • 如果不想使用,也可以使用 /disconnect_drive 來撤銷相關授權。

image-20250829161720900

  • 上傳檔案也很簡單,支援兩種格式。
    • 直接上傳圖片,會將圖片上傳到 google drvie 保存。
    • 透過 iOS / AOS 將 PDF 或是任何檔案格式,轉貼到對話視窗。也可以精準上傳到 Google Drive。檔案也可以超過 50MB
  • 要看檔案,就點選查詢最近檔案,就會開啟 Google Drive 網頁去查看檔案列表。

未來展望

這個用 Golang 開發的 LINE 檔案備份機器人開啟了許多有趣的應用場景:

  • 自動化檔案管理:讓你的 LINE 聊天檔案自動整理到 Google Drive,省時又省力。
  • 團隊協作:在群組聊天中快速備份和分享檔案,提升工作效率。
  • 個人化功能:根據需求擴充功能,例如自訂資料夾結構或檔案命名規則。
  • 數據分析:分析上傳檔案的類型和頻率,優化機器人功能或提供使用統計。

(如果你有其他 Golang 相關的程式碼片段,例如處理 Google Drive API 或 Firestore 的部分,可以在這裡貼上,進一步展示 Golang 在這個專案中的應用。)

這些應用不僅能提升個人和團隊的檔案管理體驗,還能為開發者帶來更多創意應用的靈感。快動手部署你的 LINE 檔案備份機器人,體驗 Golang 和雲端整合的便利吧!

[好書分享] 說出影響力 - 3分鐘說一個好故事,不說理也能服人

說出影響力(新編版)- 3分鐘說一個好故事,不說理也能服人
作者: 謝文憲  出版社:春光 
出版日期: 2015/12/22 語言:繁體中文 

買書推薦網址:

前言:

這是 2025 年第 6 本讀完的書。 這其實也是今年上過的一堂課程,謝文憲,憲哥的演講課程。我在上課之前,將這本書買來讀了一些,上課起來真的覺得吸收的更好。這一次演講課程也是一次公司給我們難有的體驗,因為聽說這個講師在業界的知名度相當的高。 課堂上對於大家的要求也很高,上課的成員其實大多數對外需要有演講的夥伴們,但是也都覺得收穫良多。

大綱

長篇大論,比不過一段3分鐘的故事,更能打動人心。
再多道理,勝不過分享人生經歷,更被聽者記憶。
透過說一段好故事,不僅能說服他人,還能引起共鳴、交到朋友。
雅虎媒體、富邦金控、台新金控、台哥大等公司都在學,一堂價值二十萬的說話課。

《商業周刊》、《蘋果日報》專欄作者 謝文憲
繼《行動的力量》之後傾囊相授

想要讓別人聽你的,先學會「說一個好故事」。
訣竅是:要打動別人,先感動你自己。

加州柏克萊大學十年觀察研究結果指出,
一場談話或簡報,一週後,人們只記得當中的5%,
這5%,是演說者或講者所提供的故事、例子和親身經歷。

三分鐘的好故事,勝過三十分鐘的長篇大論。
很會說話,不等於會說好故事。
口才好可以說服人,但別人不會真正記得你、信服你。
一則好故事、一段簡要的開場與結論,
分享自己所見、所得,讓人甘願被你影響,真心接受你的論點。

本書教你如何說一個讓人印象深刻、能起共鳴的故事。
即使沒有高職位、沒有雄厚背景,
平凡人物也能使人印象深刻、讓別人聽從你。

新版自序:始料未及的影響力

  • 重點
    • 成功的語言具有影響力,失敗的語言則容易被忽視。持續增強自身能力、相信內心意志,並把握每次公開表達的機會,能讓個人影響力超乎預期。
    • 建議找到志同道合的夥伴,朝共同目標努力,並珍惜每一次上台或掌握麥克風的機會,展現自己的潛力。

前言

  • 重點
    • 口語表達是強化個人表現和影響力的重要工具,無論職位、地位或專業背景如何,都能透過簡報或演說展現價值。
    • 類比棒球選手:不論年薪高低,打中球後都要全力跑向一壘,證明價值。同樣地,口語表達需要努力和練習來實現影響力。
    • 沒有人天生具備口語魅力,無論天資如何,透過持續練習都能提升表達能力,成為「武林高手」,靠一張嘴影響他人。

第09章:觀察聽眾的肢體語言

  • 重點
    • 分析聽眾需求:成功的簡報需要事前做功課,敏銳觀察聽眾的心理和需求,針對性地呈現內容,增強口語表達的魅力和影響力。
    • 建立連結(Connection):演說如同「撒網」,透過與聽眾的互動建立連結,影響力取決於能「網住」多少人。
    • 實例分享:以股票投資為例,演講者透過具體數據(公司股票從30元漲到50元)與聽眾建立共鳴,吸引注意力並導入主題。

第10章:組織構思最好的內容

  • 重點
    • 簡報時間:職場中最常見的簡報長度是20分鐘,這是老闆或客戶能接受的最長時間,需精準傳達重點。
    • 破題與結尾
      • 破題如剪刀:開場需明確點出簡報目的,清楚說明「我要講什麼」與「不講什麼」,聚焦聽眾注意力。
      • 結尾如棒槌:結尾需強而有力,留下深刻印象,讓聽眾在離開時記住核心訊息。

第13章:三要六不要的開場白原則

  • 重點
    • 開場原則
      • 三要
        1. 前兩分鐘要與聽眾建立緊密連結。
        2. 第一句話使用金句,吸引注意力。
        3. 以故事開場,用金句收尾,增強記憶點。
      • 六不要(未完全列出,但可推測包括避免冗長、無趣或不相關的開場)。
    • 避免過度熱情:不需大聲喊「早安」等問候,應以自然音量與聽眾互動,避免因聽眾反應冷淡導致尷尬,破壞現場氣氛。

第14章:收尾一句話,勝過一堆話

  • 重點
    • 結尾需簡潔有力,促使聽眾採取行動。例如:
      • 明確要求行動(如「記得下訂單!」或指定時間完成)。
      • 提供選擇方案,讓聽眾有參與感。
      • 表達對聽眾行動的信心,激勵他們執行。
    • 一句話的結尾比冗長的總結更能打動聽眾,強化影響力。

第18章:恐懼也是你的好幫手

  • 重點
    • 管理緊張情緒:演講時若感到緊張,可透過簡單動作(如動動腳趾)分散注意力,緩解緊張感。
    • 緊張並非負面情緒,可視為激發表現的動力,幫助提升演說效果。

第19章:簡報不能過於冗長

  • 重點
    • 簡報的核心目的:不是傳遞所有資訊,而是聚焦於讓聽眾理解重點、產生認同並採取行動,與訓練課程不同。
    • 合作分工的理念
      • 相較於傳統「分工合作」,作者提倡「合作分工」,強調先建立團隊合作基礎,再進行分工,能發揮更大團隊實力。
      • 此方法適用於簡報準備與團隊協作,提升整體效果。

第24章:用職位發揮影響力

  • 重點
    • 資訊權的影響力:某些職位(如HR或編輯)因掌握獨特資訊(如講師費用、書籍成本)而具備權威,這些資訊賦予職位持有者影響力。
    • 善用職位帶來的資訊優勢,能讓下屬或相關人員更願意服從與配合。

推薦序:說出影響力,提昇競爭力

  • 重點
    • 書中提供完整的表達架構與心法,包括:
      • 「三點全露」:強調簡報內容的清晰與完整性(具體內容未在劃線中詳述)。
      • 「破題如剪刀,結尾如棒槌」:開場聚焦主題,結尾強烈震撼。
      • 不同簡報類型的差異與應用。
    • 核心心法:專心投入、分析聽眾、建立連結,以及構思與組織內容,這些技巧能提升簡報與演說的競爭力。

心得

印象很深刻的一句話:「如果要來一場三十分鐘的演講,我可以馬上上場:但是如果要來一場三分鐘的演講,我需要準備一個禮拜」。往往一場三分鐘的演講,要如何「說出你的影響力」讓每一個聽眾都能夠感同身受,並且在短時間中能獲得共鳴就變得更難。因為需要注意到以下幾件重要的事情:

  • 取得聽眾的注意力。
  • 鋪陳本場演講重點。
  • 總結重點,並且變成 takeaway 。

這一本書有許多在演講內容編排上的技巧,並且可以幫助你對於聽眾迅速取得好感。很推薦大家來看。