Overview
This project separates markdown content from the Hexo site that renders and publishes it.
wikip-co/contentis the shared markdown repository.wikip-co/wikip.cois the Hexo site repository.wikip-co/publicreceives the generated static output forwikip.co.
The key design choice is that content remains the single source of truth while the site keeps its theme, Hexo configuration, deployment settings, and runtime integrations. The repositories are standalone checkouts; none is linked as a Git submodule.
Current Architecture
The diagram source is committed in wikip-co/Research under docs/diagrams/specs/.
How Deploys Work
The deploy path is:
- A contributor edits markdown in
wikip-co/contentand pushes tomain. trigger-sites.ymlfires only for markdown changes.- That workflow sends a
repository_dispatchevent towikip.coand includes the exactcontent_refandcontent_sha. - The site workflow checks out that content SHA and the
publicrepository into temporary build directories. - It copies content into a plain
_poststree, restores markdown mtimes from Git history, builds Hexo, and pushes generated output towikip-co/public.
Two implementation details matter:
- The global Hexo permalink format stays unchanged.
- Duplicate route risks are handled with targeted
permalink:overrides inside the content files that actually collide.
Manual Agent Workflow
The manual operator entrypoint is agent-workflow from the research-tools repo or container runtime.
agent-workflow queuebuilds a fresh intake packet from recent Gmail/Scholar messages.agent-workflow match "<topic>"scores likely existing articles before you touch any markdown.agent-workflow prepare "<url>" ...scrapes a source, builds a packet, and can create a new stub article when appropriate. The wrapper keeps the workflow explicit and manually triggered. That is intentional. It avoids hiding repo mutations behind an opaque scheduled prompt while still giving a single entrypoint for repeated operator tasks.
Local Prerequisites
To work on the content and site repos locally:
uvfor the Python-based agent tools.python3for tool execution.nodeandnpmfor Hexo site builds.rsyncfor materializing fetched content and generated output without nested Git metadata.
With content and wikip.co checked out as siblings, run ./scripts/build-site from the site repository.
Additional local-only dependencies still exist for the agent tooling:
gmail-readerexpects authenticatedgwsaccess and keeps its SQLite backlog under/var/lib/content-agent/gmail-reader/in the container runtime.image-uploadexpects Cloudinary credentials from exported env vars or a local.env.- the optional backup helper defaults to a local NAS path.
How To Contribute
Content Changes
- Edit or add markdown in
wikip-co/content. - If the article title or filename collides with an existing route, add a targeted
permalink:override instead of changing the global permalink format. - Commit and push to
main.
Site Or Workflow Changes
- Make workflow, fetch, build, or theme changes in the site repo.
- Keep the content repo limited to markdown and its rebuild dispatch.
- Keep site-specific behavior in the site repo.
- Preserve the exact content SHA in dispatch-triggered builds.
Agent Tool Changes
- Keep tool surfaces small and JSON-oriented.
- Prefer additive improvements over brittle orchestration rewrites.
- Document any local-only dependencies in the same change.
- Verify the wrapper commands you changed, not just the underlying library code.
Contribution Checklist
- New articles use explicit
image:when a fallback image would be ambiguous. - Dispatch workflows pass the exact content SHA through to site builds.
- Build inputs are fetched explicitly; no submodule initialization is required.
- Documentation and implementation change together.
Where The Diagram Sources Live
The current architecture spec is committed in wikip-co/Research at docs/diagrams/specs/wikip-content-public-cicd.yaml; its rendered SVG lives under docs/diagrams/rendered/.