Portfolio Necromancer - Integrations Guide
This document provides detailed information about all the integrations available in Portfolio Necromancer, including setup instructions, requirements, and troubleshooting tips.
Overview
Portfolio Necromancer can integrate with multiple platforms to automatically discover and import your projects. All integrations are optional - you can start with manual projects or the demo, then add integrations as needed.
Table of Contents
- Quick Reference
- Google APIs
- Slack
- Figma
- OpenAI
- Local Screenshots
- Configuration
- Troubleshooting
Quick Reference
| Integration |
Purpose |
Required For |
Setup Time |
API Cost |
| OpenAI |
AI categorization & summaries |
Best experience |
5 mins |
Pay per use |
| Google APIs |
Gmail, Drive, Docs |
Email/file scraping |
15 mins |
Free tier |
| Slack |
Message/file discovery |
Slack projects |
10 mins |
Free |
| Figma |
Design file access |
Design projects |
5 mins |
Free |
| Screenshots |
Local file scanning |
Local images |
1 min |
Free |
Google APIs
What It Enables
- Gmail Integration: Scrape project-related emails and attachments
- Google Drive: Access files, presentations, and documents
- Google Docs: Import document content and metadata
Prerequisites
- A Google account
- Access to Google Cloud Console
- 15 minutes setup time
Setup Instructions
Step 1: Create a Google Cloud Project
- Go to Google Cloud Console
- Click “Create Project” or select existing project
- Name your project (e.g., “Portfolio Necromancer”)
Step 2: Enable Required APIs
- Navigate to “APIs & Services” → “Library”
- Enable the following APIs:
- Gmail API (for email scraping)
- Google Drive API (for file access)
- Google Docs API (for document access)
Step 3: Create Credentials
- Go to “APIs & Services” → “Credentials”
- Click “Create Credentials” → “OAuth client ID”
- Configure consent screen if prompted:
- User Type: External (for personal use)
- Add your email as test user
- Application type: “Desktop app”
- Download the credentials JSON file
- Rename it to
credentials.json
- Place it in your Portfolio Necromancer directory
In your config.yaml:
google:
credentials_file: "credentials.json"
scraping:
email:
enabled: true
max_messages: 100
date_range_days: 365
keywords:
- "project"
- "design"
- "deliverable"
- "final"
- "attachment"
drive:
enabled: true
max_files: 50
file_types:
- "presentation"
- "document"
- "pdf"
- "image"
Step 5: First Run Authentication
- Run Portfolio Necromancer
- A browser window will open for authorization
- Sign in with your Google account
- Grant requested permissions
- A
token.json file will be created automatically
API Quotas & Limits
- Gmail API: 1 billion quota units/day (free tier)
- Drive API: 1 billion queries/day (free tier)
- Docs API: 300 read requests/minute (free tier)
These limits are sufficient for typical use cases.
Troubleshooting
Issue: “Invalid credentials” error
- Solution: Re-download credentials.json from Google Cloud Console
- Ensure the file is named exactly
credentials.json
Issue: “Access denied” during OAuth
- Solution: Add your email as a test user in OAuth consent screen
Issue: “Quota exceeded”
- Solution: Reduce
max_messages and max_files in config
- Wait 24 hours for quota reset
Slack
What It Enables
- Search for project-related conversations
- Extract shared files and attachments
- Discover project URLs and links
- Preserve thread context
Prerequisites
- Slack workspace access
- Permission to create apps
- 10 minutes setup time
Setup Instructions
Step 1: Create a Slack App
- Go to Slack API
- Click “Create New App” → “From scratch”
- Name: “Portfolio Necromancer”
- Select your workspace
- Navigate to “OAuth & Permissions”
- Under “Scopes” → “Bot Token Scopes”, add:
channels:history - Read public channel messages
channels:read - View basic channel info
files:read - View files shared in channels
search:read - Search workspace content
users:read - View people in workspace
Step 3: Install App to Workspace
- Click “Install to Workspace”
- Review and authorize permissions
- Copy the “Bot User OAuth Token” (starts with
xoxb-)
In your config.yaml:
slack:
token: "xoxb-your-slack-bot-token-here"
scraping:
slack:
enabled: true
max_messages: 100
search_keywords:
- "project"
- "shipped"
- "launched"
- "design"
- "prototype"
channels:
- "general"
- "projects"
- "design"
# Or leave empty to search all channels
Step 5: Invite Bot to Channels
For the bot to access channel history:
/invite @Portfolio Necromancer
Run this in each channel you want to scrape.
API Rate Limits
- Tier 2: 20+ requests per minute
- Search: 20 requests per minute
- Sufficient for typical portfolio generation
Troubleshooting
Issue: “not_in_channel” error
- Solution: Invite the bot to the channel with
/invite @Portfolio Necromancer
Issue: “missing_scope” error
- Solution: Add required scopes in OAuth & Permissions, reinstall app
Issue: No messages found
- Solution: Verify bot has access to channels
- Check search keywords match your actual conversations
Figma
What It Enables
- Access design files and projects
- Generate thumbnails from designs
- Extract file metadata and descriptions
- Import design work automatically
Prerequisites
- Figma account (free or paid)
- 5 minutes setup time
Setup Instructions
Step 1: Generate Personal Access Token
- Log in to Figma
- Go to Account Settings → Personal Access Tokens
- Click “Create new token”
- Name: “Portfolio Necromancer”
- Copy the token (starts with
figd_)
In your config.yaml:
figma:
access_token: "figd_your-figma-access-token-here"
scraping:
figma:
enabled: true
max_projects: 20
include_drafts: false
thumbnail_size: "medium" # small, medium, large
Step 3: Usage
Portfolio Necromancer will automatically:
- Scan your Figma teams and projects
- Generate thumbnails for each design
- Extract project names and descriptions
- Categorize as “Design” projects
API Rate Limits
- Rate limit: 600 requests per minute
- More than sufficient for portfolio generation
Troubleshooting
Issue: “Invalid token” error
- Solution: Regenerate token in Figma settings
- Ensure token is copied correctly (no extra spaces)
Issue: “No projects found”
- Solution: Ensure you have design files in your Figma account
- Check that files aren’t in trash
Issue: Thumbnails not generating
- Solution: Verify files have at least one frame
- Try different
thumbnail_size setting
OpenAI
What It Enables
- AI Categorization: Intelligently sort projects into categories
- Summary Generation: Create professional project descriptions
- Context Understanding: Better project interpretation
Prerequisites
- OpenAI account
- Credit card on file (usage-based pricing)
- 5 minutes setup time
Setup Instructions
Step 1: Get API Key
- Go to OpenAI Platform
- Sign up or log in
- Navigate to API Keys
- Click “Create new secret key”
- Name: “Portfolio Necromancer”
- Copy the key (starts with
sk-)
In your config.yaml:
ai:
api_key: "sk-your-openai-api-key-here"
model: "gpt-3.5-turbo" # Cost-effective option
# Or use "gpt-4" for better results (more expensive)
categorization:
enabled: true
confidence_threshold: 0.7
summarization:
enabled: true
tone: "professional" # professional, casual, enthusiastic
length: "medium" # short, medium, long
Step 3: Usage
Portfolio Necromancer will use OpenAI for:
- Categorizing projects based on content
- Generating impressive summaries
- Creating project descriptions
Pricing (as of 2024)
- GPT-3.5-Turbo: ~$0.002 per 1K tokens
- Typical portfolio (20 projects): ~$0.10-0.50
- GPT-4: More expensive but higher quality
Fallback Behavior
If OpenAI is unavailable or disabled:
- Rule-based categorization kicks in
- Template-based summaries are used
- Portfolio generation still works
Troubleshooting
Issue: “Insufficient credits” error
- Solution: Add credits to your OpenAI account
- Check billing settings
Issue: “Rate limit exceeded”
- Solution: Wait a few minutes and retry
- Consider upgrading OpenAI tier
Issue: Poor categorization
- Solution: Lower
confidence_threshold in config
- Provide better project descriptions/context
Local Screenshots
What It Enables
- Scan local folders for project images
- Automatic image metadata extraction
- Include screenshots in portfolio
Prerequisites
- Local folder with images
- No API keys needed
- 1 minute setup time
Setup Instructions
In your config.yaml:
scraping:
screenshots:
enabled: true
folder_path: "./screenshots" # Or absolute path
# Supports multiple folders:
# folder_paths:
# - "/Users/you/Desktop/Projects"
# - "/Users/you/Pictures/Work"
file_extensions:
- ".png"
- ".jpg"
- ".jpeg"
- ".gif"
recursive: true # Scan subdirectories
min_width: 400 # Minimum image width
min_height: 300 # Minimum image height
- PNG, JPEG, JPG, GIF
- Automatically extracts dimensions
- Filename-based categorization
Troubleshooting
Issue: No images found
- Solution: Check folder path is correct
- Verify folder contains supported image formats
Issue: Too many images
- Solution: Increase
min_width and min_height
- Use more specific folder paths
Configuration
Complete Example Config
See config.example.yaml for a fully annotated configuration file.
Environment Variables
You can also use environment variables instead of config file:
export OPENAI_API_KEY="sk-..."
export GOOGLE_CREDENTIALS="path/to/credentials.json"
export SLACK_TOKEN="xoxb-..."
export FIGMA_TOKEN="figd_..."
Security Best Practices
- Never commit
config.yaml to git (already in .gitignore)
- Use environment variables for production
- Rotate API keys regularly
- Use separate keys for dev/prod
- Limit API permissions to minimum required
Troubleshooting
General Issues
Portfolio generation fails
- Check config.yaml syntax (valid YAML)
- Verify all API keys are valid
- Run with verbose mode:
portfolio-necromancer --verbose
- Check logs in
portfolio-necromancer.log
No projects found
- Verify at least one data source is enabled
- Check search keywords match your content
- Try running the demo first:
python demo.py
- Test with manual projects
Slow generation
- Reduce
max_messages, max_files limits
- Disable unused data sources
- Use local caching (enabled by default)
Getting Help
Integration Comparison
Which Integrations Do You Need?
For Developers:
- ✅ Google (Gmail for project emails)
- ✅ Slack (team conversations)
- ⚠️ Figma (if you do design work)
- ✅ OpenAI (for summaries)
For Designers:
- ✅ Figma (your design files)
- ✅ Google Drive (mockups, exports)
- ⚠️ Slack (if applicable)
- ✅ OpenAI (for descriptions)
For Writers:
- ✅ Google Docs (articles, drafts)
- ✅ Gmail (published links)
- ⚠️ Slack (if applicable)
- ✅ OpenAI (for summaries)
For Everyone:
- ✅ Screenshots (always useful)
- ✅ OpenAI (best experience)
Starting Simple
Recommended progression:
- Start: Run demo (
python demo.py)
- Basic: Add manual projects
- Automated: Add OpenAI for AI features
- Full: Add relevant data sources one at a time
Future Integrations
Potential integrations in development:
- GitHub: Automatically import code repositories
- Behance/Dribbble: Import design portfolios
- Medium/Substack: Import written articles
- LinkedIn: Import experience/projects
- Twitter: Import threads showcasing work
- Notion: Import project databases
Vote for integrations or contribute at GitHub Issues.
Summary
Portfolio Necromancer supports 5 main integrations, all optional:
- Google APIs - Email, Drive, Docs (most comprehensive)
- Slack - Team conversations and files
- Figma - Design files and mockups
- OpenAI - AI categorization and summaries (highly recommended)
- Local Screenshots - Scan image folders (easiest)
Start with what’s easiest for you, then expand as needed. The tool works perfectly fine with just manual projects or the demo!