Next.js 向けランディングページキット:ブロック構成、リードフォーム、Cookie バナー、同意制ピクセル
インストール
genpm add @core/kit-landing含まれるもの
- src/app/(landing)/ にソースコード(14 ファイル)。 (21.1 KB)
- src/app/(landing)/AGENTS.md に AI ルール、加えて IDE 用のルールファイル。
- .env.example に追加される環境変数: GA4_MEASUREMENT_ID, META_PIXEL_ID, TIKTOK_PIXEL_ID, CONSENT_POLICY_VERSION, EXPERIMENTS_SECRET。
- @core/consent, @core/experiments, @core/kit-cms, @core/pixels を自動で解決します。
README
このパッケージには README がありません。
これは AI が src/app/(landing) で作業するときに読む内容そのものです。それ以外はコンテキストに追加されません。
@core/kit-landing — rules for AI agents
Purpose
Conversion landing pages on top of @core/kit-cms: the landings collection (blocks, SEO, minimal layout without
site navigation, conversion goal, thank-you page) served at /lp/<slug>, lead forms that store the submission with
its UTM parameters and fire one deduplicated lead event (server + browser with the same eventId, only with
consent), a cookie banner, consent-gated GA4/Meta/TikTok pixels and a real-deadline countdown block.
A/B tests with @core/experiments: a landing can name an experiment and show blocksB to variant b.
Map
_templates/genpm.md— the exact lines this kit adds to the project'ssrc/genpm/*.ts(generated, always current).lp/[slug]/page.tsx— landing.lp/[slug]/lead/[formKey]/route.ts— form posts.lp/[slug]/thanks/page.tsx— thank-you + browser event.api/consent/route.ts— saves the banner choice and deletes cookies of rejected categories._lib/landings.ts— collection andlandingPath._lib/conversion.ts— lead handling and thelanding.lead-eventjob._components/site-tracking.tsx—<SiteTracking />(banner + pixels) for the root layout._blocks/countdown.tsx._lib/widgets.ts— "Leads by landing (7 days)" dashboard widget.
Integration
- @core/kit-cms must be integrated first.
- Add the lines of
_templates/genpm.mdto the project'ssrc/genpm/*.ts(it says which file and where): the landings collection and lead event, thecountdownblock, the sitemap source and the admin resource and widget. Lines marked "A/B tests (optional)" are only needed for step 5. - Root layout: render
<SiteTracking policyHref="/cookies" />at the end of<body>, and addclassName="site-chrome"to the site header and footer so minimal landings can hide them. Add<CookieSettingsButton />(@core/consent/react, a client component that callsopenConsentPreferences()) in the footer. - Env (all optional; a platform is active only when configured): public ids
GA4_MEASUREMENT_ID,META_PIXEL_ID,TIKTOK_PIXEL_IDand the server tokens described in src/lib/pixels/AGENTS.md. BumpCONSENT_POLICY_VERSIONwhen the cookie policy changes (everyone is asked again). - A/B tests (optional): set
EXPERIMENTS_SECRET, add the "A/B tests (optional)" lines of_templates/genpm.md, run the kit-cmssetup-schedules.tsagain (schedulesexperiments.prune), create an experiment with variantsa(control) andband goallead, then set its key and the "variant B" sections on the landing. - Give editors the
landings:*permission if they should manage landings (defineRole, @core/rbac). - Verify: create a landing with a hero and a form block, submit it with UTM parameters, see the submission with
its UTM in Admin → Submissions, and the
Leadevent in each platform's test tool after accepting cookies.
Conventions
- One conversion goal per landing; the form block's form decides what is collected.
- Hero images: the first block gets
fetchPriority="high"; keep LCP under 2.5 s on mobile. - Lead events carry no personal data in the browser; the server event sends only hashed identifiers (@core/pixels).
Don't
- No fake urgency: countdowns only with the real end date of a real offer (they disappear afterwards and never reset); "only X left" only with real stock (EU Directive 2005/29/EC, DSA).
- Testimonials, ratings and numbers only from real data the person provides; if missing, leave the block out and say so.
- Never load a pixel outside
ConsentGate, never pre-tick consent boxes, never fireleadwithout a stored submission.
# @core/kit-landing — rules for AI agents
## Purpose
Conversion landing pages on top of @core/kit-cms: the `landings` collection (blocks, SEO, minimal layout without
site navigation, conversion goal, thank-you page) served at `/lp/<slug>`, lead forms that store the submission with
its UTM parameters and fire one deduplicated `lead` event (server + browser with the same `eventId`, only with
consent), a cookie banner, consent-gated GA4/Meta/TikTok pixels and a real-deadline countdown block.
A/B tests with @core/experiments: a landing can name an experiment and show `blocksB` to variant `b`.
## Map
- `_templates/genpm.md` — the exact lines this kit adds to the project's `src/genpm/*.ts` (generated, always current).
- `lp/[slug]/page.tsx` — landing. `lp/[slug]/lead/[formKey]/route.ts` — form posts. `lp/[slug]/thanks/page.tsx` — thank-you + browser event.
- `api/consent/route.ts` — saves the banner choice and deletes cookies of rejected categories.
- `_lib/landings.ts` — collection and `landingPath`. `_lib/conversion.ts` — lead handling and the `landing.lead-event` job.
- `_components/site-tracking.tsx` — `<SiteTracking />` (banner + pixels) for the root layout. `_blocks/countdown.tsx`.
- `_lib/widgets.ts` — "Leads by landing (7 days)" dashboard widget.
## Integration
1. @core/kit-cms must be integrated first.
2. Add the lines of `_templates/genpm.md` to the project's `src/genpm/*.ts` (it says which file and where): the
landings collection and lead event, the `countdown` block, the sitemap source and the admin resource and widget.
Lines marked "A/B tests (optional)" are only needed for step 5.
3. Root layout: render `<SiteTracking policyHref="/cookies" />` at the end of `<body>`, and add `className="site-chrome"`
to the site header and footer so minimal landings can hide them. Add `<CookieSettingsButton />` (@core/consent/react, a client
component that calls `openConsentPreferences()`) in the footer.
4. Env (all optional; a platform is active only when configured): public ids `GA4_MEASUREMENT_ID`, `META_PIXEL_ID`,
`TIKTOK_PIXEL_ID` and the server tokens described in src/lib/pixels/AGENTS.md. Bump `CONSENT_POLICY_VERSION`
when the cookie policy changes (everyone is asked again).
5. A/B tests (optional): set `EXPERIMENTS_SECRET`, add the "A/B tests (optional)" lines of `_templates/genpm.md`, run the
kit-cms `setup-schedules.ts` again (schedules `experiments.prune`), create an experiment
with variants `a` (control) and `b` and goal `lead`, then set its key and the "variant B" sections on the landing.
6. Give editors the `landings:*` permission if they should manage landings (`defineRole`, @core/rbac).
7. Verify: create a landing with a hero and a form block, submit it with UTM parameters, see the submission with
its UTM in Admin → Submissions, and the `Lead` event in each platform's test tool after accepting cookies.
## Conventions
- One conversion goal per landing; the form block's form decides what is collected.
- Hero images: the first block gets `fetchPriority="high"`; keep LCP under 2.5 s on mobile.
- Lead events carry no personal data in the browser; the server event sends only hashed identifiers (@core/pixels).
## Don't
- No fake urgency: countdowns only with the real end date of a real offer (they disappear afterwards and never reset);
"only X left" only with real stock (EU Directive 2005/29/EC, DSA).
- Testimonials, ratings and numbers only from real data the person provides; if missing, leave the block out and say so.
- Never load a pixel outside `ConsentGate`, never pre-tick consent boxes, never fire `lead` without a stored submission.
.genpmignore 適用後に組み込まれる正確なツリーです。固定先:
import '@/genpm';
import { draftMode } from 'next/headers';
import { getEntry } from '@/lib/content';
import type { LandingData } from './landings';
export async function loadLanding(slug: string) {
const { isEnabled } = await draftMode();
return getEntry<LandingData>('landings', slug, { draft: isEnabled });
}
このパッケージは MCP サーバーを宣言していません。
| バージョン | コミット | 公開日 | スキャン |
|---|---|---|---|
| 1.0.1 | f730e59 | 4 時間前 | スキャン合格 |
- 提案
- GenPM は npm コマンドを提案し、あなたが承認した場合にのみ実行します。
- スキャン
- スキャン合格 · 指摘 0 件
- コミット
- v1.0.1 → f730e5984cd035cc0e8a4f1e503380f56c10e410 · 取得後に検証済み
- スクリプト
- なし。GenPM はパッケージのコードを実行しません。
- ライセンス
- MIT
- 品質
- 100/100
- 認識されたライセンス達成
- AGENTS.md に目的の説明がある達成
- AGENTS.md に統合手順がある達成
- AGENTS.md に規約や禁止事項がある達成
- テストを含む達成
- セキュリティスキャンに合格達成
- 過去 6 か月以内に公開達成
- 認証済みの公開者達成
- 概要とキーワード達成
- 報告
- 問題を見つけましたか?