Skip to main content

Export Feishu/Lark docs with synced blocks to Markdown and themeable PDF

Project description

lark-doc-exporter

Export Feishu/Lark docs with synced blocks expanded into:

  • Markdown with localized images
  • Themeable locally rendered PDF

The PDF path deliberately avoids the Feishu docs_ai -> export pdf route so the final file does not include the AI disclaimer injected by that server-side path.

Requirements

  • lark-cli configured with a user session
  • Python 3.14
  • A working Chrome/Chromium runtime, or the ability to install one with uvx --from playwright playwright install chromium

If you use uvx / uv tool install, uv can provision the required Python for the tool environment automatically.

Quick Start

uv tool install lark-doc-exporter
lark-doc-exporter doctor

If Chromium is missing, prepare it once:

uvx --from playwright playwright install chromium

Then run an export:

lark-doc-exporter \
  --doc "https://dynamia-ai.feishu.cn/wiki/WEgBwqGYOiBoQikRzjncvJDonAg" \
  --output-dir exports/demo \
  --formats markdown,pdf \
  --theme default

One-off Run

If you do not want a persistent tool install:

uvx lark-doc-exporter \
  --doc "https://dynamia-ai.feishu.cn/wiki/WEgBwqGYOiBoQikRzjncvJDonAg" \
  --output-dir exports/demo \
  --formats markdown,pdf \
  --theme default

Install As A Tool

After installing the released package, companion-skill operations stay the same:

lark-doc-exporter skill install --dry-run
lark-doc-exporter skill install

Auto mode installs the companion skill into every detected supported host:

  • Codex: ~/.agents/skills/lark-doc-exporter
  • Claude Code: ~/.claude/skills/lark-doc-exporter

Use --host codex, --host claude, or --host all to target specific hosts. --dry-run previews the install plan and target directories without writing files. Use --force only when you intentionally want to replace an existing unmanaged target directory.

Chromium Setup

  • doctor reports whether both lark-cli and Chromium are ready.
  • If you already have a browser binary, you can point the exporter at it with LARK_DOC_EXPORTER_CHROMIUM=/path/to/chromium.
  • If LARK_DOC_EXPORTER_CHROMIUM is set to a missing path, the command fails explicitly instead of silently falling back.

Output

  • markdown keeps the localized Markdown file in the output directory.
  • pdf is rendered locally from the localized Markdown via HTML/CSS + Chromium.
  • images/ contains same-run localized image assets used by the Markdown/PDF.

Themes

Built-in themes:

  • default
  • company

You can also layer custom CSS on top:

lark-doc-exporter \
  --doc "https://dynamia-ai.feishu.cn/wiki/WEgBwqGYOiBoQikRzjncvJDonAg" \
  --output-dir exports/company \
  --formats pdf \
  --theme company \
  --css /path/to/your-company-print.css

Development / Unreleased

Use the Git URL or a local checkout only when you intentionally need unreleased code:

uvx --from git+https://github.com/spencercjh/lark-doc-exporter lark-doc-exporter doctor

git clone https://github.com/spencercjh/lark-doc-exporter
cd lark-doc-exporter
uv sync --python 3.14 --group dev
make fmt
make ci

# Optional runtime/environment check (not part of required CI)
uv run lark-doc-exporter doctor

Notes

  • The current implementation still uses a temporary Feishu doc to translate the expanded XML into fresh Markdown.
  • The temporary doc is deleted by default after the Markdown export step. Use --keep-temp-doc only when you need to inspect that intermediate document.
  • Feishu image authcode URLs expire quickly, so image localization happens in the same run as the Markdown export.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lark_doc_exporter-0.1.0.tar.gz (19.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

lark_doc_exporter-0.1.0-py3-none-any.whl (18.1 kB view details)

Uploaded Python 3

File details

Details for the file lark_doc_exporter-0.1.0.tar.gz.

File metadata

  • Download URL: lark_doc_exporter-0.1.0.tar.gz
  • Upload date:
  • Size: 19.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lark_doc_exporter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 75d929a7dec44cd79f05f5782ab2a9cf9e804e9d3ce92a64da6fe4c556a6e1bc
MD5 44c62ecd619c96a2d53240ce504a8def
BLAKE2b-256 f1284a6f16bca2b21275af26e695b3c8c72d464a2053e490a7d4fa24388796b4

See more details on using hashes here.

Provenance

The following attestation bundles were made for lark_doc_exporter-0.1.0.tar.gz:

Publisher: publish-pypi.yml on spencercjh/lark-doc-exporter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file lark_doc_exporter-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for lark_doc_exporter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 513a88dbbf7495705f7ff91e17a2a23c361d3a962b917fca877aa049b64ad0d6
MD5 9c2376ebb3053575a8896583e59df6f3
BLAKE2b-256 3456284a2a006df4683d4b4022ab72234c71f335ef7c632fe55b57691393bebb

See more details on using hashes here.

Provenance

The following attestation bundles were made for lark_doc_exporter-0.1.0-py3-none-any.whl:

Publisher: publish-pypi.yml on spencercjh/lark-doc-exporter

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page