OpenLinks is a personal, free, open source, version-controlled static website generator for social links.
This project is developer-first: fork or template the repo, edit JSON, push, and publish.
- Static SolidJS site with minimal runtime complexity.
- Version-controlled content in
data/*.json. - Schema + policy validation with actionable remediation output.
- Rich and simple card support with build-time enrichment.
- Build-time profile-avatar materialization with local fallback behavior.
- Build-time rich/SEO image materialization with local-only runtime behavior.
- GitHub Actions CI + GitHub Pages deploy pipeline already wired.
- Theme and layout controls designed for forking and customization.
- Data-driven typography overrides via
data/site.json(ui.typography).
- Developers who are comfortable editing JSON and markdown.
- Maintainers using AI agents to automate content updates.
- User auth/account system.
- CMS or WYSIWYG editor.
- Built-in analytics.
- Plugin marketplace.
For full walkthrough and troubleshooting, see Quickstart.
Paste this one-liner into your OpenClaw instance:
Follow docs/openclaw-bootstrap.md exactly for this repository. Execute Required Execution Policy, End-to-End OpenClaw Sequence, Automation and Identity Confirmation Rule, Social Discovery and Inference Contract, Deployment Verification Contract, Structured URL Reporting Schema, README Deploy URL Marker-Block Contract, and Final Output Contract exactly as written. If an existing setup is detected, ask the single route-confirmation and switch to docs/openclaw-update-crud.md when selected.
Use this path when this is the first setup for a new fork or local clone.
Paste this one-liner into your OpenClaw instance:
Follow docs/openclaw-update-crud.md exactly for this repository. Execute Required Startup Handshake (including conditional customization-audit selectors), Defaults, Customization Audit Path (Optional), Repository Resolution, Dirty Local Repository Handling, Interaction Modes, Identity and Discovery Policy, Update/CRUD Execution Sequence, Final Output Contract, and Required reason codes exactly as written. When customization_path=customization-audit, use docs/customization-catalog.md as the checklist source.
Use this path for day-2 maintenance when the user likely already has a fork and/or local clone.
Use one of:
- Fork this repository.
- Use this repository as a template.
git clone <your-repo-url>
cd open-links
npm installEdit these files:
data/profile.json- identity and profile details.data/links.json- simple/rich links, groups, ordering.data/site.json- theme, UI, quality, and deployment-related config.
Starter presets:
data/examples/minimal/data/examples/grouped/data/examples/invalid/(intentional failures for testing)
npm run validate:data
npm run devnpm run build
npm run previewOpenClaw should update only the rows between the exact marker lines below:
- rewrite only marker-bounded rows,
- commit only if normalized URL/status values changed.
OPENCLAW_DEPLOY_URLS_START
| target | status | primary_url | additional_urls | evidence |
|---|---|---|---|---|
| github-pages | pending | TBD | none | waiting for first successful deploy |
| OPENCLAW_DEPLOY_URLS_END |
If you want an AI agent workflow with explicit checkpoints and manual opt-outs, use the AI-Guided Customization Wizard. For automation-first execution paths, use OpenClaw Bootstrap Contract for first-time setup and OpenClaw Update/CRUD Contract for day-2 changes.
Recommended flow:
- Start with Quickstart.
- Use Data Model while shaping content.
- Use Customization Catalog for complete day-2 data-driven audits.
- Run the AI wizard to automate repeatable CRUD updates.
- Push to
main. - In GitHub repository settings, set Pages source to GitHub Actions.
- Wait for:
.github/workflows/ci.ymlto succeed..github/workflows/deploy-pages.ymlto deploy.
- Open the published Pages URL from the deployment job.
Local parity commands:
npm run ci:required
npm run ci:strictThen use:
- Deployment Operations Guide for full troubleshooting and diagnostics flow.
- OpenClaw Bootstrap Contract for deployment URL reporting and README marker-block updates.
- OpenClaw Update/CRUD Contract for existing repo update sessions and interaction-mode behavior.
- Adapter Contract Guide for future non-GitHub host planning.
High-signal deployment checks:
required-checksjob in.github/workflows/ci.ymlis green.deployjob in.github/workflows/deploy-pages.ymlis green.- Deploy summary includes a published URL.
- If deploy fails, review workflow summary remediation and diagnostics artifacts.
npm run avatar:sync- fetch profile avatar intopublic/generated/and writedata/generated/profile-avatar.json.npm run images:sync- fetch rich-card/SEO remote images intopublic/generated/images/and writedata/generated/content-images.json.npm run dev- start local dev server.npm run validate:data- schema + policy checks (standard mode).npm run validate:data:strict- fails on warnings and errors.npm run validate:data:json- machine-readable validation output.npm run build- avatar sync + enrichment + content-image sync + validation + production build.npm run build:strict- avatar sync + strict enrichment + content-image sync + strict validation + build.npm run preview- serve built output.npm run typecheck- TypeScript checks.
npm run quality:check- standard quality gate.npm run quality:strict- strict quality gate.npm run quality:json- standard quality JSON report.npm run quality:strict:json- strict quality JSON report.
npm run ci:required- required CI checks.npm run ci:strict- strict CI signal checks.
Allowed URL schemes:
httphttpsmailtotel
Use custom for extension metadata:
- top-level
custominprofile,links, andsite - per-link
customin each link object
Unknown top-level keys are allowed but warned. custom keys that collide with core keys fail validation.
For full data model details and examples, see Data Model.
- Re-run
npm run validate:dataand inspect path-specific remediation lines. - Check URL schemes and required fields.
- Move extension fields into
customand avoid reserved-key collisions.
- Re-run with
npm run buildand inspect first failing command output. - If strict mode fails, compare
npm run validate:datavsnpm run validate:data:strict. - Re-run rich enrichment:
npm run enrich:rich. - Force-refresh avatar cache when needed:
npm run avatar:sync -- --force(or setOPENLINKS_AVATAR_FORCE=1). - Force-refresh rich/SEO image cache when needed:
npm run images:sync -- --force(or setOPENLINKS_IMAGES_FORCE=1).
- Confirm CI passed on
main. - Confirm Pages source is GitHub Actions.
- Check deploy workflow summary for remediation notes.
- Verify base-path settings if publishing from a project page.
- Quickstart
- OpenClaw Bootstrap Contract
- OpenClaw Update/CRUD Contract
- Customization Catalog
- Data Model
- AI-Guided Customization Wizard
- Theming and Layout Extensibility
- Deployment Operations Guide
- Adapter Contract Guide
data/- source content JSON and generated artifacts.schema/- JSON schemas.scripts/- validation, enrichment, and quality runners.src/- SolidJS app..github/workflows/- CI and deploy automation..planning/- project planning and phase artifacts.
MIT (see LICENSE).