Skip to content
Documentation
Command

/start-12-3

Lesson command

From plugin
ai-agent-camp
345200 skills8 agents200 commands
Install
$ npx -y skills add minicoohei/ai-agent-camp --agent claude-code

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/start-12-3

Context preview

What this command does when you run it.

Lesson command

Command definition

start-12-3.md
description: "Lesson command"
chapter: "courses/aiagent/lesson03-core/module12-notion"
duration: "約25分"
prerequisites: ["start-12-2"]
level: "intermediate"
tags: ["notion", "ncli", "file", "fetch"]
nonInteractiveMode: deferred

🎓 Lesson 12-3: ファイル取得

📍 このセッションでやること

**Lesson 12-3: ファイル取得** へようこそ!

| 項目 | 内容 | |------|------| | ゴール | Notionページ内のブロック構造を理解し、ファイル・画像ブロックを特定してローカルにダウンロードする | | 所要時間 | 約25分 | | 使うスキル | ncli (Notion CLI) | | 前提条件 | Lesson 12-2 完了(DBクエリが実行できる状態) |

**このセッションの流れ:** 1. ページ内のブロック構造を確認 2. ファイルブロック・画像ブロックの特定 3. ファイル情報の取得 4. ローカルへのダウンロード 5. 取得結果の整理

セッション終了時には、Notionページ内の添付ファイルや画像を特定し、ローカルにダウンロードできるようになっています。

> **💡 ヒント**: AIの応答が途中で止まった場合は「続きを表示して」「止まってるよ」と入力すると再開します。

---

🎯 準備チェック

まずは準備が整っているか確認しましょう。

**AskQuestionの設定:**

{
  "title": "🎯 セッション開始前の確認",
  "questions": [{
    "id": "readiness",
    "prompt": "準備はできていますか?",
    "options": [
      {"id": "ready", "label": "準備OK!始めましょう"},
      {"id": "check_prereq", "label": "前提条件を確認したい"},
      {"id": "different_lesson", "label": "別のレッスンに移動したい"}
    ]
  }]
}

(ready → Step 1へ) (check_prereq → `ncli whoami` を実行して認証状態を確認) (different_lesson → モジュール一覧を表示)

---

🚀 Step 1: ページ内のブロック構造を確認

**AskQuestionの設定例:**

{
  "title": "🚀 Step 1: ブロック構造の確認",
  "questions": [{
    "id": "step_action",
    "prompt": "このステップをどうしますか?",
    "options": [
      {"id": "practice", "label": "このまま進める"},
      {"id": "review", "label": "例だけ確認する"},
      {"id": "skip", "label": "スキップする"}
    ]
  }]
}

**AIが実行すること:**

1. 受講者にファイルが含まれるNotionページのURLを教えてもらう:

  • 「画像やファイルが添付されているNotionページのURLを教えてください」と案内
  • ファイルがない場合は、テスト用にNotionで画像を1枚貼り付けてもらう

2. ページの全ブロックを取得:

   ncli fetch <ページURL>

3. ブロック構造を解説:

  • Notionのページは「ブロック」の集まりで構成されている
  • 各ブロックには型がある(paragraph, heading_1, image, file, code など)
  • ブロックは入れ子にできる(子ブロックを持てる)

4. 取得結果のブロック一覧を整理して表示:

| # | ブロック型 | 内容プレビュー | |---|-----------|---------------| | 1 | heading_1 | セクションタイトル | | 2 | paragraph | テキスト内容... | | 3 | image | 画像ファイル | | 4 | file | 添付ファイル |

**期待される結果**: ページ内のブロック一覧が型ごとに整理されて表示される。

---

🚀 Step 2: ファイルブロック・画像ブロックの特定

**AskQuestionの設定例:**

{
  "title": "🚀 Step 2: ファイルブロックの特定",
  "questions": [{
    "id": "step_action",
    "prompt": "このステップをどうしますか?",
    "options": [
      {"id": "practice", "label": "このまま進める"},
      {"id": "review", "label": "例だけ確認する"},
      {"id": "skip", "label": "スキップする"}
    ]
  }]
}

**AIが実行すること:**

1. JSON形式で詳細なブロックデータを取得:

   ncli fetch <ページURL> --json

2. 取得結果からファイル関連ブロックをフィルタリング:

  • `image` 型ブロック: 埋め込み画像
  • `file` 型ブロック: 添付ファイル
  • `pdf` 型ブロック: PDFファイル
  • `video` 型ブロック: 動画ファイル

3. 各ファイルブロックの詳細を抽出:

  • ブロックID
  • ファイルの種類(external / file)
  • URL
  • キャプション(あれば)

4. ファイル一覧を整理して表示:

   📎 ファイルブロック一覧
   ========================
   1. [image] スクリーンショット.png — Notion hosted
   2. [file] レポート.pdf — External URL
   3. [image] ロゴ.svg — External URL

**期待される結果**: ページ内のファイル・画像ブロックが特定され、一覧表示される。

---

🚀 Step 3: ファイル情報取得(URL・タイプ・サイズ)

**AskQuestionの設定例:**

{
  "title": "🚀 Step 3: ファイル情報取得",
  "questions": [{
    "id": "step_action",
    "prompt": "このステップをどうしますか?",
    "options": [
      {"id": "practice", "label": "このまま進める"},
      {"id": "review", "label": "例だけ確認する"},
      {"id": "skip", "label": "スキップする"}
    ]
  }]
}

**AIが実行すること:**

1. 特定したファイルブロックのURLを取得:

  • Notion hosted ファイル: 一時URL(有効期限あり)
  • External ファイル: 外部URL(永続)

2. ファイルの詳細情報を確認:

   curl -sI "<ファイルURL>" | head -20

3. 取得できる情報を整理:

  • Content-Type(ファイル形式)
  • Content-Length(ファイルサイズ)
  • 有効期限(Notion hosted の場合)

4. 情報をテーブル形式で出力:

| ファイル名 | 形式 | サイズ | ホスト | 備考 | |-----------|------|--------|--------|------| | screenshot.png | image/png | 245KB | Notion | 一時URL(1時間有効) | | report.pdf | application/pdf | 1.2MB | External | 永続URL |

**補足**: Notion hosted ファイルのURLには有効期限があります。ダウンロードする場合は取得後すぐに実行してください。

**期待される結果**: 各ファイルの詳細情報(形式・サイズ・ホスト種別)が表示される。

---

🚀 Step 4: ローカルへのダウンロード

**AskQuestionの設定例:**

{
  "title": "🚀 Step 4: ファイルダウンロード",
  "questions": [{
    "id": "step_action",
    "prompt": "このステップをどうしますか?",
    "options": [
      {"id": "practice", "label": "このまま進める"},
      {"id": "review", "label": "例だけ確認する"},
      {"id": "skip", "label": "スキップする"}
    ]
  }]
}

**AIが実行すること:**

1. 出力ディレクトリを作成:

   mkdir -p output/notion_files

2. ファイルURLを使ってダウンロード:

   curl -sL "<ファイルURL>" -o output/notion_files/<ファイル名>

3. 複数ファイルがある場合はまとめてダウンロード:

   # 各ファイルを順にダウンロード
   curl -sL "<URL1>" -o output/notion_files/file1.png
   curl -sL "<URL2>" -o output/notion_files/file2.pdf

4. ダウンロード結果を確認:

   ls -la output/notion_files/

**補足**: Notion hosted ファイルの一時URLは通常1時間程度で失効します。失効した場合は `ncli fetch` を再実行してURLを再取得してください。

**期待される結果**: ファイルが `output/notion_files/` ディレクトリにダウンロードされる。

---

🚀 Step 5: 取得結果の整理(Markdownで出力)

**AskQuestionの設定例:**

{
  "title": "🚀 Step 5: 取得結果の整理",
  "questions": [{
    "id": "step_action",
    "prompt": "このステップをどうしますか?",
    "options": [
      {"id": "practice", "label": "このまま進める"},
      {"id": "review", "label": "例だけ確認する"},
      {"id": "skip", "label": "スキップする"}
    ]
  }]
}

**AIが実行すること:**

1. ダウンロードしたファイルの一覧をMarkdown形式で整理:

   # Notionファイル取得結果

   ## ページ情報
   - ページ名: ○○○
   - 取得日時: YYYY-MM-DD HH:MM
   - ファイル数: X件

   ## ファイル一覧
   | # | ファイル名 | 形式 | サイズ | ローカルパス |
   |---|-----------|------|--------|-------------|
   | 1 | screenshot.png | PNG | 245KB | output/notion_files/screenshot.png |
   | 2 | report.pdf | PDF | 1.2MB | output/notion_files/report.pdf |

2. この一覧を `output/notion_files_inventory.md` に保存する。

3. 受講者に結果を共有し、ファイルが正しくダウンロードされたか確認する。

**期待される結果**: ファイル一覧がMarkdown形式で `output/notion_files_inventory.md` に保存される。

---

⚠️ よくあるトラブルと解決方法

**AskQuestionの設定例:**

{
  "title": "トラブル内容を選択",
  "questions": [{
    "id": "trouble",
    "prompt": "当てはまる内容を1つ選んでください",
    "options": [
      {"id": "t
Read more
Ships withai-agent-camp

AI Agent Training for Non-Engineers - Complete Guide to Claude Code / Cursor / Codex ### ⚠️ Before you clone Official repository (maintained by the authors): Running AI agents from this repo grants them shell, file-write, and external-API permissions on your

Get the whole plugin