Controlling what's public
Your takuhon.json is the complete record. What actually reaches a public
reader — the profile page, the API, JSON-LD, the MCP endpoint, the exported CV —
is decided by three independent layers in settings and meta. A value is
public only when all the layers that apply to it allow it (logical AND), and
the same projection runs on every surface, so they always agree.
1. Feature toggles — turn whole capabilities on or off
Section titled “1. Feature toggles — turn whole capabilities on or off”settings.enable* switches entire features:
| Setting | Default | Effect |
|---|---|---|
enableJsonLd | true | Emit Schema.org JSON-LD on the page. |
enableApi | true | Expose the public read API endpoints. |
enableAnalytics | false | Opt-in first-party analytics. |
2. Section visibility — hide whole sections
Section titled “2. Section visibility — hide whole sections”settings.publicVisibility (added in schema 0.6.0) lets you hide an entire
content section. Each key is a section name; setting it to false removes that
section from every public surface:
{ "settings": { "publicVisibility": { "education": false, "recommendations": false } }}- Default is all-visible. An absent key — or an absent
publicVisibilityblock — means the section is public, so older profiles are unaffected. - The 16 sections you can toggle are
links,careers,projects,skills,certifications,memberships,volunteering,honors,education,publications,languages,courses,patents,testScores,recommendations, andcontact. - Your profile identity (
profile.displayName, avatar, tagline, …) is always public and is intentionally not a toggle. To take a whole profile offline, don’t deploy it (or turn the API off).
3. Field-level controls — hide specific fields
Section titled “3. Field-level controls — hide specific fields”Within a visible section, individual fields stay governed by their own flags:
| Control | Default | Effect |
|---|---|---|
contact.showEmail | false | Email is hidden unless explicitly set to true. |
meta.privacy.hideCredentialIds | true | Strips certifications[*].credentialId. |
meta.privacy.hideEducationGrades | true | Strips education[*].grade. |
Hiding a whole section (layer 2) supersedes its field checks; a visible section still honors these field flags.
One filter, every surface
Section titled “One filter, every surface”These controls are applied by a single projection in @takuhon/core, so the
profile page, /api/profile, /api/jsonld, /takuhon.json, the MCP endpoint,
and the derived CV all expose exactly the same content. The admin editor exposes
all three layers as form controls, including a checkbox per section under
Public sections.
For every field and its constraints, see the schema reference.