A viewer and search engine for your Bluesky and Mastodon worlds. This tool provides two core functionalities: a unified interface to view, analyze, and export your own social media history, and a unique search engine to discover content across the networks filtered by your social graph.
This application is divided into two main tools:
This is the original functionality for managing your own content history.
- Multi-Platform Feed: Fetch your posts, replies, and saved content from Bluesky (Posts, Likes) and Mastodon (Posts, Favorites, Bookmarks) into a single view.
- Synoptic Crosspost View: Automatically detects and displays similar posts from both platforms side-by-side.
- Comprehensive Loading: Fetch entire user feeds with "Load More" and "Load All" options to get a complete history.
- Advanced Filtering & Sorting: Sift through posts with full-text search, hide replies/reposts, filter by media, set a minimum like count, and sort by newest, oldest, or engagement.
- Analytics Dashboard: Get insights into your posting habits, including activity by hour and your top-performing posts.
- Data Export: Export your current filtered view to multiple formats, including JSON, CSV, HTML, Markdown, or a plain text list of URLs.
A discovery tool designed to find relevant content from the accounts you trust.
- Follow-Filtered Search: Search for phrases across Bluesky and Mastodon, with results limited to posts from accounts you explicitly follow.
- Personalized "Best Match" Ranking: Builds a private "affinity index" based on your recent like/favorite history to rank search results according to your personal preferences.
- Real-time Progress: Uses Server-Sent Events (SSE) to provide live feedback during long-running operations like building your ranker.
- Browser-Based Caching: Securely caches your affinity index in your browser's
localStoragefor fast, repeated searches, ensuring your data stays on your machine.
- Framework: Next.js (App Router)
- Language: TypeScript
- Styling: Tailwind CSS
- Platform APIs:
- Bluesky: @atproto/api
- Mastodon: masto
- Real-time Updates: Server-Sent Events (SSE)
- Session Management: iron-session
- Caching: Browser
localStoragefor client-side affinity index. - Deployment: Vercel
Follow these instructions to get a copy of the project up and running on your local machine.
-
Clone the repository:
git clone https://github.com/CrispStrobe/allmyposts.git cd allmyposts -
Install dependencies:
npm install
-
Set up your environment variables: Create a new file named
.env.localin the root of the project and add the following variables.# .env.local # Required for Bluesky API access. Higher rate limits. BLUESKY_HANDLE="your-handle.bsky.social" BLUESKY_APP_PASSWORD="xxxx-xxxx-xxxx-xxxx" # Required for encrypting session cookies (used for Mastodon login). # Generate a strong, random 32+ character string for this. SESSION_PASSWORD="your_super_secret_and_long_session_password_here"
Note: A Bluesky App Password can be created in your Bluesky Settings under "App passwords". For Mastodon, authentication is handled via OAuth2 and doesn't require storing credentials.
-
Run the development server:
npm run dev
Open http://localhost:3000 with your browser to see the result.
This application is optimized for deployment on Vercel.
- Push to GitHub: Ensure your repository is up-to-date on GitHub.
- Import to Vercel: From your Vercel dashboard, select "Add New... > Project" and import your GitHub repository.
- Add Environment Variables: In the Vercel project settings, navigate to Settings > Environment Variables and add all three of the variables from your
.env.localfile:BLUESKY_HANDLEBLUESKY_APP_PASSWORDSESSION_PASSWORD
- Deploy: Click the "Deploy" button. Vercel will build and deploy your application.
This project is licensed under the Apache 2.0 License. See the LICENSE file for details.