One-click downloader for images and videos from any webpage, with enhanced support for WeChat Official Account articles.
- 微信公众号文章(WeChat Official Accounts)
 - yaolifeng.com
 - 掘金(Juejin)
 - 知乎(Zhihu)
 - InfoQ
 - 简书(Jianshu)
 - 阿里云(Aliyun)
 - 腾讯云(Tencent Cloud)
 - CSDN
 - 博客园(Cnblogs)
 - 51CTO
 - 新浪微博(Sina Weibo)
 - 豆瓣(Douban)
 - 哔哩哔哩(Bilibili)
 - 微博(Weibo)
 - 思否(SegmentFault)
 - 今日头条(Toutiao)
 - 其他 Web 网页(Other Web Pages)
 
- Universal Support: Works on any webpage to extract images and videos
 - Enhanced WeChat Support: Special features for WeChat Official Account articles
- Article details view (title, author, description)
 - Optimized content extraction from article body
 - Smart filtering of article images (excludes profile images, QR codes, etc.)
 
 - Image Preview: Double-click any image to preview in new tab
 - Flexible Downloads:
- Select and download individual items or all at once
 - Single image downloads directly
 - Multiple items automatically packaged as ZIP archive
 
 - Media Support: Both images and videos
 - Bilingual Interface: English and Chinese (中文/English)
 - Side Panel UI: Easy access without disrupting your browsing
 - Responsive Design: Optimized for different screen sizes
 
- 
Prerequisites:
- Node.js 16+ and pnpm installed
 - Git
 
 - 
Clone the repository:
git clone https://github.com/yourusername/pickpic.git cd pickpic - 
Install dependencies:
pnpm install
 - 
Start development server:
pnpm dev
 - 
Load extension in Chrome:
- Open 
chrome://extensions/ - Enable "Developer mode" (toggle in top right)
 - Click "Load unpacked"
 - Select 
build/chrome-mv3-devdirectory 
 - Open 
 
To create a production build for distribution:
pnpm buildThe production bundle will be created in the build/chrome-mv3-prod directory.
To package the extension into a ZIP file:
pnpm package- Navigate to any webpage (works on all websites)
 - Open the extension: Click the PickPic icon in your browser toolbar
 - View extracted content: All images and videos from the page are displayed
 - For WeChat articles: Click the "Detail" button (ℹ️) to view article metadata
 - Select items: Click on images/videos to select them (multi-select supported)
 - Preview images: Double-click any image to open it in a new tab
 - Download:
- Download Selected: Single item downloads directly, multiple items as ZIP
 - Download All: Always creates a ZIP archive with all content
 
 - Refresh: Click the refresh button to re-scan the page for new content
 
This extension requires the following permissions:
activeTab: Access the current webpage to extract images and videosstorage: Save your preferences (language, settings)downloads: Download images, videos, and ZIP files to your computersidePanel: Display the extension interface in the browser side panel<all_urls>: Work on any website you visit (we only extract media when you click the extension icon)
Privacy: This extension does not collect, store, or transmit any personal data. All processing happens locally in your browser. See our Privacy Policy for details.
- Framework: Plasmo - The browser extension framework
 - UI Library: React 18
 - Language: TypeScript
 - Styling: Tailwind CSS
 - State Management: Zustand
 - Internationalization: i18next
 - Archive Creation: JSZip
 - Build Tool: pnpm
 
pnpm dev: Start development server with hot reloadpnpm build: Create production buildpnpm package: Package extension as ZIP for distributionpnpm clean: Clean build artifacts
wechat-pic/
├── background.ts          # Background service worker
├── sidepanel.tsx         # Main side panel UI
├── contents/             # Content scripts
│   └── extractor.ts      # Media extraction logic
├── components/           # React components
│   ├── sidepanel/       # Side panel components
│   └── settings/        # Settings page components
├── hooks/               # Custom React hooks
├── lib/                 # Utility functions
├── store/              # Zustand stores
├── types/              # TypeScript type definitions
├── locales/            # i18n translation files
└── styles/             # Global styles
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
 - Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
 
- GitHub: @yaolifeng0629
 - Email: [email protected]
 
See PRIVACY.md for details.
