Incremental audio production with duration mismatch handling, adaptive stem extension, and pre-mix alignment verification
日本語の概要は準備中です。原文の説明を表示しています。
Extract text from DOCX files using shell or Python zipfile, with environment-aware fallback
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Extract text from Microsoft Word (.docx) files using either shell commands or Python's zipfile module, automatically selecting the most reliable method for your environment.
python-docx but has standard library accessunzip, sed) may be unavailable or restrictedDOCX files are ZIP archives containing XML files. This skill provides two extraction methods:
Method A (Shell): unzip -p + sed for tag stripping
Method B (Python): zipfile module for archive access + string parsing
Before extraction, detect which method will work:
# Quick shell method test
if unzip -v >/dev/null 2>&1; then
echo "Shell method available"
else
echo "Shell method unavailable, try Python"
fi
# Quick Python method test
python3 -c "import zipfile; print('Python method available')" 2>/dev/null
Use when unzip and sed are available and the environment allows shell operations.
1. Verify the DOCX file exists
ls -la document.docx
2. Extract raw XML content
unzip -p document.docx word/document.xml
3. Strip XML tags from content
unzip -p document.docx word/document.xml | sed -e 's/<[^>]*>//g'
4. Clean up whitespace (optional)
unzip -p document.docx word/document.xml | \
sed -e 's/<[^>]*>//g' | \
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | \
sed -e '/^$/d'
5. Save extracted text to file
unzip -p document.docx word/document.xml | \
sed -e 's/<[^>]*>//g' > output.txt
parse_docx_shell() {
local file="$1"
if [ ! -f "$file" ]; then
echo "Error: File not found: $file" >&2
return 1
fi
if ! command -v unzip >/dev/null 2>&1; then
echo "Error: unzip not available" >&2
return 1
fi
unzip -p "$file" word/document.xml 2>/dev/null | \
sed -e 's/<[^>]*>//g' | \
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | \
sed -e '/^$/d'
}
# Usage: parse_docx_shell document.docx
Use when shell method fails or Python environment is more reliable than shell.
1. Verify the DOCX file exists
ls -la document.docx
2. Run Python extraction via run_shell
run_shell 'python3 -c "
import zipfile
import re
with zipfile.ZipFile(\"document.docx\", \"r\") as z:
content = z.read(\"word/document.xml\").decode(\"utf-8\")
text = re.sub(r\"<[^>]*>\", \"\", content)
lines = [l.strip() for l in text.splitlines() if l.strip()]
for line in lines:
print(line)
"'
3. Save to file by redirecting output
run_shell 'python3 -c "
import zipfile
import re
with zipfile.ZipFile(\"document.docx\", \"r\") as z:
content = z.read(\"word/document.xml\").decode(\"utf-8\")
text = re.sub(r\"<[^>]*>\", \"\", content)
lines = [l.strip() for l in text.splitlines() if l.strip()]
with open(\"output.txt\", \"w\") as f:
for line in lines:
f.write(line + \"\\n\")
"'
parse_docx_python() {
local file="$1"
local output="$2"
if [ ! -f "$file" ]; then
echo "Error: File not found: $file" >&2
return 1
fi
run_shell "python3 -c \"
import zipfile
import re
import sys
try:
with zipfile.ZipFile(\\'$file\\', \\'r\\') as z:
content = z.read(\\'word/document.xml\\').decode(\\'utf-8\\')
text = re.sub(r\\'<[^>]*>\\', \\'\\', content)
lines = [l.strip() for l in text.splitlines() if l.strip()]
for line in lines:
print(line)
except Exception as e:
print(f\\'Error: {e}\\', file=sys.stderr)
sys.exit(1)
\""
}
# Usage: parse_docx_python document.docx
# Or to file: parse_docx_python document.docx > output.txt
Automatically tries shell first, falls back to Python if shell fails:
parse_docx() {
local file="$1"
if [ ! -f "$file" ]; then
echo "Error: File not found: $file" >&2
return 1
fi
# Try shell method first
if command -v unzip >/dev/null 2>&1; then
result=$(unzip -p "$file" word/document.xml 2>/dev/null | \
sed -e 's/<[^>]*>//g' | \
sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//' | \
sed -e '/^$/d')
if [ -n "$result" ]; then
echo "$result"
return 0
fi
fi
# Fallback to Python method
python3 -c "
import zipfile
import re
import sys
try:
with zipfile.ZipFile('$file', 'r') as z:
content = z.read('word/document.xml').decode('utf-8')
text = re.sub(r'<[^>]*>', '', content)
lines = [l.strip() for l in text.splitlines() if l.strip()]
for line in lines:
print(line)
except Exception as e:
print(f'Error: {e}', file=sys.stderr)
sys.exit(1)
"
}
# Usage: parse_docx document.docx
For complex parsing needs or debugging:
Shell approach:
tmpdir=$(mktemp -d)
unzip document.docx -d "$tmpdir"
cat "$tmpdir/word/document.xml" | sed -e 's/<[^>]*>//g'
rm -rf "$tmpdir"
Python approach:
python3 -c "
import zipfile
import tempfile
import os
with zipfile.ZipFile('document.docx', 'r') as z:
tmpdir = tempfile.mkdtemp()
z.extractall(tmpdir)
with open(os.path.join(tmpdir, 'word/document.xml')) as f:
print(f.read())
"
Confirm extraction worked:
# Check output has content
parse_docx document.docx | head -20
# Verify file was created (if saving to file)
ls -la output.txt
wc -l output.txt
| Environment | Recommended Method |
|---|---|
| Standard Linux with unzip | Shell (faster, simpler) |
| Container without unzip | Python zipfile |
| Sandboxed execution | Python via execute_code_sandbox or run_shell |
| Minimal/busybox images | Shell if unzip available |
| Unknown/restricted | Use unified parse_docx function |
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Incremental audio production with duration mismatch handling, adaptive stem extension, and pre-mix alignment verification
日本語の概要は準備中です。原文の説明を表示しています。
Incremental audio production with duration alignment handling, per-stem verification, and adaptive extension strategies
日本語の概要は準備中です。原文の説明を表示しています。
Create serverless API proxy endpoints that hide API keys and provide a unified backend for the dashboard frontend. Designed for Vercel deployment.
日本語の概要は準備中です。原文の説明を表示しています。
End-to-end audio production workflow with stems, effects, archiving, and verification
日本語の概要は準備中です。原文の説明を表示しています。
Handle cascading data retrieval tool failures by falling back to embedded knowledge generation
日本語の概要は準備中です。原文の説明を表示しています。
Fallback pattern for executing Python code when execute_code_sandbox fails
日本語の概要は準備中です。原文の説明を表示しています。