Overview
This project separates shared markdown content from the Hexo sites that render and publish it.
wikip-co/contentis the shared markdown repository.wikip-co/wikip.cois the sample Hexo site repository.anthonyrussano/anthonyrussano.comis a second site repository that receives the same content dispatch events.wikip-co/publicreceives the generated static output forwikip.co.
The key design choice is that content remains the single source of truth while each site keeps its own theme, Hexo configuration, deployment settings, and runtime integrations.
Current Architecture
The diagram source for this image is committed in .github/project-docs/diagrams/specs/shared-content-architecture.yaml.
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
repository_dispatchevents to the site repositories and includes the exactcontent_refandcontent_sha. - The site repo workflow calls the reusable
hexo-deploy.ymlworkflow from the content repo. - The reusable workflow initializes
publicshallowly, initializes the content submodule with full history, resolves the content submodule to the dispatched SHA, restores markdown mtimes from Git history, validates the content tree, builds Hexo, and publishes the generated output.
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 in the content repo.
./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../agent-workflow validateruns the repo validator directly.
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 validation and tool execution.nodeandnpmfor Hexo site builds.git submodule update --init --recursivein site repos sosite/source/_postsandpublicare present.
Additional local-only dependencies still exist for the agent tooling:
gmail-readerexpects authenticatedgwsaccess and keeps its SQLite backlog under.github/agent-tools/gmail-reader/data/.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. - Run
./agent-workflow validate. - 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 the corresponding workflow or theme changes in the site repo.
- Keep reusable build logic in the content repo workflow when the logic is shared.
- Keep site-specific behavior in the site repo.
- When a workflow must reference a reusable workflow, pin it to an immutable content commit rather than a moving branch.
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.
- Validate the wrapper commands you changed, not just the underlying library code.
Contribution Checklist
- Content validates cleanly with actionable warnings only.
- New articles use explicit
image:when a fallback image would be ambiguous. - Dispatch workflows pass the exact content SHA through to site builds.
- Reusable workflow refs are pinned intentionally.
- Documentation and implementation change together.
Where The Diagram Sources Live
The current architecture specs are committed under:
.github/project-docs/diagrams/specs/shared-content-architecture.yaml.github/project-docs/diagrams/specs/contribution-and-deploy-flow.yaml.github/project-docs/diagrams/specs/manual-agent-flow.yaml
The rendered SVGs are published in the gist linked above so they can be referenced directly from documentation without depending on local build artifacts.