Ws-Mark-Flow AI Converter
Convert files from various sources (SharePoint, S3, Azure Blob, etc.) to Markdown and upload to destinations (Google Drive, SharePoint, etc.).
Features
- Multi-source support: SharePoint, S3, Azure Blob Storage (extensible)
- Multi-destination support: Google Drive, SharePoint, S3 (extensible)
- File conversion: PDF, DOCX, PPTX, XLSX, CSV, images, and more → Markdown
- Incremental conversion: Only converts files not already in destination
- Job persistence: MongoDB-backed job storage for resumable pipelines
- REST API: FastAPI-based API for job management
- Progress tracking: Real-time conversion progress and statistics
Architecture
┌─────────────┐ ┌──────────────┐ ┌───────────────┐
│ Source │────▶│ Converter │────▶│ Destination │
│ (SharePoint)│ │ (MarkItDown) │ │(Google Drive) │
└─────────────┘ └──────────────┘ └───────────────┘
│
┌──────▼──────┐
│ MongoDB │
│ (Job Store) │
└─────────────┘
Installation
# Install dependencies
uv pip install -r requirements.txt
# Copy environment file
cp .env.example .env
# Edit .env with your MongoDB URI
# Run with auto-reload
uvicorn src.main:app --reload --port 8000
API Documentation
- API docs: http://localhost:8000/docs
- Redocly UI: http://localhost:8000/redoc
- OpenAPI spec: http://localhost:8000/openapi.json
Supported Integrations
Sources
- SharePoint (
sharepoint): Microsoft Graph API - More coming: S3, Azure Blob, Local filesystem
Destinations
- Google Drive (
google_drive): Google Drive API v3 - More coming: SharePoint, S3, Azure Blob
Supported File Types
Converted using Microsoft MarkItDown, Docling or LLM-based analysis for complex PDFs & images.
- Documents: PDF, DOCX, DOC, RTF, TXT
- Presentations: PPTX, PPT
- Spreadsheets: XLSX, XLS, CSV
- Web: HTML, XML, JSON, YAML
- Images: PNG, JPG, GIF, BMP, TIFF (OCR)
Configuration
Main Environment Variables
| Variable | Default | Description |
|---|---|---|
AUTH_USERNAME |
admin |
Basic auth username |
AUTH_PASSWORD |
yourpassword |
Basic auth password |
MONGODB_URI |
mongodb://localhost:27017 |
MongoDB connection string |
MONGODB_DATABASE |
converter |
Database name |
TEMP_DIR |
./.data/converter |
Temporary file storage |
Development
🔖 requirements
- install uv venv package management
py -m pip install --upgrade uv
# create venv
uv venv
# activate venv
#win: .venv/Scripts/activate
#linux: source .venv/bin/activate
- project requirements update
uv pip install --upgrade -r requirements.txt --prerelease
- build tools
uv pip install --upgrade setuptools build twine
🪛 build
- clean dist and build package
if (Test-Path ./dist) {rm ./dist -r -force}; `
python -m build && twine check dist/*
- linux/mac
[ -d ./dist ] && rm -rf ./dist
python -m build && twine check dist/*
📦 test / 🧪 debugger
Install the package in editable project location
uv pip install -U -e .
uv pip show ws-mark-flow
code quality tools
# .\src\robot
uv pip install -U scanreq prospector[with_everything]
## unused requirements
scanreq -r requirements.txt -p ./src
## style/linting
prospector ./src -t pylint -t pydocstyle
## code quality/complexity
prospector ./src -t vulture -t mccabe -t mypy
## security
prospector ./src -t dodgy -t bandit
## package
prospector ./src -t pyroma
✈️ publish
-
twine upload --verbose dist/*
Docker
- Build the Docker image (override version at build time if needed)
docker build -t ws-mark-flow ./app
# Copy environment file
cp .env.example ./app/.env
# Edit .env
docker run -p 80:80 --env-file ./app/.env ws-mark-flow
# use host.docker.internal for MongoDB connection from container to host
docker run --add-host=host.docker.internal:host-gateway -p 80:80 --env-file ./app/.env ws-mark-flow
License
MIT
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
ws_mark_flow-0.0.15.tar.gz
(99.7 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
ws_mark_flow-0.0.15-py3-none-any.whl
(116.5 kB
view details)
File details
Details for the file ws_mark_flow-0.0.15.tar.gz.
File metadata
- Download URL: ws_mark_flow-0.0.15.tar.gz
- Upload date:
- Size: 99.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7a0fc4a59fcf123dfe14413760d44ca7dd869bae4e78adc1d179306b0532746
|
|
| MD5 |
f6690ef1d3a597dfe42c49cf1e985325
|
|
| BLAKE2b-256 |
0eed5811da3e6f1f26c7ffb2af8031ac5142076ca9d9c56eac4148577c5e86fe
|
File details
Details for the file ws_mark_flow-0.0.15-py3-none-any.whl.
File metadata
- Download URL: ws_mark_flow-0.0.15-py3-none-any.whl
- Upload date:
- Size: 116.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c0f93634b21ff557d27d331088bdf97ba76e4dc2a3bbd1de9ee8a6ecf1bc3a7
|
|
| MD5 |
53f2383166b1658028c6d0312d546520
|
|
| BLAKE2b-256 |
1cd98eca204f2aeca672298ab50ca82c86fd07b3d0bdae0851f0faa3ad2fe7a1
|