Skip to content

ktkiyoshi/notion-toolbox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

notion-toolbox

Notionのデータベースを対象にしたローカルCLIツール集です。現在は3つの機能を提供します。

文章化された最終ガイド/テンプレは ChatGPT で作成・更新する方針です(OpenAI APIキー不要)。

Tools

  • diary_summary: 日記DBを期間指定で抽出し、要約Markdownを生成
  • article_corpus: note記事DBから本文を抽出し、記事コーパスを生成
  • style_blueprint: 記事コーパスを解析し、article_report/style_profile を生成

Requirements

  • Python 3.x
  • requests

Setup

  1. 依存関係をインストール
pip install requests
  1. 環境変数または .env を用意
NOTION_TOKEN=secret_xxx
NOTION_DATABASE_ID=xxxx
NOTION_DATABASE_ID_ARTICLES=yyyy
# 任意(diary_summaryのopenaiモードのみ)
SUMMARY_API_KEY=yyyy

diary_summary (for Phase 4)

Notionの日記DBから期間指定で抽出し、Markdownで要約を保存します。

Usage

python -m diary_summary --start 2026-01-01 --end 2026-01-31 --out ./out_diaries

--out を省略した場合は ./out_diaries が既定です。

Tag指定(OR検索):

python -m diary_summary --start 2026-01-01 --end 2026-01-31 --out ./out_diaries --tags 仕事,旅行

Output

out_diaries/summary_YYYY-MM-DD_to_YYYY-MM-DD.md(既定)

# Diary Summary (YYYY-MM-DD to YYYY-MM-DD)

## Overall
- 期間: YYYY-MM-DD to YYYY-MM-DD
- Tag: Tag1, Tag2
- 件数: 0

## Daily Notes (compressed)
### YYYY-MM-DD — Title
- Tags: Tag1, Tag2
- Summary:
- Body:

Summarizer

diary_summary/summarizer.pySummarizer を実装して差し替え可能です。

OpenAIを使う場合:

python -m diary_summary --start 2026-01-01 --end 2026-01-31 --out ./out_diaries --summarizer openai

SUMMARY_API_KEY が必要です。

article_corpus (for Phase 1)

Notionのnote記事DBから本文をMarkdownで抽出し、1記事=1ファイルで保存します。

Usage

python -m article_corpus --start 2026-01-01 --end 2026-03-31 --types 育児 --out ./out_articles

--out を省略した場合は ./out_articles が既定です。

既存ファイルをスキップ:

python -m article_corpus --start 2026-01-01 --end 2026-03-31 --types 育児 --out ./out_articles --skip-existing

index.jsonl をこの実行分だけで再生成する場合:

python -m article_corpus --start 2026-01-01 --end 2026-03-31 --types 育児 --out ./out_articles --rebuild-index

Output

out_articles/
  articles/
    YYYY-MM-DD_<slugified_title>.md
  index.jsonl

記事ファイルの先頭にYAMLメタデータが付きます。

style_blueprint (for Phase 2)

記事コーパスを解析して、article_reportstyle_profile を生成します。

Usage

python -m style_blueprint --in ./out_articles/articles --out ./out_articles/style

Output

  • article_report.csv
  • article_report.jsonl
  • style_profile.json

--write-back を付けるとYAMLに tonearticle_kind を追記します。

Workflow

Phase 1: Article corpus generation (Notion -> local)

noteに投稿済みの記事がNotionの記事DBに揃っている前提で、Notionの記事DBから記事コーパスを生成します。

python -m article_corpus --start YYYY-MM-DD --end YYYY-MM-DD --types 育児 --out ./out_articles

既存ファイルをスキップする場合:

python -m article_corpus --start YYYY-MM-DD --end YYYY-MM-DD --types 育児 --out ./out_articles --skip-existing

Phase 2: Style guide & blueprints update (材料生成)

Phase 1 の記事コーパスが揃っている前提で、解析レポートと集計(材料)を生成します。

python -m style_blueprint --in ./out_articles/articles --out ./out_articles/style

出力(材料):

  • out_articles/style/article_report.csv
  • out_articles/style/article_report.jsonl
  • out_articles/style/style_profile.json

次に、これらの材料を Project の情報源(Files)に追加し、ChatGPT に最終版の style_guide_final.md / blueprints_final.md / do_dont_final.md を生成・更新してもらいます。

ChatGPTプロンプト例

初回(v1作成)

Projectの情報源にある最新の
- article_report.csv
- style_profile.json
- all_articles.md
を前提に、今後の記事作成のための最終成果物を作ってください。

方針:
- 地の文は必ず「です・ます」の丁寧口調で統一します(だ・であるは使いません)。
- 会話のセリフ(「」内)は口語のままでOKです。

依頼:
1) style_guide_final.md を作ってください(あなた専用の文体・構成ガイド)。
2) blueprints_final.md を作ってください(イベント型/定期振り返り型の2種類)。
3) 任意で do_dont_final.md を作ってください(混在防止、ノイズ除外、運用メモ)。

出力は、それぞれ「そのままファイル保存できるMarkdown全文」でください。

更新時(差分更新)

Phase 3: Retrieval / RAG (Deferred)

Phase 2 の成果物が揃っている前提です。現在は後回しです。

  • 参照(過去記事)は基本「手動」:必要なら all_articles.md をChatGPTに添付
  • 本格的な自動検索(RAG)は、必要性が出たタイミングで導入

Phase 4: Diary -> note draft (ChatGPT)

Phase 2 の最終版ガイドが揃っている前提で、日記から記事ドラフトを作成します。

  1. Notionの日記DBから、対象期間の日記を抽出(ツール)
python -m diary_summary --start 2026-01-01 --end 2026-01-31 --out ./out_diaries
  1. ChatGPT(Project内チャット)に、抽出した日記Markdownを添付してドラフト生成(手動)
  • 添付:./out_diaries の生成物(期間の日記まとめmd)
  • 参照:Project の情報源(上記 final 3ファイル)

ChatGPTプロンプト例

毎回共通

目的:添付の日記(指定期間)からnote記事ドラフト(Markdown)を作成してください。

必須遵守:Project情報源の style_guide_final.md / blueprints_final.md / do_dont_final.md

要件:
1) この期間がイベント型(A)か定期振り返り(B/B2)か判断し、「採用Blueprint:A/B/B2(理由一言)」を1行で宣言。
2) Blueprintに従って本文をMarkdownで生成(冒頭に対象期間+テーマ、必要なら目次、章立て、余韻のある締め)。
3) 本文の後ろに区切って「制作メモ(非公開)」として出典(日付+キーワード/タグ)を箇条書きで付ける。

出力:記事本文(Markdown)+制作メモのみ。余計な解説は不要。
  1. 必要に応じて、同じチャットで追記・修正依頼(手動)
  • 例:「この段落を短く」「見出しを増やす」「エピソード順を入れ替える」など

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages