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.
