

Also from Kynth Studios


Also from Kynth Studios


Also from Kynth Studios
1# CLAUDE.md23This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.45## Project Overview67MultiPost is a browser extension that enables one-click content publishing to multiple social media platforms. Built with Plasmo framework, it supports 30+ platforms including Zhihu, Weibo, Xiaohongshu, Bilibili, X, Instagram, and more.89## Development Commands1011```bash12pnpm dev # Start development server with hot reload13pnpm build # Build and package extension for production14pnpm lint # Run ESLint15pnpm lint:fix # Auto-fix ESLint issues16```1718**Note:** Do not run `pnpm build` for testing during development. Use `pnpm dev` instead.1920## Architecture2122### Content Types2324The extension handles four content types, each with platform-specific implementations:2526- **Dynamic** (`src/sync/dynamic/`): Short-form posts (text, images)27- **Article** (`src/sync/article/`): Long-form articles with HTML/Markdown28- **Video** (`src/sync/video/`): Video uploads with metadata29- **Podcast** (`src/sync/podcast/`): Audio content3031### Core Data Structures (`src/sync/common.ts`)3233- `SyncData`: Main payload containing platforms list, content data, and auto-publish flag34- `PlatformInfo`: Platform configuration including inject URL and function35- `DynamicData`, `ArticleData`, `VideoData`, `PodcastData`: Content-specific interfaces3637### Platform Integration Pattern3839Each platform has an `injectFunction` that:401. Opens the platform's publishing page (`injectUrl`)412. Uses DOM manipulation to fill in content423. Handles file uploads and form submissions4344Platform maps: `DynamicInfoMap`, `ArticleInfoMap`, `VideoInfoMap`, `PodcastInfoMap`4546### Extension Components4748- **Background** (`src/background/`): Service worker handling message routing, tab management, API services49- **Popup** (`src/popup/`): Extension popup UI50- **Sidepanel** (`src/sidepanel/`): Side panel interface51- **Content Scripts** (`src/contents/`): Page helpers and scrapers52- **Tabs** (`src/tabs/`): Standalone pages (publish, refresh-accounts, trust-domain)5354### Message Flow5556Background script (`src/background/index.ts`) routes messages:57- `MULTIPOST_EXTENSION_PUBLISH`: Opens publish popup58- `MULTIPOST_EXTENSION_PUBLISH_NOW`: Creates tabs and injects scripts59- `MULTIPOST_EXTENSION_PLATFORMS`: Returns available platforms60- `MULTIPOST_EXTENSION_GET_ACCOUNT_INFOS`: Returns logged-in account info6162## Tech Stack6364- **Framework**: Plasmo 0.90.5 (Manifest V3)65- **UI**: HeroUI + Tailwind CSS66- **Icons**: lucide-react (prefer over @iconify/react)67- **Storage**: @plasmohq/storage6869## Code Conventions7071### TypeScript72- Use interfaces over types73- Use maps instead of enums74- Use functional components with TypeScript interfaces75- Naming: PascalCase for components/interfaces, camelCase for functions/variables, SNAKE_CASE for constants7677### Styling78- Mobile-first responsive design79- Use `bg-background` and `text-foreground` for theme support80- Use semantic color variables (e.g., `bg-primary-600` not `bg-blue-600`)81- Use `gap` for spacing instead of margins8283### i18n84- Store translations in `/locales/[locale]/messages.json`85- Use `chrome.i18n.getMessage('key')` for all UI text86- Default locale: `zh_CN`87- Console.log statements do not need i18n8889## Adding a New Platform90911. Create platform handler in appropriate directory (`src/sync/dynamic/`, `src/sync/article/`, etc.)922. Export inject function that manipulates the platform's DOM933. Add entry to corresponding InfoMap (e.g., `DynamicInfoMap` in `src/sync/dynamic.ts`)944. Add account getter in `src/sync/account/` if platform requires login detection955. Add i18n keys for platform name96
One repository carrying more than one format is the comparison this product exists for: does anyone actually write different content in each file, or is one a copy of the other?
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| leaperone/MultiPost-Extension.cursor/rules/ai.mdc · 3.0k | Cursor rules | no sections | 16/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/chrome-extension.mdc · 3.0k | Cursor rules | docs | 48/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/comment.mdc · 3.0k | Cursor rules | lint-formatstyletypesdocs | 66/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/i18n.mdc · 3.0k | Cursor rules | no sections | 36/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/typescript.mdc · 3.0k | Cursor rules | buildstyle | 52/100 | today | |
| leaperone/MultiPost-Extension.cursor/rules/ui.mdc · 3.0k | Cursor rules | ui | 36/100 | today |
Same format, overlapping stack, ranked by quality.
| Repository | Format | Stack | Covers | Score | Changed |
|---|---|---|---|---|---|
| bagisto/bagistoCLAUDE.md · 28k | CLAUDE.md | setupbuildteststyle+5 | 100/100 | 7 days ago | |
| Adit-Jain-srm/NightmareNetCLAUDE.md · 46 | CLAUDE.md | buildtestlint-formatstyle+6 | 100/100 | 14 days ago | |
| nimbalyst/nimbalystpackages/android/CLAUDE.md · 1.5k | CLAUDE.md | setupbuildstylearch+2 | 100/100 | 14 days ago | |
| dotCMS/corecore-web/CLAUDE.md · 949 | CLAUDE.md | teststylearchtesting-strategy+3 | 100/100 | 14 days ago | |
| tphakala/birdnet-goCLAUDE.md · 1.6k | CLAUDE.md | buildtestlint-formatstyle+8 | 100/100 | today | |
| microsoft/playwrightCLAUDE.md · 95k | CLAUDE.md | buildtestlint-formatstyle+7 | 100/100 | 7 days ago | |
| tyrchen/geektime-bootcamp-aiw7/genslides/backend/CLAUDE.md · 230 | CLAUDE.md | testlint-formatstylearch+6 | 100/100 | 9 days ago | |
| dotCMS/coreCLAUDE.md · 949 | CLAUDE.md | setupbuildteststyle+7 | 99/100 | today |
A badge carrying the measured quality of the strongest agent config file in this repository, out of 100. It reads from this index every time somebody loads your page, so it changes when the measurement changes and there is nothing to keep up to date. Free, no account, and the value is not something you or we can set by hand.
[](https://rulestack.kynth.studio/configs/leaperone-multipost-extension-claude)Would rather not hotlink us? Every badge is also served in shields.io’s endpoint schema, so shields renders the image and your readers never talk to our domain:
Published by Toolproof, the masthead over this index and eight others. The method behind the number is at toolproof.kynth.studio/methodology, and the whole thing is readable as JSON with no key at /api.