このサイトはWebfile便で作成しました利用はこちら
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 JSTcreated_at を対象
OUTPUT当日の line_memo変更時だけ commit / push

全体図

Daily Memo Import — data flow Secrets are injected only at run time. Values never enter the repository or memo output. 01 / TRIGGERschedule / manual20:00 UTC = 05:00 JST 02 / AUTHAWS credentialsGitHub Secrets 03 / COLLECTDynamoDB scanyesterday JST / pagination 04 / ENRICHURL → title + summaryYouTube oEmbed / Web + Gemini 05 / WRITE📓YYYYMMDD_line_memo.mddagnetz/YYYY/MM/DD/ 06 / DELIVERgit add / commit / pushcontents: write

実行手順

  1. トリガーする。 .github/workflows/daily_memo_import.yml0 20 * * *workflow_dispatch を持つ。定時実行でもActions画面からの手動実行でも同じ処理を通る。
  2. 最小の実行環境を作る。 checkoutは scriptsdagnetz.github だけをsparse checkoutし、Python 3.11と boto3requestsbeautifulsoup4google-genai を入れる。
  3. 前日JSTの範囲を決める。 スクリプトはJSTの「今日」を算出し、収集対象はその前日00:00:00〜23:59:59。出力ファイル名は実行日の 📓YYYYMMDD_line_memo.md になる。
  4. DynamoDBからメモを集める。 created_at が対象期間内の項目を取得し、LastEvaluatedKey がある限りページを継続して読む。URL列と本文中URLの両方を拾い、重複は除く。
  5. URLだけを濃くする。 YouTubeはoEmbedでタイトルを取得。通常WebはHTMLからscript/style/nav/footer/headerを除き、本文をGeminiで約300字に要約。失敗時は先頭300字へフォールバックする。
  6. Markdown化して届ける。 URLありは「リンク付きメモ」、本文のみは「テキストメモ」として書き分ける。変更があれば dagnetz/ だけをbotコミットしてmainへpushする。

設定すべきもの

場所必要な設定役割
Workflow permissionscontents: write生成済みline_memoをリポジトリへpushする。
GitHub SecretsAWS_ACCESS_KEY_ID / AWS_SECRET_ACCESS_KEYDynamoDBを読むIAM認証。値はログ・ノート・HTMLに出さない。
GitHub SecretsGOOGLE_API_KEY通常Web URLの要約を有効化。未設定でも収集自体は続き、短縮本文へフォールバックする。
DynamoDBcreated_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アカウント番号、テーブル物理名は掲載しない。このページは再現手順と制御点だけを扱う。