コンテンツにスキップ

スキーマリファレンス

このページは takuhon.json スキーマのすべてのフィールド(各セクション、型、必須かどうか、 制約、用途)を記載します。ドキュメント全体のやさしい導入は takuhon.json ファイル を参照してください。

以下の表は canonical なスキーマ(バージョン 1.4.0)から生成しています。各フィールドの説明は、canonical な契約として英語で維持されているスキーマからそのまま転記しています。

フィールド必須制約説明
schemaVersionstring必須pattern ^[0-9]+\.[0-9]+\.[0-9]+(-[a-zA-Z0-9.-]+)?$Semantic version of the takuhon schema this document conforms to.
profileProfile必須
linksLink の配列任意≤ 100 件
careersCareer の配列任意≤ 50 件
projectsProject の配列任意≤ 100 件
skillsSkill の配列任意≤ 200 件
certificationsCertification の配列任意≤ 50 件
membershipsMembership の配列任意≤ 50 件
volunteeringVolunteering の配列任意≤ 50 件
honorsHonor の配列任意≤ 50 件
educationEducation の配列任意≤ 30 件
publicationsPublication の配列任意≤ 100 件
languagesLanguage の配列任意≤ 30 件
coursesCourse の配列任意≤ 100 件
patentsPatent の配列任意≤ 50 件
testScoresTestScore の配列任意≤ 30 件
recommendationsRecommendation の配列任意≤ 50 件
highlightsHighlight の配列任意≤ 50 件
contactContact必須
settingsSettings必須
metaMeta必須

上記以外のプロパティは許可されません。

BCP-47 language tag (e.g., ‘en’, ‘ja’, ‘zh-Hant’, ‘pt-BR’).

  • 型: string
  • 制約: pattern ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$; 2–35 文字

ISO 3166-1 alpha-2 country code (uppercase, two letters).

  • 型: string
  • 制約: pattern ^[A-Z]{2}$

Year-month in ‘YYYY-MM’ format (Gregorian calendar).

  • 型: string
  • 制約: pattern ^[0-9]{4}-(0[1-9]|1[0-2])$

ISO 8601 date-time (e.g., 2026-05-11T12:34:56Z).

  • 型: string
  • 制約: format date-time
  • 型: string
  • 制約: format uri; ≤ 2048 文字
  • 型: string
  • 制約: format email; ≤ 254 文字

URL-safe identifier (lowercase alphanumerics and hyphens, must start with alphanumeric).

  • 型: string
  • 制約: pattern ^[a-z0-9][a-z0-9-]*$; 1–64 文字

Per-item public visibility (added in 0.7.0). ‘private’ removes the item from every public surface via applyPublicPrivacyFilter; an absent value or ‘public’ keeps the item public.

  • 型: string
  • 制約: いずれか: public, private

Map of BCP-47 locale tag to short title-like string (max 200 chars per value). Each value must contain at least one non-whitespace character.

  • 型: object (マップ)
  • キー: pattern ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$
  • 値: string (pattern \S; 1–200 文字)
  • 制約: 1 件以上

Map of BCP-47 locale tag to body-length string (max 5000 chars per value). Each value must contain at least one non-whitespace character.

  • 型: object (マップ)
  • キー: pattern ^[a-zA-Z]{2,3}(-[a-zA-Z0-9]{2,8})*$
  • 値: string (pattern \S; 1–5000 文字)
  • 制約: 1 件以上

Identifies the kind of link. ‘custom’ requires iconUrl.

  • 型: string
  • 制約: いずれか: website, blog, github, gitlab, linkedin, x, mastodon, bluesky, instagram, youtube, threads, facebook, email, rss, custom
フィールド必須制約説明
displayNameLocalizedTitle必須
taglineLocalizedTitle任意
bioLocalizedBody任意
avatarAvatar任意
locationAddress任意

上記以外のプロパティは許可されません。

フィールド必須制約説明
urlstring必須format uri-reference; ≤ 2048 文字URL or path to the avatar image.
altLocalizedTitle任意

上記以外のプロパティは許可されません。

フィールド必須制約説明
countryIso3166Alpha2任意
regionstring任意≤ 100 文字
localityLocalizedTitle任意
displayLocalizedTitle任意

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
typeLinkType必須
labelLocalizedTitle任意
urlUrl必須
featuredboolean任意
orderinteger任意≥ 0
iconUrlUrl任意

typecustom の場合、iconUrl を必須とします。 上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
organizationLocalizedTitle必須
roleLocalizedTitle必須
descriptionLocalizedBody任意
startDateYearMonth必須
endDateYearMonth または null任意
isCurrentboolean任意
urlUrl任意
locationAddress任意
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
titleLocalizedTitle必須
roleLocalizedTitle任意The owner’s role/relationship on this project (added in 1.4.0), e.g. “Author & lead maintainer”, “Contributor”, “Product owner”. Rendered as a short line under the project title. Localized, like the section-entry roles in Career/Membership/Volunteering.
descriptionLocalizedBody任意
urlUrl任意
tagsstring の配列任意≤ 30 件; 件: 1–50 文字
relatedCareerIdSlug任意
startDateYearMonth任意
endDateYearMonth または null任意
highlightedboolean任意
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
labelstring または LocalizedTitle必須Skill name. A plain string is locale-independent; a localized map (added in 1.4.0) resolves per request locale. Existing single-string labels stay valid — the map form is purely additive.
categorystring任意1–64 文字Recommended values (extensible): programming, design, business, communication, language, music, art, sports, other.
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idstring必須1–64 文字Matches the category value on the skills that belong to this group.
labelLocalizedTitle必須Localized display heading for the group.

上記以外のプロパティは許可されません。

フィールド必須制約説明
emailEmail任意
showEmailboolean任意default false
formUrlUrl任意

上記以外のプロパティは許可されません。

フィールド必須制約説明
defaultLocaleLocaleTag必須
fallbackLocaleLocaleTag任意
availableLocalesLocaleTag の配列必須1–50 件; 重複なし
themestring任意1–64 文字UI theme identifier. ‘default’ is the built-in theme; adapters may add more.
showPoweredByboolean任意default trueDisplay the ‘Powered by takuhon’ attribution in the rendered profile.
enableJsonLdboolean任意default trueEmit Schema.org JSON-LD on the rendered profile page.
enableApiboolean任意default trueExpose the public read API endpoints (GET /api/profile, /api/jsonld, /api/schema, /takuhon.json).
enableAnalyticsboolean任意default falseOpt-in flag for first-party analytics. Default is false to keep takuhon privacy-respecting by default.
activityActivitySettings任意
publicVisibilityPublicVisibility任意
contactContactSettings任意
appearanceAppearanceSettings任意
skillCategoriesSkillCategory の配列任意≤ 50 件Ordered skill-category display groups (added in 1.3.0). When present, the rendered profile groups skills by their category under these localized headings, in array order; absent = the flat skill list. A skill whose category is not listed here (or which has none) renders in a trailing group so nothing is dropped.
sectionOrderany の配列任意≤ 18 件; 重複なし; 件: いずれか: about, careers, projects, volunteering, skills, activity, education, certifications, publications, honors, memberships, courses, patents, testScores, languages, recommendations, highlights, contactExplicit section display order (added in 1.4.0). A partial list is allowed — any renderable section not named here follows, in the default order. Absent = the default order.
sectionLabelsSectionLabelOverrides任意
highlightsIntroLocalizedTitle任意Optional localized intro line shown under the highlights section heading (added in 1.4.0). Absent = no intro line.

上記以外のプロパティは許可されません。

Localized overrides for section headings and chrome labels (added in 1.4.0). Each present key retitles that label; the renderer merges these over its built-in locale pack. Absent keys keep the built-in label.

フィールド必須制約説明
aboutLocalizedTitle任意
careersLocalizedTitle任意
projectsLocalizedTitle任意
volunteeringLocalizedTitle任意
skillsLocalizedTitle任意
activityLocalizedTitle任意
educationLocalizedTitle任意
certificationsLocalizedTitle任意
publicationsLocalizedTitle任意
honorsLocalizedTitle任意
membershipsLocalizedTitle任意
coursesLocalizedTitle任意
patentsLocalizedTitle任意
testScoresLocalizedTitle任意
languagesLocalizedTitle任意
recommendationsLocalizedTitle任意
highlightsLocalizedTitle任意
contactLocalizedTitle任意
skipLinkLocalizedTitle任意
localeNavLocalizedTitle任意
featuredLinksLocalizedTitle任意
otherLinksLocalizedTitle任意
poweredByLocalizedTitle任意

上記以外のプロパティは許可されません。

Opt-in design tokens for the rendered profile (added in 1.2.0). A declarative re-skin seam: owners override the standard renderer’s built-in color and font defaults. This is a token map only, not arbitrary CSS — every value is length- and pattern-constrained so it cannot break out of the inline

フィールド必須制約説明
fontFamilystring任意pattern ^[A-Za-z0-9\s,'"._-]+$; 1–256 文字CSS font-family stack for the page body, e.g. “Inter, system-ui, sans-serif”. Quotes and commas are allowed; CSS-structural characters (; { } < >) are not.
colorsAppearanceColors任意Light-mode (:root) color overrides.
colorsDarkAppearanceColors任意Dark-mode (prefers-color-scheme: dark) color overrides. Note: until the standard renderer ships a default dark palette, only the keys set here change in dark mode.

上記以外のプロパティは許可されません。

A set of overridable color tokens. Each value is a CSS color (hex, rgb()/rgba(), hsl()/hsla(), or a named color); CSS-structural characters (; { } < > ” ’ ) are disallowed so a value cannot escape the inline

フィールド必須制約説明
bgCssColor任意Page background.
surfaceCssColor任意Raised surfaces such as skill/tag chips.
textCssColor任意Primary body text.
textMutedCssColor任意Secondary/muted text (taglines, meta, captions).
borderCssColor任意Hairline borders and rules.
accentCssColor任意Accent color for emphasis and focus affordances.
primaryCssColor任意Primary interactive color, e.g. links.
primaryContrastCssColor任意Foreground color used on top of the primary color.
headingCssColor任意Heading color for the “About” section’s Markdown sub-headings (##/###).

上記以外のプロパティは許可されません。

A CSS color value, restricted to a safe allowlist: a hex color (#rgb/#rgba/#rrggbb/#rrggbbaa), a bare keyword (named colors, currentColor, transparent), or a color function (rgb/rgba/hsl/hsla/hwb/lab/lch/oklab/oklch/color). url(), image-set(), var(), and other fetch- or reference-bearing functions are intentionally excluded so a value can never trigger an external request or escape the inline

  • 型: string
  • 制約: pattern ^(?:#[0-9A-Fa-f]{3,8}|[A-Za-z]+|(?:rgb|rgba|hsl|hsla|hwb|lab|lch|oklab|oklch|color)\([A-Za-z0-9.,%/\s-]*\))$; 1–64 文字

Opt-in contact form configuration (added in 1.1.0). Only public values live here; the Turnstile site key is safe to embed in the page. The Turnstile secret, the recipient address, and the From label are provisioned out of band as environment configuration and are never stored in takuhon.json. Adapters that support the form mount the widget and a POST endpoint when ‘enabled’ is true.

フィールド必須制約説明
enabledboolean任意default falseMaster switch. When false (the default), no contact form is mounted even if a site key is present.
turnstileSiteKeystring任意1–128 文字Public Cloudflare Turnstile site key, safe to embed in the page. Without it the widget is not mounted.
endpointstring任意1–2048 文字Override the POST endpoint the widget submits to. Defaults to /api/contact on the same origin.
subjectPrefixstring任意1–128 文字Subject prefix for the delivered email, e.g. ‘[example.com contact]’.

上記以外のプロパティは許可されません。

Per-section public visibility (added in 0.6.0). Each key is a content section; setting it to false hides that whole section from every public surface (GET /, /api/profile, /api/jsonld, /takuhon.json, MCP, and the derived CV) via the shared applyPublicPrivacyFilter. An absent key — or an absent object — means the section is public, so the default is all-visible and omitting this block is fully backwards-compatible. The profile identity (profile.displayName, …) is always public and is intentionally not a key here. Field-level controls (contact.showEmail, meta.privacy.*) still apply within a visible section: visibility is the AND of the feature toggle, this section flag, and the field flag.

フィールド必須制約説明
linksboolean任意Default true. When false, links[] is emitted empty on public surfaces.
careersboolean任意Default true. When false, careers[] is emitted empty on public surfaces.
projectsboolean任意Default true. When false, projects[] is emitted empty on public surfaces.
skillsboolean任意Default true. When false, skills[] is emitted empty on public surfaces.
certificationsboolean任意Default true. When false, certifications[] is emitted empty on public surfaces.
membershipsboolean任意Default true. When false, memberships[] is emitted empty on public surfaces.
volunteeringboolean任意Default true. When false, volunteering[] is emitted empty on public surfaces.
honorsboolean任意Default true. When false, honors[] is emitted empty on public surfaces.
educationboolean任意Default true. When false, education[] is emitted empty on public surfaces.
publicationsboolean任意Default true. When false, publications[] is emitted empty on public surfaces.
languagesboolean任意Default true. When false, languages[] is emitted empty on public surfaces.
coursesboolean任意Default true. When false, courses[] is emitted empty on public surfaces.
patentsboolean任意Default true. When false, patents[] is emitted empty on public surfaces.
testScoresboolean任意Default true. When false, testScores[] is emitted empty on public surfaces.
recommendationsboolean任意Default true. When false, recommendations[] is emitted empty on public surfaces.
highlightsboolean任意Default true. When false, highlights[] is emitted empty on public surfaces.
contactboolean任意Default true. When false, the contact section (email, formUrl) is emitted empty on public surfaces.

上記以外のプロパティは許可されません。

Opt-in developer-activity dashboard configuration (GitHub / WakaTime). Only the owner-curated settings live here; secrets are provisioned out of band and the synced metrics are stored in a separate document, never in takuhon.json.

フィールド必須制約説明
enabledboolean任意default falseMaster switch. When false (the default), the activity section is not rendered even if a snapshot exists.
githubobject任意
wakatimeobject任意
showRankboolean任意default trueDisplay the derived activity rank / badge.
refreshHintHoursinteger任意1–168Advisory refresh cadence in hours. The real cadence is how often the sync step (CLI command or scheduled job) runs.

上記以外のプロパティは許可されません。

フィールド必須制約説明
usernamestring必須1–39 文字GitHub login whose public activity is summarized.
showLanguagesboolean任意default true
showContributionsboolean任意default true

上記以外のプロパティは許可されません。

フィールド必須制約説明
usernamestring必須1–255 文字WakaTime username whose coding-time stats are summarized.
showCodingTimeboolean任意default true

上記以外のプロパティは許可されません。

フィールド必須制約説明
createdAtIsoDateTime任意
updatedAtIsoDateTime任意
generatorstring任意1–100 文字Tool that produced this document (e.g. ‘Takuhon’, ‘create-takuhon@0.1.0’).
contentLicenseContentLicense必須
privacyMetaPrivacy任意

上記以外のプロパティは許可されません。

フィールド必須制約説明
spdxIdstring必須1–64 文字SPDX identifier (e.g., ‘CC-BY-4.0’, ‘CC0-1.0’) or ‘Proprietary’. No default; the profile owner must choose explicitly.
urlUrl任意
attributionobject任意
rightsstring任意1–1000 文字Free-form rights statement (used when spdxId=‘Proprietary’ or for additional notices).

上記以外のプロパティは許可されません。

フィールド必須制約説明
namestring任意1–200 文字
urlUrl任意

上記以外のプロパティは許可されません。

Opt-out flags that strip personally identifying fields from public API output (GET /api/profile, /api/jsonld, /takuhon.json). Admin endpoints (PUT /api/admin/*, GET /api/admin/export) ignore these flags. Privacy-by-default: omitting the object or individual flags is equivalent to true.

フィールド必須制約説明
hideCredentialIdsboolean任意default trueWhen true (default), strip certifications[*].credentialId from public responses.
hideEducationGradesboolean任意default trueWhen true (default), strip education[*].grade from public responses.

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
titleLocalizedTitle必須
issuingOrganizationLocalizedTitle必須
issueDateYearMonth必須
expirationDateYearMonth または null任意null = explicitly ‘no expiration’. Omit if unknown/unstated.
credentialIdstring任意1–100 文字License or certificate number. Public exposure controlled by meta.privacy.hideCredentialIds.
urlUrl任意
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
organizationLocalizedTitle必須
roleLocalizedTitle任意
descriptionLocalizedBody任意
startDateYearMonth必須
endDateYearMonth または null任意null = ongoing. Omit if unknown.
isCurrentboolean任意
urlUrl任意
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
organizationLocalizedTitle必須
roleLocalizedTitle必須
causeLocalizedTitle任意
descriptionLocalizedBody任意
startDateYearMonth必須
endDateYearMonth または null任意
isCurrentboolean任意
urlUrl任意
secondaryLinkSecondaryLink任意An optional second link for this entry (added in 1.4.0), rendered as a small pill beside the description — e.g. the organization’s GitHub org page next to its main site. The brand glyph is resolved from the URL host; no vendor name is hard-coded.
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

A supplementary link with an optional localized label (added in 1.4.0). When the label is absent the renderer shows the URL host. The brand glyph is resolved from the URL host.

フィールド必須制約説明
urlUrl必須The link target.
labelLocalizedTitle任意Localized display label. When absent, the renderer derives a label from the URL host.

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
titleLocalizedTitle必須
issuerLocalizedTitle必須
descriptionLocalizedBody任意
dateYearMonth必須
urlUrl任意
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
institutionLocalizedTitle必須
degreeLocalizedTitle任意
fieldOfStudyLocalizedTitle任意
descriptionLocalizedBody任意
gradestring任意1–50 文字Free-form grade / class / GPA. Public exposure controlled by meta.privacy.hideEducationGrades.
startDateYearMonth必須
endDateYearMonth または null任意null = currently enrolled.
isCurrentboolean任意
urlUrl任意
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
titleLocalizedTitle必須
publisherLocalizedTitle任意
descriptionLocalizedBody任意
dateYearMonth必須
urlUrl任意
doistring任意1–200 文字DOI identifier (e.g. ‘10.1145/3548643.3548644’). The full URL goes in ‘url’.
coAuthorsstring の配列任意≤ 50 件; 件: 1–100 文字Co-author names in original script. Excludes the profile owner.
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
languageLocaleTag必須
displayNameLocalizedTitle任意
proficiencystring必須いずれか: native, fluent, professional, intermediate, basicLinkedIn-compatible 5-level proficiency.
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
titleLocalizedTitle必須
providerLocalizedTitle任意
courseNumberstring任意1–50 文字
descriptionLocalizedBody任意
completionDateYearMonth任意
certificateUrlUrl任意
relatedEducationIdSlug任意Optional reference to an education[].id (e.g. for university coursework).
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
titleLocalizedTitle必須
patentNumberstring必須1–100 文字
officestring任意≤ 100 文字Patent office name (e.g. ‘USPTO’, ‘JPO’, ‘EPO’).
statusstring必須いずれか: pending, issued, expired, abandoned
descriptionLocalizedBody任意
filingDateYearMonth任意
grantDateYearMonth任意
urlUrl任意
coInventorsstring の配列任意≤ 20 件; 件: 1–100 文字
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
titleLocalizedTitle必須
scorestring必須1–50 文字Free-form score string (e.g. ‘112 / 120’, ‘330’, ‘N1 Pass’, or a percentile). The validator does not interpret its contents.
dateYearMonth必須
relatedEducationIdSlug任意Optional reference to an education[].id (e.g. for a university course exam).
descriptionLocalizedBody任意
urlUrl任意
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
bodyLocalizedBody必須
authorRecommendationAuthor必須
relationshipLocalizedTitle任意How the recommender relates to the profile owner (e.g. ‘managed directly’, ‘worked together’).
dateYearMonth任意
relatedCareerIdSlug任意Optional reference to a careers[].id (the position the recommendation pertains to).
relatedEducationIdSlug任意Optional reference to an education[].id (e.g. a recommendation from a professor).
orderinteger任意≥ 0

上記以外のプロパティは許可されません。

フィールド必須制約説明
namestring必須1–100 文字Recommender’s name, in its original script. Owner-curated; takuhon does not verify it.
headlineLocalizedTitle任意Recommender’s title / role / organization at the time of the recommendation.
urlUrl任意Link to the recommender’s profile, for external verification by the reader.

上記以外のプロパティは許可されません。

One curated “selected post” (added in 1.4.0), rendered as a card in the highlights carousel. A hand-picked link to an off-site post (Instagram, X, a blog, a talk, …) with a self-hosted thumbnail — deliberately not an automated social feed. Appears on the public page, /api/profile, /takuhon.json, and MCP; it is intentionally omitted from JSON-LD and the derived CV (no natural vocabulary/résumé slot).

フィールド必須制約説明
idSlug必須
visibilityVisibility任意
platformstring必須1–64 文字Free-form source platform (e.g. ‘instagram’, ‘x’, ‘github’, ‘blog’, ‘event’). A value with a matching brand glyph renders a badge icon; others fall back to a text badge. Not an enum, so new platforms need no schema change.
urlUrl必須Permalink to the original post; the card links here.
imagestring必須format uri-reference; ≤ 2048 文字Self-hosted thumbnail, as an absolute URL or a root-relative path (like avatar). Serving the asset is the deployment’s responsibility (a static build does not copy it; a Cloudflare deploy serves it via its assets binding / /assets/*). Do not point at a third-party CDN URL — those can be signed/expiring and leak visitor data.
altLocalizedTitle必須Required alt text for the thumbnail — the card must not depend on the image alone.
titleLocalizedTitle必須Localized card title / caption.
descriptionLocalizedBody任意Optional localized supporting text shown under the title.
postedAtstring任意format date; pattern ^[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[12][0-9]|3[01])$Optional post date, ISO ‘YYYY-MM-DD’ (full date, unlike the YYYY-MM dates used elsewhere — a post has a specific day).
tagsstring の配列任意≤ 30 件; 件: 1–50 文字
orderinteger任意≥ 0

上記以外のプロパティは許可されません。