å®è·µçãªãŠã©ãŒã¯ã¹ã«ãŒïŒProfound CMS ã§å€èšèªå¯Ÿå¿ã®ç©ºæž¯ãã£ã¬ã¯ããªãæ§ç¯ â 1 ã€ã®ãã©ã¡ããªãã¯ã«ãŒãã§ 35 èšèªã®å šç©ºæž¯ããŒãžãã¬ã³ããªã³ã°ã
Profound CMS äžã§æ¬ç©ã®å€èšèªå¯Ÿå¿ã®ç©ºæž¯ãã£ã¬ã¯ããªãæ§ç¯ããŸããã²ãšã€ã® URL ãã¿ãŒã³ã§ 35 èšèªã®ãã¹ãŠã®ç©ºæž¯ããŒãžãã¬ã³ããªã³ã°ããŸããNext.js ã®ã³ãŒããæžãã®ããCMS æ§é ãæäœæ¥ã§çµãã®ãããªãã®åœ¹å²ãClaude CodeïŒProfound MCP çµç±ïŒã¯ 3 ã€ã®äœæ¥ â 空枯ããŒã¿ã®çæããã¶ã€ã³ã·ã¹ãã ã®æ¥ç¶ãReact ã³ã³ããŒãã³ã 4 ã€ã®çæ â ãæ åœããŸãã3 ã€ã®ããŒãïŒã»ããã¢ããããã«ããæ¬çªéçšã
å®å šãªãããªãŠã©ãŒã¯ã¹ã«ãŒãèŠãã
/{language}/{airport_code} ã 1 ã€ãcms-renderer ãã¬ã³ããªã³ã°ãcurl -fsSL https://bun.sh/install | bashgh) ãš GitHub ã«ãªã³ã¯ãã Vercel ã¢ã«ãŠã³ããlanguage ãªã©ïŒã¯æšæºæèŒã§ããcms-renderer SDK ãããã¹ãŠãã¬ã³ããªã³ã°ããŸããæçµç¶æ ïŒCMS ã«çŽ 50 ä»¶ã®ç©ºæž¯ããŒã¿ãååšããã¢ããªã¯ãããèªã¿èŸŒã¿ããã¶ã€ã³ã·ã¹ãã ãçµã¿èŸŒãŸããŠããã
ProfoundïŒWorkOS èªèšŒïŒã«ãµã€ã³ã¢ããããairports ãšããååã®ãŠã§ããµã€ããäœæããŸãã2 ã€ã³ããŒããŸãïŒãŠã§ããµã€ã IDïŒç®¡çç»é¢ URL ã® UUIDïŒãšãDeployments â Create API key ãã ãªãŒãéå±€ API ããŒãã¢ããªã¯èªã¿åãã®ã¿ãªã®ã§ãªãŒãããŒã ãã§ååã§ãã
bunx create-profound-next airports
cd airports
è³æ Œæ
å ±ã .env.local ã«è¿œå ããŸãïŒ
PROFOUND_API_KEY=<your read key>
NEXT_PUBLIC_PROFOUND_WEBSITE_ID=<your website id>
NEXT_PUBLIC_CMS_API_URL=https://cms.dev.tryprofound.com
NEXT_PUBLIC_BUNNY_CDN_URL=https://cms-profound.b-cdn.net
bun dev ãå®è¡ããlocalhost:3000 ãéããŠæ¥ç¶ã確èªããŸãã
airport ã³ã³ããŒãã³ããäœæãã管çç»é¢ã§ Components â Create new component ã«é²ã¿ãairport ãšåä»ããŸãã6 ã€ã®ãã£ãŒã«ã codeãnameãcityãcountryïŒTextïŒãlatitudeãlongitudeïŒNumberïŒã远å ããŸããcode ã Route Slug ãã£ãŒã«ãã«èšå®ããã¹ããŒã¿ã¹ã Active ã«ããŸãããã¹ãŠã®ãã£ãŒã«ããä»»æã®ãŸãŸã«ããUI Element ã¿ã°ã¯è¿œå ããŸããã
airport ã³ã³ããŒãã³ã â 6 ã€ã®ãã£ãŒã«ãããããcode ã Route Slug ã«èšå®ãããŠããŸãã
bun run generate-schemas
ããã«ãã airportSchemaïŒZodïŒãš AirportïŒåïŒã generated/cms-schemas.ts ã«æžã蟌ãŸããè³æ Œæ
å ±ãæ©èœããããšã確èªãããŸãã
MCP ãæ¥ç¶ããèªèšŒããŸãïŒ
claude mcp add --transport http Profound http://107.21.107.99:8081/mcp
ãµãŒããŒã¯ OAuthïŒWorkOSïŒã§èªèšŒããŸããClaude Code ã§ /mcp ãå®è¡ããProfound ãéžãã§ãã©ãŠã¶ã§ãµã€ã³ã€ã³ãå®äºããŸã â Profound ã®ããŒã«ãåããŠåŒã³åºããããšã㯠Claude Code ãèªåçã«ä¿ããŸãã/mcp ã§ Profound ã connected ãšè¡šç€ºãããããClaude ã«æ¬¡ã®ããã«ä¿ããŸãïŒ
å®åšãã空枯ã 50 ä»¶çæããŠãã ãã â æ£ãã IATA ã³ãŒããåç§°ãéœåžãåœã座æšä»ãã§ã
dataãã©ã«ããŒã« JSON ãšããŠä¿åããairport ã³ã³ããŒãã³ãã«å¯ŸããŠããªããŒã·ã§ã³ããããã§ãå ¬éæžã¿ããã¥ã¡ã³ããšã㊠Profound MCP çµç±ã§äžŠåäœæããŠãã ããã
管çç»é¢ã® airport â Variants ãéããŠãçŽ 50 ä»¶ã®å ¬éæžã¿ç©ºæž¯ã確èªããŸããã¢ããªã¯ API ããŒã§èªã¿åããMCP ã¯ç¬èªã® WorkOS ã»ãã·ã§ã³ã§æžã蟌ã¿ãŸãã
å ¬éæžã¿ããªã¢ã³ããšããŠæå ¥ãããçŽ 50 ä»¶ã®ç©ºæž¯ã
ã¹ãã£ãã©ãŒã«ãã¯ã¹ã¿ã€ã«ãæªèšå®ã§ãããããžã§ã¯ãã«ãŒãã« DESIGN.mdïŒTailwind v4 ã® @theme ãããã¯ãšããŒã¯ã³ïŒãé
眮ããŸã â èªäœããŠããrefero.design ããããŠã³ããŒãããŠãæ§ããŸããããã®åŸ Claude ã«æ¬¡ã®ããã«ä¿ããŸãïŒ
DESIGN.md ãèªã¿èŸŒã¿ãTailwind v4 ãã»ããã¢ããããŠããŒããšãã©ã³ããçµã¿èŸŒãã§ãã ããããã©ã³ãã«ã¯ã©ã³ã¿ã€ã ã® Google ã€ã³ããŒãã§ã¯ãªã
next/fontã䜿çšããŸããã¹ã¿ã€ãªã³ã°ã®ã¿ã§ãããŒãžãã³ã³ããŒãã³ãã¯äžèŠã§ãã
src/app/globals.css ã« @import "tailwindcss"; ãš @theme ãããã¯ãå«ãŸããlocalhost:3000 ã«ããŒã¯ã³ã衚瀺ãããããšã確èªããŸãã
ã¬ã³ããªã³ã°ã¬ã€ã€ãŒãæ§ç¯ããŸãïŒUI èŠçŽ ãReact ã³ã³ããŒãã³ããã«ãŒããCEL ãã€ã³ãã£ã³ã°ã翻蚳ã
管çç»é¢ã§ã³ã³ããŒãã³ãã 4 å Create new componentïŒRoute Slug ã¯äžèŠïŒããŸããåã³ã³ããŒãã³ãã«ã€ããŠããã£ãŒã«ã㯠TextïŒæå®ãããå Žåã¯é€ãïŒã§è¿œå ããã¹ããŒã¿ã¹ã Active ã«ããSettings â Tags ã§ UI Element ã¿ã°ãä»ããŸãïŒ
nav â brandheadline â title, subtitlebody â code, city, country, latitudeïŒNumberïŒ, longitudeïŒNumberïŒfooter â textbody.latitude ãš body.longitude 㯠airport ã³ã³ããŒãã³ããšäžèŽããããã Number ã«ããå¿
èŠããããŸãã
å UI èŠçŽ ã¯åç¬ã®ã³ã³ããŒãã³ã â ããã§ã¯ body ã Active ã§ UI Element ã¿ã°ä»ãã
4 ã€ã® UI èŠçŽ ã airport ã³ã³ããŒãã³ããšäžŠãã§ããŸãã
bun run generate-schemas
Claude ã«æ¬¡ã®ããã«ä¿ããŸãïŒ
components/ã« navãheadlineãbodyãfooter ã® 4 ã€ã® React ã³ã³ããŒãã³ããæ§ç¯ããŠãã ãããããããã§contentãããã 1 ã€ã ããåãåããåã¯cms-renderer/lib/typesã®BlockComponentProps<T>ïŒããã§Tã¯çææžã¿åïŒãšãããã£ãŒã«ãã¯contentããèªã¿åããŸãããã£ãããªãŒã«ã«ãŒãã®ã¬ãžã¹ããªã«ã³ã³ããŒãã³ãåã§å šã³ã³ããŒãã³ããç»é²ããŠãã ããããã¶ã€ã³ã·ã¹ãã ã§ã¹ã¿ã€ãªã³ã°ããŸãããç¬èªã³ã³ããŒãã³ããšããŠäœãããœãŒã¹ãµã€ãã®ã¬ã€ã¢ãŠãã¯ã³ããŒããªãã§ãã ãããããïŒãã©ã³ããå·Šå¯ããèŠåºãïŒç©ºæž¯åãšcode · city, countryã®ãµãã¿ã€ãã«ãæ¬æïŒã³ãŒããéœåžãåœã座æšã®è©³çްããã«ãããã¿ãŒïŒåºå®ã® 1 è¡ãã¬ã€ã¢ãŠããšã¹ã¿ã€ãªã³ã°ã®ã¿ã§ãã
Claude 㯠4 ã€ã®ã³ã³ããŒãã³ããäœæããsrc/app/[...slug]/page.tsx ã®ã¬ãžã¹ããªã次ã®ããã«èšå®ããŸãïŒ
const registry = { nav: Nav, headline: Headline, body: Body, footer: Footer };
ã«ãŒã«ã¯ 2 ã€ïŒåã³ã³ããŒãã³ãã¯ãã£ãŒã«ãã content ããèªã¿åãããšïŒåå¥ãããããšããŠæž¡ããªãïŒãã¬ãžã¹ããªããŒã¯ CMS ã®ã³ã³ããŒãã³ãåãšå®å
šäžèŽãããããš â äžäžèŽã®ãŸãŸã ãšäœãã¬ã³ããªã³ã°ãããŸããã
管çç»é¢ã§ Pages â Create page ã«é²ã¿ããã¿ãŒã³ã /{airport_code} ã«èšå®ããŸããDynamic Segment Mappings ã§ airport_code ã airport ã³ã³ããŒãã³ãïŒã¹ã©ãã°ãã£ãŒã«ã codeïŒã«ãããã³ã°ããŸããä¿åãããš Page Builder ã«ç§»åããŸãã/JFK ã解決ããããšã確èªããŸãã
ã«ã¹ã¿ã ã¿ãããããŒãžã« UI èŠçŽ ã远å ããŸãã
Page Builder ã® JFK ãã€ã³ãã£ã³ã°ã« 4 ã€ã® UI èŠçŽ ã远å ãããŠããŸãã
JFK ãã€ã³ãã£ã³ã°ãéžæ â Add UI Element â Custom ã¿ã â navãheadlineãbodyãfooter ã®é ã«è¿œå ããŸããProfound ã¯ãã®ã»ãããå
šç©ºæž¯ãã€ã³ãã£ã³ã°ã«åæ ããŸãã
åãã£ãŒã«ããåããŸããéçå€ïŒnav ã®ãã©ã³ããfooter ã®ããã¹ãïŒã¯çŽæ¥å
¥åãåçå€ã¯ãã€ãããã¯ã«åãæ¿ã㊠CEL ãèšè¿°ããŸããå
±éã®åç
§ã¯ documents.get("airport", meta.params.airport_code) ã§ãã
| ãã£ãŒã«ã | CEL å€ |
|---|---|
headline.title | documents.get("airport", meta.params.airport_code).name |
headline.subtitle | documents.get("airport", meta.params.airport_code).code + " · " + documents.get("airport", meta.params.airport_code).city + ", " + documents.get("airport", meta.params.airport_code).country |
body.code / body.city / body.country | documents.get("airport", meta.params.airport_code).<field> |
body.latitude / body.longitude | documents.get("airport", meta.params.airport_code).latitudeïŒããã³ .longitudeïŒ |
nav.brand, footer.text | éçæåå |
ããŒãžïŒå³äžïŒã Publish ããŸãã
localhost:3000/JFK ãéããç¶ã㊠/SFOã/LAX ã確èªããŸã â åããã³ãã¬ãŒãã§ç©ºæž¯ããŒã¿ã ããç°ãªããŸãã
JFK ã®ããŒã¿ãè±èªã§ã¬ã³ããªã³ã°ããã宿ããŒãžã
ãŸãã³ã³ããŒãã³ãã翻蚳ããŸãã 管çç»é¢ã§åã³ã³ããŒãã³ãïŒUI èŠçŽ ã§ãªããŠãå¯ïŒãéããTranslate â Submit ãã¯ãªãã¯ããŸããProfound 㯠35 èšèªãã¹ãŠã«äžåºŠã§ç¿»èš³ããéçãã£ãŒã«ãå€ãå«ãŸããŸããã«ãŒããç·šéããã CEL ã«è§Šãããããåã«å®æœããŠãã ããã
Translate â Submit ã§ 35 èšèªãžäžæ¬ç¿»èš³ãéä¿¡ããŸãã
èšèªãã£ã¡ã³ã·ã§ã³ã远å ããŸãã Pages ã§ãã¿ãŒã³ã /{language}/{airport_code} ã«å€æŽããŸããlanguage ã® Dynamic Segment Mapping ãçµã¿èŸŒã¿ã® language System ã³ã³ããŒãã³ãïŒã¹ã©ãã°ãã£ãŒã«ã codeïŒã«è¿œå ããŸããä¿ååŸã/en/JFK ã解決ããããšã確èªããŸãã
ã«ãŒãã« {language} ã»ã°ã¡ã³ãã远å ã
翻蚳察象ã®ãã¹ãŠã®ãã£ãŒã«ãã翻蚳 fetch ã«åããŸãã ããŒãžãåœéåããã«ã¯ãèšèªäŸåãã£ãŒã«ããã¹ãŠ â èŠåºãã ãã§ãªã â ã documents.get(...) ãã documents.translated("airport", meta.params.airport_code, meta.params.language) ã«åãæ¿ããŸãïŒ
| ãã£ãŒã«ã | 翻蚳ç CEL |
|---|---|
headline.title | documents.translated("airport", meta.params.airport_code, meta.params.language).name |
headline.subtitle | documents.get("airport", meta.params.airport_code).code + " · " + documents.translated("airport", meta.params.airport_code, meta.params.language).city + ", " + documents.translated("airport", meta.params.airport_code, meta.params.language).country |
body.city / body.country | documents.translated("airport", meta.params.airport_code, meta.params.language).cityïŒããã³ .countryïŒ |
IATA ã® code ãšåº§æšã¯èšèªã«ãããåããªã®ã§ documents.get ã®ãŸãŸã«ããŸããnav.brand ãš footer.text ã¯ã¹ããã 1 ã®ã³ã³ããŒãã³ã翻蚳ã§ãã§ã«å¯Ÿå¿æžã¿ã§ãã
3 ã€ãã¹ãŠå®äºãããšã/fr/SFO ã /de/SFO ãªã©ãå®å
šã«ç¿»èš³ãããç¶æ
ã§è¡šç€ºãããŸãã
GitHub ã«ããã·ã¥ããŸãïŒ
git init
git add -A
git commit -m "Airport directory"
gh repo create airports --public --source=. --push
Vercel ã«ã€ã³ããŒãïŒAdd New â Project â airports ãªããžããªãã€ã³ããŒãããŸããç°å¢å€æ° â PROFOUND_API_KEYãNEXT_PUBLIC_PROFOUND_WEBSITE_IDãNEXT_PUBLIC_CMS_API_URLãå¿
èŠã«å¿ã㊠NEXT_PUBLIC_BUNNY_CDN_URL â ã远å ã㊠Deployã/en/JFK ãš /fr/SFO ã確èªããŸãã以åŸã® git push ã§åãããã€ãããŸãã
ã©ã¡ããã¹ãã£ãã©ãŒã«ãã«å梱ãããŠããŸãã
layout.tsx ã® <Refresher> ã¯ç®¡çç»é¢ã§ç·šéã»ä¿åãããšãã¬ãã¥ãŒããŠããããŒãžãæŽæ°ããŸã â åãããã€äžèŠãâŠ/en/JFK?edit_mode=trueïŒã« ?edit_mode=true ãä»äžãããšç·šéãªãŒããŒã¬ã€ã衚瀺ãããŸããäžè¬å
¬éã®èšªåè
ã«ã¯ã¯ãªãŒã³ãªããŒãžã衚瀺ãããŸãã?edit_mode=true ã¯ã©ã€ãããŒãžäžã«ãšãã£ã¿ããªãŒããŒã¬ã€è¡šç€ºããŸãã
50 ä»¶ã®ç©ºæž¯ã35 èšèªãã©ã€ãé ä¿¡ â ããŒã¿ã§æºãããããã£ã 1 æ¬ã®ã«ãŒãã4 ã€ã® React ã³ã³ããŒãã³ãããããŠå°éã® CEL ãã€ã³ãã£ã³ã°ãCMS ãã³ã³ãã³ããä¿æããããªãã®ã³ãŒããã¬ã³ããªã³ã°ããCEL ãäž¡è ãã€ãªããŸãã