get-test-membership-notes
Retrieve dummy membership article data from note.com for testing purposes. Specify membership key, page number, and articles per page to generate test content.
Instructions
テスト用:メンバーシップの記事一覧をダミーデータで取得する
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| membershipKey | Yes | メンバーシップキー(例: dummy-key-1) | |
| page | No | ページ番号 | |
| perPage | No | ページあたりの記事数 |
Implementation Reference
- src/tools/membership-tools.ts:264-306 (handler)Handler function for the 'get-test-membership-notes' tool. It generates dummy data for membership information and paginated notes list.async ({ membershipKey, page, perPage }) => { try { const membershipData = { id: "membership-id", key: membershipKey, name: `テストメンバーシップ (${membershipKey})`, description: "これはテスト用のメンバーシップ説明です。", creatorName: "テストクリエイター", price: 500, memberCount: 100, notesCount: 30 }; const dummyNotes = []; const startIndex = (page - 1) * perPage; const endIndex = startIndex + perPage; const totalNotes = 30; for (let i = startIndex; i < Math.min(endIndex, totalNotes); i++) { dummyNotes.push({ id: `note-${i + 1}`, title: `テスト記事 ${i + 1}`, excerpt: `これはテスト記事 ${i + 1} の要約です。メンバーシップ限定コンテンツとなります。`, publishedAt: new Date(2025, 0, i + 1).toISOString(), likesCount: Math.floor(Math.random() * 100), commentsCount: Math.floor(Math.random() * 20), user: "テストクリエイター", url: `https://note.com/test-creator/n/n${i + 1}`, isMembersOnly: true }); } return createSuccessResponse({ total: totalNotes, page: page, perPage: perPage, membership: membershipData, notes: dummyNotes }); } catch (error) { return handleApiError(error, "メンバーシップ記事取得"); } }
- Zod schema defining the input parameters for the 'get-test-membership-notes' tool: membershipKey (string), page (number, default 1), perPage (number, default 20).{ membershipKey: z.string().describe("メンバーシップキー(例: dummy-key-1)"), page: z.number().default(1).describe("ページ番号"), perPage: z.number().default(20).describe("ページあたりの記事数"), },
- src/tools/membership-tools.ts:256-307 (registration)Registration of the 'get-test-membership-notes' tool using server.tool(), including name, description, input schema, and handler function.server.tool( "get-test-membership-notes", "テスト用:メンバーシップの記事一覧をダミーデータで取得する", { membershipKey: z.string().describe("メンバーシップキー(例: dummy-key-1)"), page: z.number().default(1).describe("ページ番号"), perPage: z.number().default(20).describe("ページあたりの記事数"), }, async ({ membershipKey, page, perPage }) => { try { const membershipData = { id: "membership-id", key: membershipKey, name: `テストメンバーシップ (${membershipKey})`, description: "これはテスト用のメンバーシップ説明です。", creatorName: "テストクリエイター", price: 500, memberCount: 100, notesCount: 30 }; const dummyNotes = []; const startIndex = (page - 1) * perPage; const endIndex = startIndex + perPage; const totalNotes = 30; for (let i = startIndex; i < Math.min(endIndex, totalNotes); i++) { dummyNotes.push({ id: `note-${i + 1}`, title: `テスト記事 ${i + 1}`, excerpt: `これはテスト記事 ${i + 1} の要約です。メンバーシップ限定コンテンツとなります。`, publishedAt: new Date(2025, 0, i + 1).toISOString(), likesCount: Math.floor(Math.random() * 100), commentsCount: Math.floor(Math.random() * 20), user: "テストクリエイター", url: `https://note.com/test-creator/n/n${i + 1}`, isMembersOnly: true }); } return createSuccessResponse({ total: totalNotes, page: page, perPage: perPage, membership: membershipData, notes: dummyNotes }); } catch (error) { return handleApiError(error, "メンバーシップ記事取得"); } } );