メインコンテンツへスキップ
kt-tech.blog

Notion API でポートフォリオ風テックブログを構築する

実装3分で読めます

この記事でわかること

  • Notion をブログのバックエンドにするために最初にやった 5 つの作業
  • Notion MCP の認証が進まなかったときの回避策(Integration のトークンで直接 API を叩く)
  • Integration を作っても検索結果が空になる原因(ページ側での接続が必要)

Notion のワークスペースと、Integration を作成できる権限があること。Claude Code を使いますが、curl でも同じことはできます。

ポイント
Notion API を使って、おしゃれなポートフォリオ風テックブログを構築した記録。Claude Code の Skill 機能と組み合わせて、開発セッションを自動で記事化する仕組みも作成。

やったこと

  1. Claude Code Skills の理解と活用
  2. session-to-notion Skill の作成(自動記事化機能)
  3. Notion Integration の作成と API 接続
  4. Tech Articles データベースの設計・構築
  5. ポートフォリオページのデザイン・実装

技術スタック

  • Notion API (2022-06-28)
  • Claude Code Skills(Markdown形式の指示書)
  • curl / Bash(API呼び出し)

詰まったポイント

1. Notion MCP の認証問題

Notion MCP サーバーが「Needs authentication」状態のまま認証フローが開始されなかった。

Tips
解決策: Notion Integration を作成し、シークレットトークンを使って直接 API を呼び出す方式に切り替え。

2. Integration のページアクセス権限

Integration を作成しても、検索結果が空で返ってきた。

Tips
解決策: Notion 側で対象ページを開き、「接続」メニューから Integration を追加する必要があった。

作成した Skill 構成

Bash
~/.claude/skills/session-to-notion/
├── SKILL.md           # メインの指示書
├── MASKING_RULES.md   # 機密情報マスキングルール
└── CONFIG.md          # Notion API設定情報

この Skill の中身(3 フェーズの設計)は、別記事の Claude Code × Notion で開発セッションを自動記事化する仕組み で詳しく書いています。

ページ構成

  • 👨‍💻 About Me - 自己紹介とモットー
  • 🔗 Connect - SNSリンク(GitHub, Qiita, Tech Blog等)
  • ⚡ Tech Stack - スキルセット(カラフルなCalloutで表示)
  • 📝 Tech Articles - 記事データベース

学び

  • Notion API でページ・データベースの作成、ブロックの追加が可能
  • ビュー設定(ギャラリー/テーブル等)はこの時点では API から変更できず、UI 側で設定した
  • Claude Code Skills は ~/.claude/skills/ に Markdown を配置するだけで使える
  • 機密情報のマスキングルールを定義しておくと、安心して記事化できる
メモ
後日談: ここで作った Notion のデータベースが、その後このブログ(kt-tech.blog)のバックエンドそのものになりました。Next.js 側からどう取得して表示しているかは Notion API でブログシステムを構築する、microCMS からの乗り換えの経緯は microCMSからNotion APIへブログCMSを完全移行する にあります。

更新履歴

  1. コードブロックの言語指定を plain text から bash に修正し、パスのエスケープが見えていた箇所をインラインコードに修正。内容が隣接する他記事(自動記事化の仕組み、Notion API でのブログ実装、microCMS からの移行)へのリンクを追加。ビュー設定について、当時の状況であることが伝わる表現に修正。末尾の「次回」メモを後日談に差し替え。OGP Description を内容に即したものに変更。

この記事のタグ