# timqian/chinese-independent-blogs architecture

> Architecture diagram of the GitHub repository timqian/chinese-independent-blogs, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/timqian/chinese-independent-blogs
- Repository: https://github.com/timqian/chinese-independent-blogs

## Overview

This repository is a curated directory of Chinese independent blogs. Readers browse the published list and can use its RSS-oriented discovery links; contributors add entries to the CSV, which is validated and used to render the README and generate an OPML feed. The README documents the submission workflow and community links. Source excerpts show the CSV-based generators and validator; they do not establish how the linked website or automated update workflow is implemented.

Main entry points: [`blogs-original.csv`](https://github.com/timqian/chinese-independent-blogs/blob/master/blogs-original.csv) (Blog records), [`readme_render.py`](https://github.com/timqian/chinese-independent-blogs/blob/master/readme_render.py) (README renderer), [`opml_generator.py`](https://github.com/timqian/chinese-independent-blogs/blob/master/opml_generator.py) (OPML generator), [`README.md`](https://github.com/timqian/chinese-independent-blogs/blob/master/README.md) (Published list)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_catalog["Blog catalog"]
  node_blogs["Blog records<br/>[blogs-original.csv]"]
  node_readme["Published list<br/>[README.md]"]
  node_opml["OPML feed<br/>[feed.opml]"]
end

subgraph group_maintenance["Catalog maintenance"]
  node_validator["CSV validator<br/>[linter.py]"]
  node_readme_renderer["README renderer<br/>[readme_render.py]"]
  node_opml_generator["OPML generator<br/>[opml_generator.py]"]
end

node_reader(("Reader"))
node_contributor(("Contributor"))
node_website["List website"]
node_community["Telegram community"]

node_contributor -->|"submits entries"| node_blogs
node_validator -->|"checks"| node_blogs
node_readme_renderer -->|"reads"| node_blogs
node_readme_renderer -->|"renders"| node_readme
node_opml_generator -->|"reads"| node_blogs
node_opml_generator -->|"writes"| node_opml
node_reader -->|"browses"| node_readme
node_reader -->|"imports"| node_opml
node_reader -->|"visits"| node_website
node_reader -->|"joins"| node_community

click node_blogs "https://github.com/timqian/chinese-independent-blogs/blob/master/blogs-original.csv"
click node_readme "https://github.com/timqian/chinese-independent-blogs/blob/master/README.md"
click node_opml "https://github.com/timqian/chinese-independent-blogs/blob/master/feed.opml"
click node_validator "https://github.com/timqian/chinese-independent-blogs/blob/master/linter.py"
click node_readme_renderer "https://github.com/timqian/chinese-independent-blogs/blob/master/readme_render.py"
click node_opml_generator "https://github.com/timqian/chinese-independent-blogs/blob/master/opml_generator.py"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_blogs,node_readme,node_opml toneBlue
class node_validator,node_readme_renderer,node_opml_generator toneAmber
class node_reader,node_contributor,node_website,node_community toneIndigo
```

## Components

### Blog catalog

- [Blog records](https://github.com/timqian/chinese-independent-blogs/blob/master/blogs-original.csv): `blogs-original.csv`
- [Published list](https://github.com/timqian/chinese-independent-blogs/blob/master/README.md): `README.md`
- [OPML feed](https://github.com/timqian/chinese-independent-blogs/blob/master/feed.opml): `feed.opml`

### Catalog maintenance

- [CSV validator](https://github.com/timqian/chinese-independent-blogs/blob/master/linter.py): `linter.py`
- [README renderer](https://github.com/timqian/chinese-independent-blogs/blob/master/readme_render.py): `readme_render.py`
- [OPML generator](https://github.com/timqian/chinese-independent-blogs/blob/master/opml_generator.py): `opml_generator.py`

### Other components

- **Reader**
- **Contributor**
- **List website**
- **Telegram community**

## Connections

- Contributor → Blog records: submits entries
- CSV validator → Blog records: checks
- README renderer → Blog records: reads
- README renderer → Published list: renders
- OPML generator → Blog records: reads
- OPML generator → OPML feed: writes
- Reader → Published list: browses
- Reader → OPML feed: imports
- Reader → List website: visits
- Reader → Telegram community: joins
