Import Instagram archive to a Bluesky account
9
fork

Configure Feed

Select the types of activity you want to include in your feed.

I made some change to manage the ARCHIVE_FOLDER as absolute path, to retro compatibility and because is very common due its size is in another drive/folders.

+11 -10
+1 -1
README.md
··· 50 50 # App Password from Bluesky settings 51 51 BLUESKY_PASSWORD=your-password 52 52 # Path to your unzipped Instagram archive 53 - ARCHIVE_FOLDER=./transfer/instagram-username-2025-XX-XX-hash 53 + ARCHIVE_FOLDER=c:/download/instagram-username-2025-XX-XX-hash 54 54 55 55 # Optional settings 56 56 SIMULATE=1 # Set to 1 to simulate import without posting
+10 -9
src/app.ts
··· 1 - import * as dotenv from "dotenv"; 2 - import FS from "fs"; 3 - import * as process from "process"; 4 - import { logger } from "./logger"; 5 - import { BlueskyClient } from "./bluesky"; 6 - import { processPost } from "./media"; 7 - import { prepareVideoUpload, createVideoEmbed } from "./video"; 8 - import path from "path"; 1 + import * as dotenv from 'dotenv'; 2 + import FS from 'fs'; 3 + import path from 'path'; 4 + import * as process from 'process'; 5 + 6 + import { BlueskyClient } from './bluesky'; 7 + import { logger } from './logger'; 8 + import { processPost } from './media'; 9 + import { createVideoEmbed, prepareVideoUpload } from './video'; 9 10 10 11 dotenv.config(); 11 12 ··· 51 52 52 53 if (TEST_VIDEO_MODE) return path.join(rootDir, "transfer/test_videos"); 53 54 if (TEST_IMAGE_MODE) return path.join(rootDir, "transfer/test_images"); 54 - return path.join(rootDir, process.env.ARCHIVE_FOLDER!); 55 + return process.env.ARCHIVE_FOLDER!; 55 56 } 56 57 57 58 async function processVideoPost(