Workflow explainer / 2026-08-17
LINEメモを
朝5時に知識化する。
`zettelkasten_free_mode` の Daily Memo Import は、前日JSTのメモをDynamoDBから読み、URLなら要約付き、テキストならそのまま、当日の 📓YYYYMMDD_line_memo.md にしてGitへ戻す。
GitHub ActionsDynamoDBGeminidagnetzJST
SCHEDULE毎日 05:00 JSTcronは 20:00 UTC
INPUT WINDOW前日 00:00–23:59 JST
created_at を対象OUTPUT当日の line_memo変更時だけ commit / push
全体図
実行手順
- トリガーする。
.github/workflows/daily_memo_import.ymlは0 20 * * *とworkflow_dispatchを持つ。定時実行でもActions画面からの手動実行でも同じ処理を通る。 - 最小の実行環境を作る。 checkoutは
scripts、dagnetz、.githubだけをsparse checkoutし、Python 3.11とboto3、requests、beautifulsoup4、google-genaiを入れる。 - 前日JSTの範囲を決める。 スクリプトはJSTの「今日」を算出し、収集対象はその前日00:00:00〜23:59:59。出力ファイル名は実行日の
📓YYYYMMDD_line_memo.mdになる。 - DynamoDBからメモを集める。
created_atが対象期間内の項目を取得し、LastEvaluatedKeyがある限りページを継続して読む。URL列と本文中URLの両方を拾い、重複は除く。 - URLだけを濃くする。 YouTubeはoEmbedでタイトルを取得。通常WebはHTMLからscript/style/nav/footer/headerを除き、本文をGeminiで約300字に要約。失敗時は先頭300字へフォールバックする。
- Markdown化して届ける。 URLありは「リンク付きメモ」、本文のみは「テキストメモ」として書き分ける。変更があれば
dagnetz/だけをbotコミットしてmainへpushする。
設定すべきもの
| 場所 | 必要な設定 | 役割 |
|---|---|---|
| Workflow permissions | contents: write | 生成済みline_memoをリポジトリへpushする。 |
| GitHub Secrets | AWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEY | DynamoDBを読むIAM認証。値はログ・ノート・HTMLに出さない。 |
| GitHub Secrets | GOOGLE_API_KEY | 通常Web URLの要約を有効化。未設定でも収集自体は続き、短縮本文へフォールバックする。 |
| DynamoDB | created_at をISO 8601で保存 | JSTで作った前日窓をUTCへ変換して比較する。 |
最小のワークフロー像
on:
schedule:
- cron: '0 20 * * *' # 05:00 JST
workflow_dispatch:
permissions:
contents: write
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with: { python-version: '3.11' }
- run: pip install boto3 requests beautifulsoup4 google-genai
- uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ap-northeast-1
- env: { GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }} }
run: python scripts/import_daily_memos.py
- run: git add dagnetz/ && git commit -m "📓 Import daily memos" || exit 0
検証と注意点
確認は3点。 Actionsのrunがsuccessであること、生成パスに当日の 📓YYYYMMDD_line_memo.md があること、botのcommitがmainに入っていること。
日付の見え方: 8/17 05:00 JST のジョブは、8/16のメモを読んで 20260817_line_memo.md を作る。ファイル日付は「収集対象日」ではなく「実行日」。
スケール上の注意: 現行は scan + FilterExpressionで、テーブル全体を読んでから日付を絞る。件数が増えたら、created_at をキーにしたQuery可能な設計(GSI等)へ置き換えると読み取りコストをゼロ寄りにできる。
公開上の注意: 実際のSecret値、AWSアカウント番号、テーブル物理名は掲載しない。このページは再現手順と制御点だけを扱う。